Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
 into dev_bug_fixs_2081
  • Loading branch information
codefairy08 committed Mar 29, 2019
2 parents 75916b1 + f2633fb commit 82e682f
Show file tree
Hide file tree
Showing 196 changed files with 2,910 additions and 7,791 deletions.
73 changes: 14 additions & 59 deletions pom.xml
Expand Up @@ -70,11 +70,9 @@
<opentracing.version>0.30.0</opentracing.version>

<lombok.version>1.16.4</lombok.version>

<aspectjweaver.version>1.8.9</aspectjweaver.version>

<springframework.version>[4.3.6.RELEASE,5.0.0.M1)</springframework.version>
<spring-boot.version>[1.5.0.RELEASE,2.0.0.M1)</spring-boot.version>
<hibernate.version>5.3.7.Final</hibernate.version>

<junit.version>4.12</junit.version>
<hamcrest.version>1.3</hamcrest.version>
Expand Down Expand Up @@ -224,6 +222,19 @@
<version>${opentracing.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${springframework.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring-boot.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
Expand Down Expand Up @@ -255,69 +266,13 @@
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectjweaver.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${springframework.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${springframework.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring-boot.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>${spring-boot.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>${spring-boot.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>${spring-boot.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
<scope>provided</scope>
<optional>true</optional>
<exclusions>
<exclusion>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>junit</groupId>
Expand Down
Expand Up @@ -89,4 +89,17 @@ public Optional<String> getAssistedQueryColumn(final String logicTableName, fina
}
return shardingEncryptorStrategies.get(logicTableName).getAssistedQueryColumn(columnName);
}

/**
* Get assisted query column count.
*
* @param logicTableName logic table name
* @return assisted query column count
*/
public Optional<Integer> getAssistedQueryColumnCount(final String logicTableName) {
if (!shardingEncryptorStrategies.containsKey(logicTableName)) {
return Optional.absent();
}
return Optional.of(shardingEncryptorStrategies.get(logicTableName).getAssistedQueryColumns().size());
}
}
Expand Up @@ -55,6 +55,18 @@ public TableMetaDataInitializer(final ShardingDataSourceMetaData shardingDataSou
tableMetaDataLoader = new TableMetaDataLoader(shardingDataSourceMetaData, executeEngine, connectionManager, maxConnectionsSizePerQuery, isCheckingMetaData);
}

/**
* Load table meta data.
*
* @param logicTableName logic table name
* @param shardingRule sharding rule
* @return table meta data
*/
@SneakyThrows
public TableMetaData load(final String logicTableName, final ShardingRule shardingRule) {
return tableMetaDataLoader.load(logicTableName, shardingRule);
}

/**
* Load all table meta data.
*
Expand Down Expand Up @@ -111,16 +123,4 @@ private String getCurrentSchemaName(final Connection connection) throws SQLExcep
return null;
}
}

/**
* Load table meta data.
*
* @param logicTableName logic table name
* @param shardingRule sharding rule
* @return table meta data
*/
@SneakyThrows
public TableMetaData load(final String logicTableName, final ShardingRule shardingRule) {
return tableMetaDataLoader.load(logicTableName, shardingRule);
}
}
Expand Up @@ -89,7 +89,7 @@ public void assertInsertStatementWithValuesWithPlaceHolderWithEncrypt() {
private InsertStatement createInsertStatementWithValuesWithPlaceHolderWithEncrypt() {
InsertStatement result = new InsertStatement();
result.getTables().add(new Table("t_encrypt", Optional.<String>absent()));
result.addSQLToken(new TableToken(12, 0, "t_encrypt", QuoteCharacter.NONE));
result.addSQLToken(new TableToken(12, "t_encrypt", QuoteCharacter.NONE, 0));
result.addSQLToken(new InsertValuesToken(34, DefaultKeyword.VALUES));
result.getColumns().add(new Column("col1", "t_encrypt"));
result.getColumns().add(new Column("col2", "t_encrypt"));
Expand Down Expand Up @@ -119,7 +119,7 @@ public void assertInsertStatementWithValuesWithoutPlaceHolderWithQueryEncrypt()
private InsertStatement createInsertStatementWithValuesWithoutPlaceHolderWithQueryEncrypt() {
InsertStatement result = new InsertStatement();
result.getTables().add(new Table("t_query_encrypt", Optional.<String>absent()));
result.addSQLToken(new TableToken(12, 0, "t_query_encrypt", QuoteCharacter.NONE));
result.addSQLToken(new TableToken(12, "t_query_encrypt", QuoteCharacter.NONE, 0));
result.addSQLToken(new InsertValuesToken(40, DefaultKeyword.VALUES));
result.getColumns().add(new Column("col1", "t_query_encrypt"));
result.getColumns().add(new Column("col2", "t_query_encrypt"));
Expand Down Expand Up @@ -147,7 +147,7 @@ public void assertInsertStatementWithSetWithoutPlaceHolderWithEncrypt() {
private InsertStatement createInsertStatementWithSetWithoutPlaceHolderWithEncrypt() {
InsertStatement result = new InsertStatement();
result.getTables().add(new Table("t_encrypt", Optional.<String>absent()));
result.addSQLToken(new TableToken(12, 0, "t_encrypt", QuoteCharacter.NONE));
result.addSQLToken(new TableToken(12, "t_encrypt", QuoteCharacter.NONE, 0));
result.addSQLToken(new InsertValuesToken(34, DefaultKeyword.SET));
result.getColumns().add(new Column("col1", "t_encrypt"));
result.getColumns().add(new Column("col2", "t_encrypt"));
Expand Down Expand Up @@ -177,7 +177,7 @@ public void assertInsertStatementWithSetWithPlaceHolderWithQueryEncrypt() {
private InsertStatement createInsertStatementWithSetWithPlaceHolderWithQueryEncrypt() {
InsertStatement result = new InsertStatement();
result.getTables().add(new Table("t_query_encrypt", Optional.<String>absent()));
result.addSQLToken(new TableToken(12, 0, "t_query_encrypt", QuoteCharacter.NONE));
result.addSQLToken(new TableToken(12, "t_query_encrypt", QuoteCharacter.NONE, 0));
result.addSQLToken(new InsertValuesToken(40, DefaultKeyword.SET));
result.getColumns().add(new Column("col1", "t_query_encrypt"));
result.getColumns().add(new Column("col2", "t_query_encrypt"));
Expand Down
Expand Up @@ -117,7 +117,7 @@ private void initializeWithValuesWithPlaceHolder() {
insertStatementWithValuesWithPlaceHolder.getTables().add(new Table("t_order", Optional.<String>absent()));
insertStatementWithValuesWithPlaceHolder.setParametersIndex(4);
insertStatementWithValuesWithPlaceHolder.setInsertValuesListLastIndex(45);
insertStatementWithValuesWithPlaceHolder.addSQLToken(new TableToken(12, 0, "t_order", QuoteCharacter.NONE));
insertStatementWithValuesWithPlaceHolder.addSQLToken(new TableToken(12, "t_order", QuoteCharacter.NONE, 0));
insertStatementWithValuesWithPlaceHolder.addSQLToken(new InsertValuesToken(39, DefaultKeyword.VALUES));
AndCondition andCondition1 = new AndCondition();
andCondition1.getConditions().add(new Condition(new Column("user_id", "t_order"), new SQLPlaceholderExpression(0)));
Expand All @@ -139,7 +139,7 @@ private void initializeWithValuesWithPlaceHolderWithEncrypt() {
insertStatementWithValuesWithPlaceHolderWithEncrypt.getTables().add(new Table("t_encrypt", Optional.<String>absent()));
insertStatementWithValuesWithPlaceHolderWithEncrypt.setParametersIndex(4);
insertStatementWithValuesWithPlaceHolderWithEncrypt.setInsertValuesListLastIndex(45);
insertStatementWithValuesWithPlaceHolderWithEncrypt.addSQLToken(new TableToken(12, 0, "t_encrypt", QuoteCharacter.NONE));
insertStatementWithValuesWithPlaceHolderWithEncrypt.addSQLToken(new TableToken(12, "t_encrypt", QuoteCharacter.NONE, 0));
insertStatementWithValuesWithPlaceHolderWithEncrypt.addSQLToken(new InsertValuesToken(39, DefaultKeyword.VALUES));
AndCondition andCondition1 = new AndCondition();
andCondition1.getConditions().add(new Condition(new Column("user_id", "t_encrypt"), new SQLPlaceholderExpression(0)));
Expand All @@ -161,7 +161,7 @@ private void initializeInsertWithValuesWithoutPlaceHolder() {
insertStatementWithValuesWithoutPlaceHolder.getTables().add(new Table("t_order", Optional.<String>absent()));
insertStatementWithValuesWithoutPlaceHolder.setParametersIndex(0);
insertStatementWithValuesWithoutPlaceHolder.setInsertValuesListLastIndex(50);
insertStatementWithValuesWithoutPlaceHolder.addSQLToken(new TableToken(12, 0, "t_order", QuoteCharacter.NONE));
insertStatementWithValuesWithoutPlaceHolder.addSQLToken(new TableToken(12, "t_order", QuoteCharacter.NONE, 0));
insertStatementWithValuesWithoutPlaceHolder.addSQLToken(new InsertValuesToken(42, DefaultKeyword.VALUES));
ItemsToken itemsToken = new ItemsToken(34);
itemsToken.getItems().add("order_id");
Expand All @@ -176,7 +176,7 @@ private void initializeInsertWithValuesWithoutPlaceHolderWithQueryEncrypt() {
insertStatementWithValuesWithoutPlaceHolderWithQueryEncrypt.getTables().add(new Table("t_encrypt_query", Optional.<String>absent()));
insertStatementWithValuesWithoutPlaceHolderWithQueryEncrypt.setParametersIndex(0);
insertStatementWithValuesWithoutPlaceHolderWithQueryEncrypt.setInsertValuesListLastIndex(50);
insertStatementWithValuesWithoutPlaceHolderWithQueryEncrypt.addSQLToken(new TableToken(12, 0, "t_encrypt_query", QuoteCharacter.NONE));
insertStatementWithValuesWithoutPlaceHolderWithQueryEncrypt.addSQLToken(new TableToken(12, "t_encrypt_query", QuoteCharacter.NONE, 0));
insertStatementWithValuesWithoutPlaceHolderWithQueryEncrypt.addSQLToken(new InsertValuesToken(42, DefaultKeyword.VALUES));
ItemsToken itemsToken = new ItemsToken(34);
itemsToken.getItems().add("order_id");
Expand All @@ -191,7 +191,7 @@ private void initializeInsertWithoutValuesWithPlaceHolder() {
insertStatementWithoutValuesWithPlaceHolder.getTables().add(new Table("t_order", Optional.<String>absent()));
insertStatementWithoutValuesWithPlaceHolder.setParametersIndex(0);
insertStatementWithoutValuesWithPlaceHolder.setInsertValuesListLastIndex(47);
insertStatementWithoutValuesWithPlaceHolder.addSQLToken(new TableToken(12, 0, "t_order", QuoteCharacter.NONE));
insertStatementWithoutValuesWithPlaceHolder.addSQLToken(new TableToken(12, "t_order", QuoteCharacter.NONE, 0));
insertStatementWithoutValuesWithPlaceHolder.addSQLToken(new InsertValuesToken(24, DefaultKeyword.SET));
insertStatementWithoutValuesWithPlaceHolder.getColumns().add(new Column("user_id", "t_order"));
insertStatementWithoutValuesWithPlaceHolder.getColumns().add(new Column("status", "t_order"));
Expand All @@ -205,7 +205,7 @@ private void initializeInsertWithoutValuesWithPlaceHolderWithQueryEncrypt() {
insertStatementWithoutValuesWithPlaceHolderWithQueryEncrypt.getTables().add(new Table("t_encrypt_query", Optional.<String>absent()));
insertStatementWithoutValuesWithPlaceHolderWithQueryEncrypt.setParametersIndex(0);
insertStatementWithoutValuesWithPlaceHolderWithQueryEncrypt.setInsertValuesListLastIndex(47);
insertStatementWithoutValuesWithPlaceHolderWithQueryEncrypt.addSQLToken(new TableToken(12, 0, "t_encrypt_query", QuoteCharacter.NONE));
insertStatementWithoutValuesWithPlaceHolderWithQueryEncrypt.addSQLToken(new TableToken(12, "t_encrypt_query", QuoteCharacter.NONE, 0));
insertStatementWithoutValuesWithPlaceHolderWithQueryEncrypt.addSQLToken(new InsertValuesToken(24, DefaultKeyword.SET));
insertStatementWithoutValuesWithPlaceHolderWithQueryEncrypt.getColumns().add(new Column("user_id", "t_encrypt_query"));
insertStatementWithoutValuesWithPlaceHolderWithQueryEncrypt.getColumns().add(new Column("status", "t_encrypt_query"));
Expand All @@ -219,7 +219,7 @@ private void initializeInsertWithoutValuesWithoutPlaceHolder() {
insertStatementWithoutValuesWithoutPlaceHolder.getTables().add(new Table("t_order", Optional.<String>absent()));
insertStatementWithoutValuesWithoutPlaceHolder.setParametersIndex(0);
insertStatementWithoutValuesWithoutPlaceHolder.setInsertValuesListLastIndex(50);
insertStatementWithoutValuesWithoutPlaceHolder.addSQLToken(new TableToken(12, 0, "t_order", QuoteCharacter.NONE));
insertStatementWithoutValuesWithoutPlaceHolder.addSQLToken(new TableToken(12, "t_order", QuoteCharacter.NONE, 0));
insertStatementWithoutValuesWithoutPlaceHolder.addSQLToken(new InsertValuesToken(24, DefaultKeyword.SET));
insertStatementWithoutValuesWithoutPlaceHolder.getColumns().add(new Column("user_id", "t_order"));
insertStatementWithoutValuesWithoutPlaceHolder.getColumns().add(new Column("status", "t_order"));
Expand All @@ -233,7 +233,7 @@ private void initializeInsertWithoutValuesWithoutPlaceHolderWithEncrypt() {
insertStatementWithoutValuesWithoutPlaceHolderWithEncrypt.getTables().add(new Table("t_encrypt", Optional.<String>absent()));
insertStatementWithoutValuesWithoutPlaceHolderWithEncrypt.setParametersIndex(0);
insertStatementWithoutValuesWithoutPlaceHolderWithEncrypt.setInsertValuesListLastIndex(50);
insertStatementWithoutValuesWithoutPlaceHolderWithEncrypt.addSQLToken(new TableToken(12, 0, "t_encrypt", QuoteCharacter.NONE));
insertStatementWithoutValuesWithoutPlaceHolderWithEncrypt.addSQLToken(new TableToken(12, "t_encrypt", QuoteCharacter.NONE, 0));
insertStatementWithoutValuesWithoutPlaceHolderWithEncrypt.addSQLToken(new InsertValuesToken(24, DefaultKeyword.SET));
insertStatementWithoutValuesWithoutPlaceHolderWithEncrypt.getColumns().add(new Column("user_id", "t_encrypt"));
insertStatementWithoutValuesWithoutPlaceHolderWithEncrypt.getColumns().add(new Column("status", "t_encrypt"));
Expand Down
Expand Up @@ -48,28 +48,26 @@ public Optional<TableSegment> extract(final ParserRuleContext ancestorNode) {
String nodeText = tableNameNode.get().getText();
String tableName;
Optional<String> schemaName;
int skippedSchemaNameLength;
int schemaNameLength;
if (nodeText.contains(Symbol.DOT.getLiterals())) {
List<String> nodeTextSegments = Splitter.on(Symbol.DOT.getLiterals()).splitToList(nodeText);
tableName = nodeTextSegments.get(nodeTextSegments.size() - 1);
schemaName = Optional.of(nodeTextSegments.get(nodeTextSegments.size() - 2));
skippedSchemaNameLength = nodeText.lastIndexOf(Symbol.DOT.getLiterals()) + 1;
schemaNameLength = nodeText.lastIndexOf(Symbol.DOT.getLiterals()) + 1;
} else {
tableName = nodeText;
schemaName = Optional.absent();
skippedSchemaNameLength = 0;
schemaNameLength = 0;
}
TableToken token = new TableToken(tableNameNode.get().getStart().getStartIndex(), skippedSchemaNameLength, SQLUtil.getExactlyValue(tableName), QuoteCharacter.getQuoteCharacter(tableName));
TableSegment result = new TableSegment(token, schemaName.orNull());
setAlias(tableNameNode.get(), result);
return Optional.of(result);
return Optional.of(new TableSegment(getTableToken(tableNameNode.get(), tableName, schemaNameLength), schemaName.orNull(), getTableAlias(tableNameNode.get()).orNull()));
}

private void setAlias(final ParserRuleContext tableNameNode, final TableSegment tableSegment) {
private TableToken getTableToken(final ParserRuleContext tableNameNode, final String tableName, final int schemaNameLength) {
return new TableToken(tableNameNode.getStart().getStartIndex(), SQLUtil.getExactlyValue(tableName), QuoteCharacter.getQuoteCharacter(tableName), schemaNameLength);
}

private Optional<String> getTableAlias(final ParserRuleContext tableNameNode) {
Optional<ParserRuleContext> aliasNode = ExtractorUtils.findFirstChildNode(tableNameNode.getParent(), RuleName.ALIAS);
if (aliasNode.isPresent()) {
tableSegment.setAlias(aliasNode.get().getText());
tableSegment.setAliasStartIndex(aliasNode.get().getStart().getStartIndex());
}
return aliasNode.isPresent() ? Optional.of(aliasNode.get().getText()) : Optional.<String>absent();
}
}
Expand Up @@ -35,7 +35,10 @@ public final class IndexNameExtractor implements OptionalSQLSegmentExtractor {
@Override
public Optional<IndexSegment> extract(final ParserRuleContext ancestorNode) {
Optional<ParserRuleContext> indexNameNode = ExtractorUtils.findFirstChildNode(ancestorNode, RuleName.INDEX_NAME);
return indexNameNode.isPresent() ? Optional.of(new IndexSegment(new IndexToken(indexNameNode.get().getStop().getStartIndex(), indexNameNode.get().getStop().getStopIndex())))
: Optional.<IndexSegment>absent();
return indexNameNode.isPresent() ? Optional.of(new IndexSegment(getIndexToken(indexNameNode.get()))) : Optional.<IndexSegment>absent();
}

private IndexToken getIndexToken(final ParserRuleContext indexNameNode) {
return new IndexToken(indexNameNode.getStop().getStartIndex(), indexNameNode.getStop().getStopIndex());
}
}

0 comments on commit 82e682f

Please sign in to comment.