Loading sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/metadata/table/ShardingTableMetaData.java +1 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ public final class ShardingTableMetaData { * Get all column names via table. * * @param tableName table name * @return column names. * @return column names */ public Collection<String> getAllColumnNames(final String tableName) { return tables.containsKey(tableName) ? tables.get(tableName).getColumns().keySet() : Collections.<String>emptyList(); Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/filler/encrypt/dml/EncryptOrConditionFiller.java +2 −34 Original line number Diff line number Diff line Loading @@ -30,15 +30,11 @@ import org.apache.shardingsphere.core.parse.antlr.sql.statement.dml.SelectStatem import org.apache.shardingsphere.core.parse.antlr.sql.token.EncryptColumnToken; import org.apache.shardingsphere.core.parse.old.parser.context.condition.AndCondition; import org.apache.shardingsphere.core.parse.old.parser.context.condition.Column; import org.apache.shardingsphere.core.parse.old.parser.context.condition.OrCondition; import org.apache.shardingsphere.core.parse.old.parser.context.table.Table; import org.apache.shardingsphere.core.parse.old.parser.context.table.Tables; import org.apache.shardingsphere.core.rule.EncryptRule; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; /** Loading @@ -47,7 +43,7 @@ import java.util.Set; * @author duhongjun */ @RequiredArgsConstructor public class EncryptOrConditionFiller implements SQLSegmentFiller<OrPredicateSegment> { public final class EncryptOrConditionFiller implements SQLSegmentFiller<OrPredicateSegment> { private final EncryptRule encryptRule; Loading @@ -55,35 +51,8 @@ public class EncryptOrConditionFiller implements SQLSegmentFiller<OrPredicateSeg @Override public void fill(final OrPredicateSegment sqlSegment, final SQLStatement sqlStatement) { Map<String, String> columnNameToTable = new HashMap<>(); Map<String, Integer> columnNameCount = new HashMap<>(); fillColumnTableMap(sqlStatement, columnNameToTable, columnNameCount); filterPredicate(sqlStatement, sqlSegment); } private void fillColumnTableMap(final SQLStatement sqlStatement, final Map<String, String> columnNameToTable, final Map<String, Integer> columnNameCount) { if (null == shardingTableMetaData) { return; } for (String each : sqlStatement.getTables().getTableNames()) { Collection<String> tableColumns = shardingTableMetaData.getAllColumnNames(each); for (String columnName : tableColumns) { columnNameToTable.put(columnName, each); Integer count = columnNameCount.get(columnName); if (null == count) { count = 1; } else { count++; } columnNameCount.put(columnName, count); } } } private OrCondition filterPredicate(final SQLStatement sqlStatement, final OrPredicateSegment orPredicate) { OrCondition result = new OrCondition(); Set<Integer> filledConditionStopIndexes = new HashSet<>(); for (AndPredicateSegment each : orPredicate.getAndPredicates()) { for (AndPredicateSegment each : sqlSegment.getAndPredicates()) { for (PredicateSegment predicate : each.getPredicates()) { if (null == predicate.getColumn()) { continue; Loading @@ -97,7 +66,6 @@ public class EncryptOrConditionFiller implements SQLSegmentFiller<OrPredicateSeg fillEncryptCondition(column, predicate, sqlStatement); } } return result; } private void fillEncryptCondition(final Column column, final PredicateSegment predicate, final SQLStatement sqlStatement) { Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/filler/sharding/dml/ShardingOrConditionFiller.java +2 −31 Original line number Diff line number Diff line Loading @@ -40,11 +40,9 @@ import org.apache.shardingsphere.core.parse.old.parser.context.table.Tables; import org.apache.shardingsphere.core.rule.ShardingRule; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; /** Loading Loading @@ -75,35 +73,8 @@ public final class ShardingOrConditionFiller implements SQLSegmentFiller<OrPredi * @return or condition */ public OrCondition buildCondition(final OrPredicateSegment sqlSegment, final SQLStatement sqlStatement, final ShardingRule shardingRule, final ShardingTableMetaData shardingTableMetaData) { Map<String, String> columnNameToTable = new HashMap<>(); Map<String, Integer> columnNameCount = new HashMap<>(); fillColumnTableMap(sqlStatement, shardingTableMetaData, columnNameToTable, columnNameCount); return filterCondition(shardingTableMetaData, sqlStatement, sqlSegment, shardingRule); } private void fillColumnTableMap(final SQLStatement sqlStatement, final ShardingTableMetaData shardingTableMetaData, final Map<String, String> columnNameToTable, final Map<String, Integer> columnNameCount) { if (null == shardingTableMetaData) { return; } for (String each : sqlStatement.getTables().getTableNames()) { Collection<String> tableColumns = shardingTableMetaData.getAllColumnNames(each); for (String columnName : tableColumns) { columnNameToTable.put(columnName, each); Integer count = columnNameCount.get(columnName); if (null == count) { count = 1; } else { count++; } columnNameCount.put(columnName, count); } } } private OrCondition filterCondition(final ShardingTableMetaData shardingTableMetaData, final SQLStatement sqlStatement, final OrPredicateSegment orPredicate, final ShardingRule shardingRule) { OrCondition result = new OrCondition(); for (AndPredicateSegment each : orPredicate.getAndPredicates()) { for (AndPredicateSegment each : sqlSegment.getAndPredicates()) { List<PredicateSegment> predicates = new LinkedList<>(); boolean needSharding = false; for (PredicateSegment predicate : each.getPredicates()) { Loading @@ -130,7 +101,7 @@ public final class ShardingOrConditionFiller implements SQLSegmentFiller<OrPredi } } Set<Integer> filledConditionStopIndexes = new HashSet<>(); for (AndPredicateSegment each : orPredicate.getAndPredicates()) { for (AndPredicateSegment each : sqlSegment.getAndPredicates()) { for (PredicateSegment predicate : each.getPredicates()) { if (null == predicate.getColumn()) { continue; Loading Loading
sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/metadata/table/ShardingTableMetaData.java +1 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ public final class ShardingTableMetaData { * Get all column names via table. * * @param tableName table name * @return column names. * @return column names */ public Collection<String> getAllColumnNames(final String tableName) { return tables.containsKey(tableName) ? tables.get(tableName).getColumns().keySet() : Collections.<String>emptyList(); Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/filler/encrypt/dml/EncryptOrConditionFiller.java +2 −34 Original line number Diff line number Diff line Loading @@ -30,15 +30,11 @@ import org.apache.shardingsphere.core.parse.antlr.sql.statement.dml.SelectStatem import org.apache.shardingsphere.core.parse.antlr.sql.token.EncryptColumnToken; import org.apache.shardingsphere.core.parse.old.parser.context.condition.AndCondition; import org.apache.shardingsphere.core.parse.old.parser.context.condition.Column; import org.apache.shardingsphere.core.parse.old.parser.context.condition.OrCondition; import org.apache.shardingsphere.core.parse.old.parser.context.table.Table; import org.apache.shardingsphere.core.parse.old.parser.context.table.Tables; import org.apache.shardingsphere.core.rule.EncryptRule; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; /** Loading @@ -47,7 +43,7 @@ import java.util.Set; * @author duhongjun */ @RequiredArgsConstructor public class EncryptOrConditionFiller implements SQLSegmentFiller<OrPredicateSegment> { public final class EncryptOrConditionFiller implements SQLSegmentFiller<OrPredicateSegment> { private final EncryptRule encryptRule; Loading @@ -55,35 +51,8 @@ public class EncryptOrConditionFiller implements SQLSegmentFiller<OrPredicateSeg @Override public void fill(final OrPredicateSegment sqlSegment, final SQLStatement sqlStatement) { Map<String, String> columnNameToTable = new HashMap<>(); Map<String, Integer> columnNameCount = new HashMap<>(); fillColumnTableMap(sqlStatement, columnNameToTable, columnNameCount); filterPredicate(sqlStatement, sqlSegment); } private void fillColumnTableMap(final SQLStatement sqlStatement, final Map<String, String> columnNameToTable, final Map<String, Integer> columnNameCount) { if (null == shardingTableMetaData) { return; } for (String each : sqlStatement.getTables().getTableNames()) { Collection<String> tableColumns = shardingTableMetaData.getAllColumnNames(each); for (String columnName : tableColumns) { columnNameToTable.put(columnName, each); Integer count = columnNameCount.get(columnName); if (null == count) { count = 1; } else { count++; } columnNameCount.put(columnName, count); } } } private OrCondition filterPredicate(final SQLStatement sqlStatement, final OrPredicateSegment orPredicate) { OrCondition result = new OrCondition(); Set<Integer> filledConditionStopIndexes = new HashSet<>(); for (AndPredicateSegment each : orPredicate.getAndPredicates()) { for (AndPredicateSegment each : sqlSegment.getAndPredicates()) { for (PredicateSegment predicate : each.getPredicates()) { if (null == predicate.getColumn()) { continue; Loading @@ -97,7 +66,6 @@ public class EncryptOrConditionFiller implements SQLSegmentFiller<OrPredicateSeg fillEncryptCondition(column, predicate, sqlStatement); } } return result; } private void fillEncryptCondition(final Column column, final PredicateSegment predicate, final SQLStatement sqlStatement) { Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/filler/sharding/dml/ShardingOrConditionFiller.java +2 −31 Original line number Diff line number Diff line Loading @@ -40,11 +40,9 @@ import org.apache.shardingsphere.core.parse.old.parser.context.table.Tables; import org.apache.shardingsphere.core.rule.ShardingRule; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; /** Loading Loading @@ -75,35 +73,8 @@ public final class ShardingOrConditionFiller implements SQLSegmentFiller<OrPredi * @return or condition */ public OrCondition buildCondition(final OrPredicateSegment sqlSegment, final SQLStatement sqlStatement, final ShardingRule shardingRule, final ShardingTableMetaData shardingTableMetaData) { Map<String, String> columnNameToTable = new HashMap<>(); Map<String, Integer> columnNameCount = new HashMap<>(); fillColumnTableMap(sqlStatement, shardingTableMetaData, columnNameToTable, columnNameCount); return filterCondition(shardingTableMetaData, sqlStatement, sqlSegment, shardingRule); } private void fillColumnTableMap(final SQLStatement sqlStatement, final ShardingTableMetaData shardingTableMetaData, final Map<String, String> columnNameToTable, final Map<String, Integer> columnNameCount) { if (null == shardingTableMetaData) { return; } for (String each : sqlStatement.getTables().getTableNames()) { Collection<String> tableColumns = shardingTableMetaData.getAllColumnNames(each); for (String columnName : tableColumns) { columnNameToTable.put(columnName, each); Integer count = columnNameCount.get(columnName); if (null == count) { count = 1; } else { count++; } columnNameCount.put(columnName, count); } } } private OrCondition filterCondition(final ShardingTableMetaData shardingTableMetaData, final SQLStatement sqlStatement, final OrPredicateSegment orPredicate, final ShardingRule shardingRule) { OrCondition result = new OrCondition(); for (AndPredicateSegment each : orPredicate.getAndPredicates()) { for (AndPredicateSegment each : sqlSegment.getAndPredicates()) { List<PredicateSegment> predicates = new LinkedList<>(); boolean needSharding = false; for (PredicateSegment predicate : each.getPredicates()) { Loading @@ -130,7 +101,7 @@ public final class ShardingOrConditionFiller implements SQLSegmentFiller<OrPredi } } Set<Integer> filledConditionStopIndexes = new HashSet<>(); for (AndPredicateSegment each : orPredicate.getAndPredicates()) { for (AndPredicateSegment each : sqlSegment.getAndPredicates()) { for (PredicateSegment predicate : each.getPredicates()) { if (null == predicate.getColumn()) { continue; Loading