This is an automated email from the ASF dual-hosted git repository.
zhaojinchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 07971527941 Pass inheritedTables into SelectStatementContext to
support subquery find table metadata by column (#31626)
07971527941 is described below
commit 07971527941ef0f050ddf5aad3227c526d605bdc
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Tue Jun 11 11:48:52 2024 +0800
Pass inheritedTables into SelectStatementContext to support subquery find
table metadata by column (#31626)
* Pass inheritedTables into SelectStatementContext to support subquery find
table metadata by column
* fix unit test
* fix unit test
---
.../merge/ShardingResultMergerEngineTest.java | 2 +-
.../common/IteratorStreamMergedResultTest.java | 2 +-
.../merge/ddl/ShardingDDLResultMergerTest.java | 2 +-
.../merge/dql/ShardingDQLResultMergerTest.java | 45 ++++++++++++----------
.../dql/groupby/GroupByMemoryMergedResultTest.java | 4 +-
.../dql/groupby/GroupByRowComparatorTest.java | 12 +++---
.../dql/groupby/GroupByStreamMergedResultTest.java | 2 +-
.../dql/orderby/OrderByStreamMergedResultTest.java | 2 +-
.../merge/dql/orderby/OrderByValueTest.java | 6 +--
.../pagination/LimitDecoratorMergedResultTest.java | 9 +++--
.../RowNumberDecoratorMergedResultTest.java | 8 ++--
.../TopAndRowNumberDecoratorMergedResultTest.java | 14 ++++---
.../ShardingRemoveTokenGeneratorTest.java | 2 +-
.../context/segment/table/TablesContext.java | 1 -
.../statement/SQLStatementContextFactory.java | 29 +++++++-------
.../statement/ddl/CursorStatementContext.java | 3 +-
.../statement/dml/InsertStatementContext.java | 2 +-
.../statement/dml/SelectStatementContext.java | 37 ++++++++++++++----
.../select/pagination/PaginationContextTest.java | 4 +-
.../engine/ProjectionsContextEngineTest.java | 2 +-
.../statement/dml/SelectStatementContextTest.java | 35 ++++++++++-------
.../metadata/generator/PipelineDDLGenerator.java | 2 +-
.../traffic/rule/TrafficRuleTest.java | 2 +-
.../sql/common/extractor/TableExtractor.java | 20 +++-------
.../backend/connector/ProxySQLExecutorTest.java | 2 +-
...enGaussSystemCatalogAdminQueryExecutorTest.java | 8 ++--
.../prepare/MySQLComStmtPrepareExecutorTest.java | 1 +
.../atomic/storage/impl/MySQLContainer.java | 2 +-
.../test/e2e/cases/dataset/row/DataSetRow.java | 5 ++-
29 files changed, 150 insertions(+), 115 deletions(-)
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
index 569f877957f..39ab5826964 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
@@ -93,7 +93,7 @@ class ShardingResultMergerEngineTest {
when(database.getSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(mock(ShardingSphereSchema.class));
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext sqlStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
- Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME);
+ Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME, Collections.emptyList());
assertThat(new
ShardingResultMergerEngine().newInstance(DefaultDatabase.LOGIC_NAME,
TypedSPILoader.getService(DatabaseType.class, "MySQL"), null, props,
sqlStatementContext),
instanceOf(ShardingDQLResultMerger.class));
}
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/common/IteratorStreamMergedResultTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/common/IteratorStreamMergedResultTest.java
index dec8f5523c7..782a3d6f45e 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/common/IteratorStreamMergedResultTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/common/IteratorStreamMergedResultTest.java
@@ -60,7 +60,7 @@ class IteratorStreamMergedResultTest {
void setUp() {
MySQLSelectStatement selectStatement = new MySQLSelectStatement();
selectStatement.setProjections(new ProjectionsSegment(0, 0));
- selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(), Collections.emptyList(),
selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(), Collections.emptyList(),
selectStatement, DefaultDatabase.LOGIC_NAME, Collections.emptyList());
}
private ShardingSphereMetaData createShardingSphereMetaData() {
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/ddl/ShardingDDLResultMergerTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/ddl/ShardingDDLResultMergerTest.java
index 223429de7e5..06ee983fd69 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/ddl/ShardingDDLResultMergerTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/ddl/ShardingDDLResultMergerTest.java
@@ -94,7 +94,7 @@ class ShardingDDLResultMergerTest {
SelectStatement selectStatement = createSelectStatement();
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
when(result.getSelectStatementContext()).thenReturn(selectStatementContext);
when(result.getSqlStatement().getSelect()).thenReturn(selectStatement);
return result;
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/ShardingDQLResultMergerTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/ShardingDQLResultMergerTest.java
index 5b19ea85923..c6c0870c643 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/ShardingDQLResultMergerTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/ShardingDQLResultMergerTest.java
@@ -88,7 +88,7 @@ class ShardingDQLResultMergerTest {
SelectStatement selectStatement = buildSelectStatement(new
MySQLSelectStatement());
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
assertThat(resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class)),
instanceOf(IteratorStreamMergedResult.class));
}
@@ -100,7 +100,8 @@ class ShardingDQLResultMergerTest {
MySQLSelectStatement selectStatement = (MySQLSelectStatement)
buildSelectStatement(new MySQLSelectStatement());
selectStatement.setProjections(new ProjectionsSegment(0, 0));
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralLimitValueSegment(0, 0, 1L), null));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
assertThat(resultMerger.merge(Collections.singletonList(createQueryResult()),
selectStatementContext, createDatabase(), mock(ConnectionContext.class)),
instanceOf(IteratorStreamMergedResult.class));
}
@@ -113,7 +114,8 @@ class ShardingDQLResultMergerTest {
MySQLSelectStatement selectStatement = (MySQLSelectStatement)
buildSelectStatement(new MySQLSelectStatement());
selectStatement.setProjections(new ProjectionsSegment(0, 0));
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralLimitValueSegment(0, 0, 1L), null));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class));
assertThat(actual, instanceOf(LimitDecoratorMergedResult.class));
assertThat(((LimitDecoratorMergedResult) actual).getMergedResult(),
instanceOf(IteratorStreamMergedResult.class));
@@ -143,7 +145,7 @@ class ShardingDQLResultMergerTest {
when(subqueryTableSegment.getSubquery()).thenReturn(subquerySegment);
selectStatement.setFrom(subqueryTableSegment);
selectStatement.setWhere(whereSegment);
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
selectStatement, DefaultDatabase.LOGIC_NAME, Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class));
assertThat(actual, instanceOf(RowNumberDecoratorMergedResult.class));
assertThat(((RowNumberDecoratorMergedResult)
actual).getMergedResult(), instanceOf(IteratorStreamMergedResult.class));
@@ -157,7 +159,8 @@ class ShardingDQLResultMergerTest {
SQLServerSelectStatement selectStatement = (SQLServerSelectStatement)
buildSelectStatement(new SQLServerSelectStatement());
selectStatement.setProjections(new ProjectionsSegment(0, 0));
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralLimitValueSegment(0, 0, 1L), null));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createSQLServerDatabase(),
mock(ConnectionContext.class));
assertThat(actual,
instanceOf(TopAndRowNumberDecoratorMergedResult.class));
assertThat(((TopAndRowNumberDecoratorMergedResult)
actual).getMergedResult(), instanceOf(IteratorStreamMergedResult.class));
@@ -172,7 +175,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setOrderBy(new OrderBySegment(0, 0,
Collections.singletonList(new IndexOrderByItemSegment(0, 0, 1,
OrderDirection.DESC, NullsOrderType.FIRST))));
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
assertThat(resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class)),
instanceOf(OrderByStreamMergedResult.class));
}
@@ -186,7 +189,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setProjections(new ProjectionsSegment(0, 0));
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralLimitValueSegment(0, 0, 1L), null));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class));
assertThat(actual, instanceOf(LimitDecoratorMergedResult.class));
assertThat(((LimitDecoratorMergedResult) actual).getMergedResult(),
instanceOf(OrderByStreamMergedResult.class));
@@ -218,7 +221,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setFrom(subqueryTableSegment);
selectStatement.setWhere(whereSegment);
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class));
assertThat(actual, instanceOf(RowNumberDecoratorMergedResult.class));
assertThat(((RowNumberDecoratorMergedResult)
actual).getMergedResult(), instanceOf(OrderByStreamMergedResult.class));
@@ -234,7 +237,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setProjections(new ProjectionsSegment(0, 0));
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralRowNumberValueSegment(0, 0, 1L, true), null));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createSQLServerDatabase(),
mock(ConnectionContext.class));
assertThat(actual,
instanceOf(TopAndRowNumberDecoratorMergedResult.class));
assertThat(((TopAndRowNumberDecoratorMergedResult)
actual).getMergedResult(), instanceOf(OrderByStreamMergedResult.class));
@@ -250,7 +253,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setOrderBy(new OrderBySegment(0, 0,
Collections.singletonList(new IndexOrderByItemSegment(0, 0, 1,
OrderDirection.DESC, NullsOrderType.FIRST))));
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
assertThat(resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class)),
instanceOf(GroupByStreamMergedResult.class));
}
@@ -265,7 +268,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setProjections(new ProjectionsSegment(0, 0));
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralLimitValueSegment(0, 0, 1L), null));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class));
assertThat(actual, instanceOf(LimitDecoratorMergedResult.class));
assertThat(((LimitDecoratorMergedResult) actual).getMergedResult(),
instanceOf(GroupByStreamMergedResult.class));
@@ -298,7 +301,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setFrom(subqueryTableSegment);
selectStatement.setWhere(whereSegment);
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class));
assertThat(actual, instanceOf(RowNumberDecoratorMergedResult.class));
assertThat(((RowNumberDecoratorMergedResult)
actual).getMergedResult(), instanceOf(GroupByStreamMergedResult.class));
@@ -315,7 +318,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setProjections(new ProjectionsSegment(0, 0));
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralRowNumberValueSegment(0, 0, 1L, true), null));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createSQLServerDatabase(),
mock(ConnectionContext.class));
assertThat(actual,
instanceOf(TopAndRowNumberDecoratorMergedResult.class));
assertThat(((TopAndRowNumberDecoratorMergedResult)
actual).getMergedResult(), instanceOf(GroupByStreamMergedResult.class));
@@ -330,7 +333,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setGroupBy(new GroupBySegment(0, 0,
Collections.singletonList(new IndexOrderByItemSegment(0, 0, 1,
OrderDirection.DESC, NullsOrderType.FIRST))));
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
assertThat(resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class)),
instanceOf(GroupByStreamMergedResult.class));
}
@@ -344,7 +347,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setProjections(new ProjectionsSegment(0, 0));
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralLimitValueSegment(0, 0, 1L), null));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class));
assertThat(actual, instanceOf(LimitDecoratorMergedResult.class));
assertThat(((LimitDecoratorMergedResult) actual).getMergedResult(),
instanceOf(GroupByStreamMergedResult.class));
@@ -376,7 +379,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setProjections(new ProjectionsSegment(0, 0));
selectStatement.setFrom(subqueryTableSegment);
selectStatement.setWhere(whereSegment);
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
selectStatement, DefaultDatabase.LOGIC_NAME, Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class));
assertThat(actual, instanceOf(RowNumberDecoratorMergedResult.class));
assertThat(((RowNumberDecoratorMergedResult)
actual).getMergedResult(), instanceOf(GroupByStreamMergedResult.class));
@@ -394,7 +397,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setOrderBy(new OrderBySegment(0, 0,
Collections.singletonList(new IndexOrderByItemSegment(0, 0, 1,
OrderDirection.ASC, NullsOrderType.FIRST))));
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralRowNumberValueSegment(0, 0, 1L, true), null));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createSQLServerDatabase(),
mock(ConnectionContext.class));
assertThat(actual,
instanceOf(TopAndRowNumberDecoratorMergedResult.class));
assertThat(((TopAndRowNumberDecoratorMergedResult)
actual).getMergedResult(), instanceOf(GroupByMemoryMergedResult.class));
@@ -410,7 +413,7 @@ class ShardingDQLResultMergerTest {
projectionsSegment.getProjections().add(new
AggregationProjectionSegment(0, 0, AggregationType.COUNT, "COUNT(*)"));
selectStatement.setProjections(projectionsSegment);
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
assertThat(resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class)),
instanceOf(GroupByMemoryMergedResult.class));
}
@@ -424,7 +427,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setProjections(projectionsSegment);
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralLimitValueSegment(0, 0, 1L), null));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, "MySQL");
ShardingDQLResultMerger resultMerger = new
ShardingDQLResultMerger(databaseType);
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class));
@@ -459,7 +462,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setFrom(subqueryTableSegment);
selectStatement.setWhere(whereSegment);
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createDatabase(), mock(ConnectionContext.class));
assertThat(actual, instanceOf(RowNumberDecoratorMergedResult.class));
assertThat(((RowNumberDecoratorMergedResult)
actual).getMergedResult(), instanceOf(GroupByMemoryMergedResult.class));
@@ -476,7 +479,7 @@ class ShardingDQLResultMergerTest {
selectStatement.setProjections(projectionsSegment);
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralRowNumberValueSegment(0, 0, 1L, true), null));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual = resultMerger.merge(createQueryResults(),
selectStatementContext, createSQLServerDatabase(),
mock(ConnectionContext.class));
assertThat(actual,
instanceOf(TopAndRowNumberDecoratorMergedResult.class));
assertThat(((TopAndRowNumberDecoratorMergedResult)
actual).getMergedResult(), instanceOf(GroupByMemoryMergedResult.class));
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java
index c1c1a69a6d1..528d18ac82d 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java
@@ -132,7 +132,7 @@ class GroupByMemoryMergedResultTest {
selectStatement.setProjections(projectionsSegment);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(database.getSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(mock(ShardingSphereSchema.class));
- return new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ return new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
}
private SelectStatementContext createSelectStatementContext(final
ShardingSphereDatabase database) {
@@ -144,7 +144,7 @@ class GroupByMemoryMergedResultTest {
selectStatement.setOrderBy(new OrderBySegment(0, 0,
Collections.singletonList(new IndexOrderByItemSegment(0, 0, 3,
OrderDirection.DESC, NullsOrderType.FIRST))));
selectStatement.setFrom(new SimpleTableSegment(new TableNameSegment(0,
0, new IdentifierValue("t_order"))));
selectStatement.setProjections(projectionsSegment);
- return new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ return new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
}
private ShardingSphereMetaData createShardingSphereMetaData(final
ShardingSphereDatabase database) {
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByRowComparatorTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByRowComparatorTest.java
index 0a9d8442c06..e9b4404edfc 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByRowComparatorTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByRowComparatorTest.java
@@ -95,7 +95,7 @@ class GroupByRowComparatorTest {
new IndexOrderByItemSegment(0, 0, 2, OrderDirection.ASC,
NullsOrderType.FIRST))));
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
GroupByRowComparator groupByRowComparator = new
GroupByRowComparator(selectStatementContext, caseSensitives);
MemoryQueryResultRow o1 = new
MemoryQueryResultRow(mockQueryResult("1", "2"));
MemoryQueryResultRow o2 = new
MemoryQueryResultRow(mockQueryResult("3", "4"));
@@ -138,7 +138,7 @@ class GroupByRowComparatorTest {
new IndexOrderByItemSegment(0, 0, 2, OrderDirection.DESC,
NullsOrderType.FIRST))));
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
GroupByRowComparator groupByRowComparator = new
GroupByRowComparator(selectStatementContext, caseSensitives);
MemoryQueryResultRow o1 = new
MemoryQueryResultRow(mockQueryResult("1", "2"));
MemoryQueryResultRow o2 = new
MemoryQueryResultRow(mockQueryResult("3", "4"));
@@ -181,7 +181,7 @@ class GroupByRowComparatorTest {
new IndexOrderByItemSegment(0, 0, 2, OrderDirection.DESC,
NullsOrderType.FIRST))));
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
GroupByRowComparator groupByRowComparator = new
GroupByRowComparator(selectStatementContext, caseSensitives);
MemoryQueryResultRow o1 = new
MemoryQueryResultRow(mockQueryResult("1", "2"));
MemoryQueryResultRow o2 = new
MemoryQueryResultRow(mockQueryResult("1", "2"));
@@ -222,7 +222,7 @@ class GroupByRowComparatorTest {
selectStatement.setOrderBy(new OrderBySegment(0, 0,
Collections.emptyList()));
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
GroupByRowComparator groupByRowComparator = new
GroupByRowComparator(selectStatementContext, caseSensitives);
MemoryQueryResultRow o1 = new
MemoryQueryResultRow(mockQueryResult("1", "2"));
MemoryQueryResultRow o2 = new
MemoryQueryResultRow(mockQueryResult("3", "4"));
@@ -263,7 +263,7 @@ class GroupByRowComparatorTest {
selectStatement.setOrderBy(new OrderBySegment(0, 0,
Collections.emptyList()));
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
GroupByRowComparator groupByRowComparator = new
GroupByRowComparator(selectStatementContext, caseSensitives);
MemoryQueryResultRow o1 = new
MemoryQueryResultRow(mockQueryResult("1", "2"));
MemoryQueryResultRow o2 = new
MemoryQueryResultRow(mockQueryResult("3", "4"));
@@ -309,7 +309,7 @@ class GroupByRowComparatorTest {
selectStatement.setOrderBy(new OrderBySegment(0, 0,
Collections.emptyList()));
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
GroupByRowComparator groupByRowComparator = new
GroupByRowComparator(selectStatementContext, caseSensitives);
MemoryQueryResultRow o1 = new
MemoryQueryResultRow(mockQueryResult("1", "2"));
MemoryQueryResultRow o2 = new
MemoryQueryResultRow(mockQueryResult("1", "2"));
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByStreamMergedResultTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByStreamMergedResultTest.java
index aff5448b17b..322bae10575 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByStreamMergedResultTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByStreamMergedResultTest.java
@@ -174,7 +174,7 @@ class GroupByStreamMergedResultTest {
selectStatement.setProjections(projectionsSegment);
selectStatement.setGroupBy(new GroupBySegment(0, 0,
Collections.singletonList(new IndexOrderByItemSegment(0, 0, 3,
OrderDirection.ASC, NullsOrderType.FIRST))));
selectStatement.setOrderBy(new OrderBySegment(0, 0,
Collections.singletonList(new IndexOrderByItemSegment(0, 0, 3,
OrderDirection.ASC, NullsOrderType.FIRST))));
- return new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ return new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
}
private static ShardingSphereMetaData createShardingSphereMetaData(final
ShardingSphereDatabase database) {
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByStreamMergedResultTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByStreamMergedResultTest.java
index 67761426394..1fc498ab892 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByStreamMergedResultTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByStreamMergedResultTest.java
@@ -74,7 +74,7 @@ class OrderByStreamMergedResultTest {
new IndexOrderByItemSegment(0, 0, 1, OrderDirection.ASC,
NullsOrderType.FIRST),
new IndexOrderByItemSegment(0, 0, 2, OrderDirection.ASC,
NullsOrderType.FIRST))));
selectStatement.setProjections(new ProjectionsSegment(0, 0));
- selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(), Collections.emptyList(),
selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(), Collections.emptyList(),
selectStatement, DefaultDatabase.LOGIC_NAME, Collections.emptyList());
}
private ShardingSphereMetaData createShardingSphereMetaData() {
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByValueTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByValueTest.java
index 746941bb19c..cf9228aafbd 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByValueTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByValueTest.java
@@ -91,7 +91,7 @@ class OrderByValueTest {
selectStatement.setProjections(projectionsSegment);
selectStatement.setOrderBy(createOrderBySegment());
SelectStatementContext selectStatementContext = new
SelectStatementContext(
- createShardingSphereMetaData(), Collections.emptyList(),
selectStatement, DefaultDatabase.LOGIC_NAME);
+ createShardingSphereMetaData(), Collections.emptyList(),
selectStatement, DefaultDatabase.LOGIC_NAME, Collections.emptyList());
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
QueryResult queryResult1 = createQueryResult("1", "2");
OrderByValue orderByValue1 = new OrderByValue(queryResult1,
Arrays.asList(
@@ -148,7 +148,7 @@ class OrderByValueTest {
selectStatement.setProjections(projectionsSegment);
selectStatement.setOrderBy(createOrderBySegment());
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(),
- Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME);
+ Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME, Collections.emptyList());
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.getTable("table")).thenReturn(new ShardingSphereTable());
QueryResult queryResult1 = createQueryResult("1", "2");
@@ -201,7 +201,7 @@ class OrderByValueTest {
selectStatement.setProjections(projectionsSegment);
selectStatement.setOrderBy(createOrderBySegment());
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(),
- Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME);
+ Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME, Collections.emptyList());
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
QueryResult queryResult1 = createQueryResult("1", "2");
OrderByValue orderByValue1 = new OrderByValue(queryResult1,
Arrays.asList(
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/pagination/LimitDecoratorMergedResultTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/pagination/LimitDecoratorMergedResultTest.java
index ad953389321..c81e165bf69 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/pagination/LimitDecoratorMergedResultTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/pagination/LimitDecoratorMergedResultTest.java
@@ -54,7 +54,8 @@ class LimitDecoratorMergedResultTest {
MySQLSelectStatement selectStatement = new MySQLSelectStatement();
selectStatement.setProjections(new ProjectionsSegment(0, 0));
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralLimitValueSegment(0, 0, Integer.MAX_VALUE), null));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
ShardingDQLResultMerger resultMerger = new
ShardingDQLResultMerger(TypedSPILoader.getService(DatabaseType.class, "MySQL"));
MergedResult actual =
resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(),
mockQueryResult(), mockQueryResult()), selectStatementContext, database,
@@ -68,7 +69,8 @@ class LimitDecoratorMergedResultTest {
MySQLSelectStatement selectStatement = new MySQLSelectStatement();
selectStatement.setProjections(new ProjectionsSegment(0, 0));
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralLimitValueSegment(0, 0, 2L), null));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
ShardingDQLResultMerger resultMerger = new
ShardingDQLResultMerger(TypedSPILoader.getService(DatabaseType.class, "MySQL"));
MergedResult actual =
resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(),
mockQueryResult(), mockQueryResult()), selectStatementContext, database,
@@ -85,7 +87,8 @@ class LimitDecoratorMergedResultTest {
MySQLSelectStatement selectStatement = new MySQLSelectStatement();
selectStatement.setProjections(new ProjectionsSegment(0, 0));
selectStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralLimitValueSegment(0, 0, 2L), new NumberLiteralLimitValueSegment(0,
0, 2L)));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
ShardingDQLResultMerger resultMerger = new
ShardingDQLResultMerger(TypedSPILoader.getService(DatabaseType.class, "MySQL"));
MergedResult actual =
resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(),
mockQueryResult(), mockQueryResult()), selectStatementContext, database,
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/pagination/RowNumberDecoratorMergedResultTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/pagination/RowNumberDecoratorMergedResultTest.java
index b7cb50d2b72..33025647670 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/pagination/RowNumberDecoratorMergedResultTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/pagination/RowNumberDecoratorMergedResultTest.java
@@ -81,7 +81,7 @@ class RowNumberDecoratorMergedResultTest {
selectStatement.setWhere(whereSegment);
ShardingDQLResultMerger resultMerger = new
ShardingDQLResultMerger(TypedSPILoader.getService(DatabaseType.class,
"Oracle"));
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
selectStatement, DefaultDatabase.LOGIC_NAME, Collections.emptyList());
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
MergedResult actual =
resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(),
mockQueryResult(), mockQueryResult()), selectStatementContext, database,
mock(ConnectionContext.class));
@@ -94,7 +94,7 @@ class RowNumberDecoratorMergedResultTest {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
OracleSelectStatement selectStatement = new OracleSelectStatement();
selectStatement.setProjections(new ProjectionsSegment(0, 0));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
selectStatement, DefaultDatabase.LOGIC_NAME, Collections.emptyList());
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
MergedResult actual =
resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(),
mockQueryResult(), mockQueryResult()), selectStatementContext, database,
mock(ConnectionContext.class));
@@ -129,7 +129,7 @@ class RowNumberDecoratorMergedResultTest {
selectStatement.setWhere(whereSegment);
ShardingDQLResultMerger resultMerger = new
ShardingDQLResultMerger(TypedSPILoader.getService(DatabaseType.class,
"Oracle"));
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
selectStatement, DefaultDatabase.LOGIC_NAME, Collections.emptyList());
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
MergedResult actual =
resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(),
mockQueryResult(), mockQueryResult()), selectStatementContext, database,
mock(ConnectionContext.class));
@@ -163,7 +163,7 @@ class RowNumberDecoratorMergedResultTest {
selectStatement.setWhere(whereSegment);
ShardingDQLResultMerger resultMerger = new
ShardingDQLResultMerger(TypedSPILoader.getService(DatabaseType.class,
"Oracle"));
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database), null,
selectStatement, DefaultDatabase.LOGIC_NAME, Collections.emptyList());
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
MergedResult actual =
resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(),
mockQueryResult(), mockQueryResult()), selectStatementContext, database,
mock(ConnectionContext.class));
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/pagination/TopAndRowNumberDecoratorMergedResultTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/pagination/TopAndRowNumberDecoratorMergedResultTest.java
index e4d71bb1237..4ae51f3e6b6 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/pagination/TopAndRowNumberDecoratorMergedResultTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/pagination/TopAndRowNumberDecoratorMergedResultTest.java
@@ -65,7 +65,8 @@ class TopAndRowNumberDecoratorMergedResultTest {
SQLServerSelectStatement sqlStatement = new SQLServerSelectStatement();
sqlStatement.setProjections(new ProjectionsSegment(0, 0));
sqlStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralRowNumberValueSegment(0, 0, Integer.MAX_VALUE, true), null));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), sqlStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), sqlStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
ShardingDQLResultMerger resultMerger = new
ShardingDQLResultMerger(TypedSPILoader.getService(DatabaseType.class,
"SQLServer"));
MergedResult actual =
resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(),
mockQueryResult(), mockQueryResult()), selectStatementContext,
mockShardingSphereDatabase(), mock(ConnectionContext.class));
@@ -80,7 +81,8 @@ class TopAndRowNumberDecoratorMergedResultTest {
SQLServerSelectStatement sqlStatement = new SQLServerSelectStatement();
sqlStatement.setProjections(new ProjectionsSegment(0, 0));
sqlStatement.setLimit(new LimitSegment(0, 0, null, new
NumberLiteralLimitValueSegment(0, 0, 5L)));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), sqlStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), sqlStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual =
resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(),
mockQueryResult(), mockQueryResult()), selectStatementContext,
mockShardingSphereDatabase(), mock(ConnectionContext.class));
for (int i = 0; i < 5; i++) {
@@ -96,7 +98,8 @@ class TopAndRowNumberDecoratorMergedResultTest {
SQLServerSelectStatement sqlStatement = new SQLServerSelectStatement();
sqlStatement.setProjections(new ProjectionsSegment(0, 0));
sqlStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralRowNumberValueSegment(0, 0, 2L, true), null));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), sqlStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), sqlStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
ShardingDQLResultMerger resultMerger = new
ShardingDQLResultMerger(TypedSPILoader.getService(DatabaseType.class,
"SQLServer"));
MergedResult actual =
resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(),
mockQueryResult(), mockQueryResult()), selectStatementContext,
mockShardingSphereDatabase(), mock(ConnectionContext.class));
@@ -114,7 +117,8 @@ class TopAndRowNumberDecoratorMergedResultTest {
SQLServerSelectStatement sqlStatement = new SQLServerSelectStatement();
sqlStatement.setProjections(new ProjectionsSegment(0, 0));
sqlStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralRowNumberValueSegment(0, 0, 2L, false), new
NumberLiteralLimitValueSegment(0, 0, 4L)));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), sqlStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), sqlStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
MergedResult actual =
resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(),
mockQueryResult(), mockQueryResult()), selectStatementContext,
mockShardingSphereDatabase(), mock(ConnectionContext.class));
assertTrue(actual.next());
@@ -131,7 +135,7 @@ class TopAndRowNumberDecoratorMergedResultTest {
sqlStatement.setProjections(new ProjectionsSegment(0, 0));
sqlStatement.setLimit(new LimitSegment(0, 0, new
NumberLiteralRowNumberValueSegment(0, 0, 2L, true), new
NumberLiteralLimitValueSegment(0, 0, 4L)));
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
- Collections.emptyList(), sqlStatement,
DefaultDatabase.LOGIC_NAME);
+ Collections.emptyList(), sqlStatement,
DefaultDatabase.LOGIC_NAME, Collections.emptyList());
MergedResult actual =
resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(),
mockQueryResult(), mockQueryResult()), selectStatementContext,
mockShardingSphereDatabase(), mock(ConnectionContext.class));
assertTrue(actual.next());
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/ShardingRemoveTokenGeneratorTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/ShardingRemoveTokenGeneratorTest.java
index 4ed6b0c70a8..d02dc6c2767 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/ShardingRemoveTokenGeneratorTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/ShardingRemoveTokenGeneratorTest.java
@@ -86,7 +86,7 @@ class ShardingRemoveTokenGeneratorTest {
selectStatement.setGroupBy(new GroupBySegment(0, 0,
Collections.singletonList(new IndexOrderByItemSegment(0, 0, 1,
OrderDirection.ASC, NullsOrderType.FIRST))));
selectStatement.setProjections(createProjectionsSegment());
return new SelectStatementContext(
-
createShardingSphereMetaData(mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS)), Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME);
+
createShardingSphereMetaData(mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS)), Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME, Collections.emptyList());
}
private ShardingSphereMetaData createShardingSphereMetaData(final
ShardingSphereDatabase database) {
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
index 48e960f3bfb..513bb5234b6 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
@@ -62,7 +62,6 @@ public final class TablesContext {
private final Collection<String> schemaNames = new CaseInsensitiveSet<>();
- @Getter(AccessLevel.NONE)
private final Collection<String> databaseNames = new
CaseInsensitiveSet<>();
@Getter(AccessLevel.NONE)
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/SQLStatementContextFactory.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/SQLStatementContextFactory.java
index 0f44909c89c..68b3b088492 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/SQLStatementContextFactory.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/SQLStatementContextFactory.java
@@ -19,6 +19,17 @@ package
org.apache.shardingsphere.infra.binder.context.statement;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
+import
org.apache.shardingsphere.infra.binder.context.statement.dal.AnalyzeTableStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.dal.ExplainStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.dal.FlushStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.dal.KillStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.dal.OptimizeTableStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.dal.ShowColumnsStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.dal.ShowCreateTableStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.dal.ShowIndexStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.dal.ShowTableStatusStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.dal.ShowTablesStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.dcl.DenyUserStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dcl.GrantStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dcl.RevokeStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.ddl.AlterIndexStatementContext;
@@ -48,22 +59,11 @@ import
org.apache.shardingsphere.infra.binder.context.statement.dml.DoStatementC
import
org.apache.shardingsphere.infra.binder.context.statement.dml.InsertStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.LoadDataStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.LoadXMLStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dml.UpdateStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dal.AnalyzeTableStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dal.ExplainStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dal.FlushStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dal.KillStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dal.OptimizeTableStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dal.ShowColumnsStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dal.ShowCreateTableStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dal.ShowIndexStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dal.ShowTableStatusStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dal.ShowTablesStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.MergeStatementContext;
-import
org.apache.shardingsphere.infra.binder.context.statement.dcl.DenyUserStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
-import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import
org.apache.shardingsphere.infra.binder.context.statement.dml.UpdateStatementContext;
import
org.apache.shardingsphere.infra.exception.generic.UnsupportedSQLOperationException;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.AnalyzeTableStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
@@ -113,6 +113,7 @@ import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.ddl.
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dml.OracleMergeStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dcl.SQLServerDenyUserStatement;
+import java.util.Collections;
import java.util.List;
/**
@@ -149,7 +150,7 @@ public final class SQLStatementContextFactory {
private static SQLStatementContext getDMLStatementContext(final
ShardingSphereMetaData metaData,
final
List<Object> params, final DMLStatement sqlStatement, final String
defaultDatabaseName) {
if (sqlStatement instanceof SelectStatement) {
- return new SelectStatementContext(metaData, params,
(SelectStatement) sqlStatement, defaultDatabaseName);
+ return new SelectStatementContext(metaData, params,
(SelectStatement) sqlStatement, defaultDatabaseName, Collections.emptyList());
}
if (sqlStatement instanceof UpdateStatement) {
return new UpdateStatementContext((UpdateStatement) sqlStatement);
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CursorStatementContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CursorStatementContext.java
index 719efa5856f..ced9462ea91 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CursorStatementContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CursorStatementContext.java
@@ -35,6 +35,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.Sim
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.ddl.OpenGaussCursorStatement;
import java.util.Collection;
+import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
@@ -59,7 +60,7 @@ public final class CursorStatementContext extends
CommonSQLStatementContext impl
final OpenGaussCursorStatement sqlStatement,
final String defaultDatabaseName) {
super(sqlStatement);
tablesContext = new TablesContext(getSimpleTableSegments(),
getDatabaseType());
- selectStatementContext = new SelectStatementContext(metaData, params,
sqlStatement.getSelect(), defaultDatabaseName);
+ selectStatementContext = new SelectStatementContext(metaData, params,
sqlStatement.getSelect(), defaultDatabaseName, Collections.emptyList());
whereSegments.addAll(selectStatementContext.getWhereSegments());
columnSegments.addAll(selectStatementContext.getColumnSegments());
joinConditions.addAll(selectStatementContext.getJoinConditions());
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContext.java
index 8f804668ca5..32e87e4c01b 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContext.java
@@ -130,7 +130,7 @@ public final class InsertStatementContext extends
CommonSQLStatementContext impl
return Optional.empty();
}
SubquerySegment insertSelectSegment =
getSqlStatement().getInsertSelect().get();
- SelectStatementContext selectStatementContext = new
SelectStatementContext(metaData, params, insertSelectSegment.getSelect(),
defaultDatabaseName);
+ SelectStatementContext selectStatementContext = new
SelectStatementContext(metaData, params, insertSelectSegment.getSelect(),
defaultDatabaseName, Collections.emptyList());
selectStatementContext.setSubqueryType(SubqueryType.INSERT_SELECT_SUBQUERY);
InsertSelectContext insertSelectContext = new
InsertSelectContext(selectStatementContext, params, paramsOffset.get());
paramsOffset.addAndGet(insertSelectContext.getParameterCount());
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContext.java
index 63538559d48..3a07257f467 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContext.java
@@ -61,6 +61,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.order.item.Or
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.order.item.TextOrderByItemSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.WhereSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.JoinTableSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SubqueryTableSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
@@ -111,19 +112,29 @@ public final class SelectStatementContext extends
CommonSQLStatementContext impl
private PaginationContext paginationContext;
- public SelectStatementContext(final ShardingSphereMetaData metaData, final
List<Object> params, final SelectStatement sqlStatement, final String
defaultDatabaseName) {
+ public SelectStatementContext(final ShardingSphereMetaData metaData, final
List<Object> params, final SelectStatement sqlStatement, final String
defaultDatabaseName,
+ final Collection<TableSegment>
inheritedTables) {
super(sqlStatement);
extractWhereSegments(whereSegments, sqlStatement);
ColumnExtractor.extractColumnSegments(columnSegments, whereSegments);
+ Collection<TableSegment> tableSegments =
getAllTableSegments(inheritedTables);
ExpressionExtractUtils.extractJoinConditions(joinConditions,
whereSegments);
- subqueryContexts = createSubqueryContexts(metaData, params,
defaultDatabaseName);
- tablesContext = new TablesContext(getAllTableSegments(),
subqueryContexts, getDatabaseType());
+ subqueryContexts = createSubqueryContexts(metaData, params,
defaultDatabaseName, tableSegments);
+ tablesContext = new TablesContext(tableSegments, subqueryContexts,
getDatabaseType());
groupByContext = new
GroupByContextEngine().createGroupByContext(sqlStatement);
orderByContext = new
OrderByContextEngine().createOrderBy(sqlStatement, groupByContext);
projectionsContext = new
ProjectionsContextEngine(getDatabaseType()).createProjectionsContext(getSqlStatement().getProjections(),
groupByContext, orderByContext);
paginationContext = new
PaginationContextEngine(getDatabaseType()).createPaginationContext(sqlStatement,
projectionsContext, params, whereSegments);
- String databaseName =
tablesContext.getDatabaseName().orElse(defaultDatabaseName);
- containsEnhancedTable = isContainsEnhancedTable(metaData,
databaseName, getTablesContext().getTableNames());
+ containsEnhancedTable = isContainsEnhancedTable(metaData,
tablesContext.getDatabaseNames(), defaultDatabaseName);
+ }
+
+ private boolean isContainsEnhancedTable(final ShardingSphereMetaData
metaData, final Collection<String> databaseNames, final String
defaultDatabaseName) {
+ for (String each : databaseNames) {
+ if (isContainsEnhancedTable(metaData, each,
getTablesContext().getTableNames())) {
+ return true;
+ }
+ }
+ return isContainsEnhancedTable(metaData, defaultDatabaseName,
getTablesContext().getTableNames());
}
private boolean isContainsEnhancedTable(final ShardingSphereMetaData
metaData, final String databaseName, final Collection<String> tableNames) {
@@ -147,11 +158,12 @@ public final class SelectStatementContext extends
CommonSQLStatementContext impl
return
database.getRuleMetaData().getAttributes(TableMapperRuleAttribute.class);
}
- private Map<Integer, SelectStatementContext> createSubqueryContexts(final
ShardingSphereMetaData metaData, final List<Object> params, final String
defaultDatabaseName) {
+ private Map<Integer, SelectStatementContext> createSubqueryContexts(final
ShardingSphereMetaData metaData, final List<Object> params, final String
defaultDatabaseName,
+ final
Collection<TableSegment> tableSegments) {
Collection<SubquerySegment> subquerySegments =
SubqueryExtractUtils.getSubquerySegments(getSqlStatement());
Map<Integer, SelectStatementContext> result = new
HashMap<>(subquerySegments.size(), 1F);
for (SubquerySegment each : subquerySegments) {
- SelectStatementContext subqueryContext = new
SelectStatementContext(metaData, params, each.getSelect(), defaultDatabaseName);
+ SelectStatementContext subqueryContext = new
SelectStatementContext(metaData, params, each.getSelect(), defaultDatabaseName,
tableSegments);
subqueryContext.setSubqueryType(each.getSubqueryType());
result.put(each.getStartIndex(), subqueryContext);
}
@@ -364,8 +376,9 @@ public final class SelectStatementContext extends
CommonSQLStatementContext impl
whereSegments.addAll(WhereExtractUtils.getJoinWhereSegments(selectStatement));
}
- private Collection<TableSegment> getAllTableSegments() {
+ private Collection<TableSegment> getAllTableSegments(final
Collection<TableSegment> inheritedTables) {
TableExtractor tableExtractor = new TableExtractor();
+ appendInheritedSimpleTables(inheritedTables, tableExtractor);
tableExtractor.extractTablesFromSelect(getSqlStatement());
Collection<TableSegment> result = new
LinkedList<>(tableExtractor.getRewriteTables());
for (TableSegment each : tableExtractor.getTableContext()) {
@@ -376,6 +389,14 @@ public final class SelectStatementContext extends
CommonSQLStatementContext impl
return result;
}
+ private void appendInheritedSimpleTables(final Collection<TableSegment>
inheritedTables, final TableExtractor tableExtractor) {
+ for (TableSegment each : inheritedTables) {
+ if (each instanceof SimpleTableSegment) {
+ tableExtractor.getTableContext().add(each);
+ }
+ }
+ }
+
/**
* Judge whether sql statement contains table subquery segment or not.
*
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/pagination/PaginationContextTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/pagination/PaginationContextTest.java
index df4a9ef7667..426fbed0187 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/pagination/PaginationContextTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/pagination/PaginationContextTest.java
@@ -170,7 +170,7 @@ class PaginationContextTest {
Map<String, ShardingSphereDatabase> databases =
Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS));
ShardingSphereMetaData metaData = new
ShardingSphereMetaData(databases, mock(ResourceMetaData.class),
mock(RuleMetaData.class), mock(ConfigurationProperties.class));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME, Collections.emptyList());
assertThat(new PaginationContext(getOffsetSegment(),
getRowCountSegment(),
getParameters()).getRevisedRowCount(selectStatementContext), is(50L));
}
@@ -206,7 +206,7 @@ class PaginationContextTest {
Map<String, ShardingSphereDatabase> databases =
Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS));
ShardingSphereMetaData metaData =
new ShardingSphereMetaData(databases,
mock(ResourceMetaData.class), mock(RuleMetaData.class),
mock(ConfigurationProperties.class));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME, Collections.emptyList());
assertThat(new PaginationContext(getOffsetSegment(),
getRowCountSegment(),
getParameters()).getRevisedRowCount(selectStatementContext), is((long)
Integer.MAX_VALUE));
}
}
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/engine/ProjectionsContextEngineTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/engine/ProjectionsContextEngineTest.java
index de8c931930e..82282f27d7a 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/engine/ProjectionsContextEngineTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/engine/ProjectionsContextEngineTest.java
@@ -223,7 +223,7 @@ class ProjectionsContextEngineTest {
private SelectStatementContext createSelectStatementContext(final
SelectStatement selectStatement) {
Map<String, ShardingSphereDatabase> databases =
Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS));
ShardingSphereMetaData metaData = new
ShardingSphereMetaData(databases, mock(ResourceMetaData.class),
mock(RuleMetaData.class), mock(ConfigurationProperties.class));
- return new SelectStatementContext(metaData, Collections.emptyList(),
selectStatement, DefaultDatabase.LOGIC_NAME);
+ return new SelectStatementContext(metaData, Collections.emptyList(),
selectStatement, DefaultDatabase.LOGIC_NAME, Collections.emptyList());
}
@Test
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContextTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContextTest.java
index 576ba073e47..de61f15108c 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContextTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContextTest.java
@@ -113,7 +113,8 @@ class SelectStatementContextTest {
selectStatement.setOrderBy(new OrderBySegment(0, 0,
Collections.singletonList(createOrderByItemSegment(INDEX_ORDER_BY))));
selectStatement.setProjections(createProjectionsSegment());
selectStatement.setFrom(new SimpleTableSegment(new TableNameSegment(0,
0, new IdentifierValue("table"))));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
selectStatementContext.setIndexes(Collections.emptyMap());
assertThat(selectStatementContext.getOrderByContext().getItems().iterator().next().getIndex(),
is(4));
}
@@ -158,7 +159,8 @@ class SelectStatementContextTest {
tableSegment.setOwner(new OwnerSegment(0, 0, new
IdentifierValue(DefaultDatabase.LOGIC_NAME.toUpperCase())));
selectStatement.setFrom(tableSegment);
ShardingSphereDatabase database = mockDatabase();
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
selectStatementContext.setIndexes(Collections.emptyMap());
assertThat(selectStatementContext.getOrderByContext().getItems().iterator().next().getIndex(),
is(1));
}
@@ -192,7 +194,8 @@ class SelectStatementContextTest {
ShardingSphereDatabase database = mockDatabase();
selectStatement.setOrderBy(new OrderBySegment(0, 0,
Collections.singletonList(createOrderByItemSegment(COLUMN_ORDER_BY_WITH_ALIAS))));
selectStatement.setProjections(createProjectionsSegment());
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
selectStatementContext.setIndexes(Collections.singletonMap("n", 2));
assertThat(selectStatementContext.getOrderByContext().getItems().iterator().next().getIndex(),
is(2));
}
@@ -226,7 +229,8 @@ class SelectStatementContextTest {
ShardingSphereDatabase database = mockDatabase();
selectStatement.setOrderBy(new OrderBySegment(0, 0,
Collections.singletonList(createOrderByItemSegment(COLUMN_ORDER_BY_WITHOUT_OWNER_ALIAS))));
selectStatement.setProjections(createProjectionsSegment());
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
selectStatementContext.setIndexes(Collections.singletonMap("id", 3));
assertThat(selectStatementContext.getOrderByContext().getItems().iterator().next().getIndex(),
is(3));
}
@@ -267,7 +271,7 @@ class SelectStatementContextTest {
private SelectStatementContext createSelectStatementContext(final
SelectStatement selectStatement) {
ShardingSphereMetaData metaData = new
ShardingSphereMetaData(Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
mockDatabase()), mock(ResourceMetaData.class),
mock(RuleMetaData.class), mock(ConfigurationProperties.class));
- return new SelectStatementContext(metaData, Collections.emptyList(),
selectStatement, DefaultDatabase.LOGIC_NAME);
+ return new SelectStatementContext(metaData, Collections.emptyList(),
selectStatement, DefaultDatabase.LOGIC_NAME, Collections.emptyList());
}
@Test
@@ -367,7 +371,8 @@ class SelectStatementContextTest {
projectionsSegment.getProjections().add(aggregationProjectionSegment);
selectStatement.setProjections(projectionsSegment);
ShardingSphereDatabase database = mockDatabase();
- SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
selectStatementContext.setIndexes(Collections.singletonMap("id", 3));
assertThat(selectStatementContext.getOrderByContext().getItems().iterator().next().getIndex(),
is(3));
}
@@ -402,7 +407,8 @@ class SelectStatementContextTest {
selectStatement.setWhere(whereSegment);
ShardingSphereDatabase database = mockDatabase();
selectStatement.setProjections(new ProjectionsSegment(0, 0));
- SelectStatementContext actual = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext actual =
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
assertThat(actual.getTablesContext().getTableNames(),
is(Collections.emptySet()));
assertThat(actual.getTablesContext().getSimpleTables(),
is(Collections.emptyList()));
assertThat(actual.getGroupByContext().getItems(),
is(Collections.emptyList()));
@@ -446,7 +452,8 @@ class SelectStatementContextTest {
projectionsSegment.getProjections().add(subqueryProjectionSegment);
selectStatement.setProjections(projectionsSegment);
ShardingSphereDatabase database = mockDatabase();
- assertTrue(new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME).isContainsSubquery());
+ assertTrue(
+ new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList()).isContainsSubquery());
}
@Test
@@ -494,7 +501,7 @@ class SelectStatementContextTest {
selectStatement.setProjections(projectionsSegment);
ShardingSphereMetaData metaData = new
ShardingSphereMetaData(Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
mockDatabase()), mock(ResourceMetaData.class),
mock(RuleMetaData.class), mock(ConfigurationProperties.class));
- assertTrue(new SelectStatementContext(metaData,
Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME).isContainsSubquery());
+ assertTrue(new SelectStatementContext(metaData,
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList()).isContainsSubquery());
}
@Test
@@ -528,13 +535,13 @@ class SelectStatementContextTest {
selectStatement.setProjections(projectionsSegment);
ShardingSphereMetaData metaData = new
ShardingSphereMetaData(Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
mockDatabase()), mock(ResourceMetaData.class),
mock(RuleMetaData.class), mock(ConfigurationProperties.class));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME, Collections.emptyList());
assertTrue(selectStatementContext.isContainsDollarParameterMarker());
selectStatement.setProjections(new ProjectionsSegment(0, 0));
JoinTableSegment joinTableSegment = new JoinTableSegment();
joinTableSegment.setCondition(new ParameterMarkerExpressionSegment(0,
0, 0, ParameterMarkerType.DOLLAR));
selectStatement.setFrom(joinTableSegment);
- selectStatementContext = new SelectStatementContext(metaData,
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatementContext = new SelectStatementContext(metaData,
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
assertTrue(selectStatementContext.isContainsDollarParameterMarker());
}
@@ -570,7 +577,7 @@ class SelectStatementContextTest {
selectStatement.setProjections(projectionsSegment);
ShardingSphereMetaData metaData = new
ShardingSphereMetaData(Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
mockDatabase()), mock(ResourceMetaData.class),
mock(RuleMetaData.class), mock(ConfigurationProperties.class));
- SelectStatementContext selectStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext selectStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), selectStatement,
DefaultDatabase.LOGIC_NAME, Collections.emptyList());
assertTrue(selectStatementContext.isContainsPartialDistinctAggregation());
}
@@ -624,7 +631,7 @@ class SelectStatementContextTest {
selectStatement.setFrom(new SimpleTableSegment(new TableNameSegment(0,
0, new IdentifierValue("t_order"))));
ShardingSphereMetaData metaData = new
ShardingSphereMetaData(Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
mockDatabase()), mock(ResourceMetaData.class),
mock(RuleMetaData.class), mock(ConfigurationProperties.class));
- SelectStatementContext actual = new SelectStatementContext(metaData,
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext actual = new SelectStatementContext(metaData,
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
assertTrue(actual.isContainsEnhancedTable());
}
@@ -635,7 +642,7 @@ class SelectStatementContextTest {
selectStatement.setFrom(new SubqueryTableSegment(0, 0, new
SubquerySegment(0, 0, createSubSelectStatement(), "")));
ShardingSphereMetaData metaData = new
ShardingSphereMetaData(Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
mockDatabase()), mock(ResourceMetaData.class),
mock(RuleMetaData.class), mock(ConfigurationProperties.class));
- SelectStatementContext actual = new SelectStatementContext(metaData,
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
+ SelectStatementContext actual = new SelectStatementContext(metaData,
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
assertTrue(actual.containsTableSubquery());
}
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
index ad3d1cedfd0..51684baf49c 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
@@ -126,7 +126,7 @@ public final class PipelineDDLGenerator {
}
private QueryContext getQueryContext(final String databaseName, final
SQLParserEngine parserEngine, final String sql) {
- SQLStatementContext sqlStatementContext = new SQLBindEngine(null,
databaseName, new HintValueContext()).bind(parserEngine.parse(sql, false),
Collections.emptyList());
+ SQLStatementContext sqlStatementContext = new SQLBindEngine(null,
databaseName, new HintValueContext()).bind(parserEngine.parse(sql, true),
Collections.emptyList());
return new QueryContext(sqlStatementContext, sql,
Collections.emptyList(), new HintValueContext());
}
diff --git
a/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/rule/TrafficRuleTest.java
b/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/rule/TrafficRuleTest.java
index cd080ac6db6..8a616d18485 100644
---
a/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/rule/TrafficRuleTest.java
+++
b/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/rule/TrafficRuleTest.java
@@ -91,7 +91,7 @@ class TrafficRuleTest {
MySQLSelectStatement sqlStatement = mock(MySQLSelectStatement.class);
when(sqlStatement.getProjections()).thenReturn(new
ProjectionsSegment(0, 0));
SQLStatementContext statementContext =
- new SelectStatementContext(createShardingSphereMetaData(),
Collections.emptyList(), sqlStatement, DefaultDatabase.LOGIC_NAME);
+ new SelectStatementContext(createShardingSphereMetaData(),
Collections.emptyList(), sqlStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
HintValueContext hintValueContext = new HintValueContext();
hintValueContext.setUseTraffic(includeComments);
return new QueryContext(statementContext, "", Collections.emptyList(),
hintValueContext);
diff --git
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/extractor/TableExtractor.java
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/extractor/TableExtractor.java
index 8c081fa1efe..fb7f93271f0 100644
---
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/extractor/TableExtractor.java
+++
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/extractor/TableExtractor.java
@@ -88,23 +88,15 @@ public final class TableExtractor {
if (selectStatement.getFrom().isPresent() &&
!selectStatement.getCombine().isPresent()) {
extractTablesFromTableSegment(selectStatement.getFrom().get());
}
- if (selectStatement.getWhere().isPresent()) {
-
extractTablesFromExpression(selectStatement.getWhere().get().getExpr());
- }
+ selectStatement.getWhere().ifPresent(optional ->
extractTablesFromExpression(optional.getExpr()));
if (null != selectStatement.getProjections() &&
!selectStatement.getCombine().isPresent()) {
extractTablesFromProjections(selectStatement.getProjections());
}
- if (selectStatement.getGroupBy().isPresent()) {
-
extractTablesFromOrderByItems(selectStatement.getGroupBy().get().getGroupByItems());
- }
- if (selectStatement.getOrderBy().isPresent()) {
-
extractTablesFromOrderByItems(selectStatement.getOrderBy().get().getOrderByItems());
- }
- if (selectStatement.getWithSegment().isPresent()) {
-
extractTablesFromCTEs(selectStatement.getWithSegment().get().getCommonTableExpressions());
- }
- Optional<LockSegment> lockSegment =
SelectStatementHandler.getLockSegment(selectStatement);
- lockSegment.ifPresent(this::extractTablesFromLock);
+ selectStatement.getGroupBy().ifPresent(optional ->
extractTablesFromOrderByItems(optional.getGroupByItems()));
+ selectStatement.getOrderBy().ifPresent(optional ->
extractTablesFromOrderByItems(optional.getOrderByItems()));
+ selectStatement.getHaving().ifPresent(optional ->
extractTablesFromExpression(optional.getExpr()));
+ selectStatement.getWithSegment().ifPresent(optional ->
extractTablesFromCTEs(optional.getCommonTableExpressions()));
+
SelectStatementHandler.getLockSegment(selectStatement).ifPresent(this::extractTablesFromLock);
}
private void extractTablesFromCTEs(final
Collection<CommonTableExpressionSegment> commonTableExpressionSegments) {
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutorTest.java
index acd800fb7b2..23bf24497dd 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutorTest.java
@@ -251,7 +251,7 @@ class ProxySQLExecutorTest {
OpenGaussCursorStatement sqlStatement = new OpenGaussCursorStatement();
sqlStatement.setSelect(selectStatement);
SelectStatementContext selectStatementContext = new
SelectStatementContext(createShardingSphereMetaData(database),
Collections.emptyList(),
- selectStatement, DefaultDatabase.LOGIC_NAME);
+ selectStatement, DefaultDatabase.LOGIC_NAME,
Collections.emptyList());
when(result.getSelectStatementContext()).thenReturn(selectStatementContext);
when(result.getSqlStatement()).thenReturn(sqlStatement);
return result;
diff --git
a/proxy/backend/type/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemCatalogAdminQueryExecutorTest.java
b/proxy/backend/type/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemCatalogAdminQueryExecutorTest.java
index 1ef53688ec5..afdfa659679 100644
---
a/proxy/backend/type/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemCatalogAdminQueryExecutorTest.java
+++
b/proxy/backend/type/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemCatalogAdminQueryExecutorTest.java
@@ -88,7 +88,7 @@ class OpenGaussSystemCatalogAdminQueryExecutorTest {
ShardingSphereMetaData metaData =
new ShardingSphereMetaData(databases,
mock(ResourceMetaData.class, RETURNS_DEEP_STUBS), new
RuleMetaData(Collections.singletonList(sqlFederationRule)), props);
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData()).thenReturn(metaData);
- SelectStatementContext sqlStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), sqlStatement,
"sharding_db");
+ SelectStatementContext sqlStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), sqlStatement,
"sharding_db", Collections.emptyList());
OpenGaussSystemCatalogAdminQueryExecutor executor = new
OpenGaussSystemCatalogAdminQueryExecutor(sqlStatementContext,
"select datname, datcompatibility from pg_database where
datname = 'sharding_db'", "sharding_db", Collections.emptyList());
executor.execute(connectionSession);
@@ -151,7 +151,7 @@ class OpenGaussSystemCatalogAdminQueryExecutorTest {
ShardingSphereMetaData metaData =
new ShardingSphereMetaData(databases,
mock(ResourceMetaData.class, RETURNS_DEEP_STUBS), new
RuleMetaData(Collections.singletonList(sqlFederationRule)), props);
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData()).thenReturn(metaData);
- SelectStatementContext sqlStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), sqlStatement,
"sharding_db");
+ SelectStatementContext sqlStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), sqlStatement,
"sharding_db", Collections.emptyList());
OpenGaussSystemCatalogAdminQueryExecutor executor =
new
OpenGaussSystemCatalogAdminQueryExecutor(sqlStatementContext, "select
VERSION()", "sharding_db", Collections.emptyList());
ConnectionSession connectionSession = mock(ConnectionSession.class);
@@ -185,7 +185,7 @@ class OpenGaussSystemCatalogAdminQueryExecutorTest {
ShardingSphereMetaData metaData =
new ShardingSphereMetaData(databases,
mock(ResourceMetaData.class, RETURNS_DEEP_STUBS), new
RuleMetaData(Collections.singletonList(sqlFederationRule)), props);
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData()).thenReturn(metaData);
- SelectStatementContext sqlStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), sqlStatement,
"sharding_db");
+ SelectStatementContext sqlStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), sqlStatement,
"sharding_db", Collections.emptyList());
OpenGaussSystemCatalogAdminQueryExecutor executor =
new
OpenGaussSystemCatalogAdminQueryExecutor(sqlStatementContext, "select
intervaltonum(gs_password_deadline())", "sharding_db", Collections.emptyList());
ConnectionSession connectionSession = mock(ConnectionSession.class);
@@ -221,7 +221,7 @@ class OpenGaussSystemCatalogAdminQueryExecutorTest {
ShardingSphereMetaData metaData =
new ShardingSphereMetaData(databases,
mock(ResourceMetaData.class, RETURNS_DEEP_STUBS), new
RuleMetaData(Collections.singletonList(sqlFederationRule)), props);
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData()).thenReturn(metaData);
- SelectStatementContext sqlStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), sqlStatement,
"sharding_db");
+ SelectStatementContext sqlStatementContext = new
SelectStatementContext(metaData, Collections.emptyList(), sqlStatement,
"sharding_db", Collections.emptyList());
OpenGaussSystemCatalogAdminQueryExecutor executor =
new
OpenGaussSystemCatalogAdminQueryExecutor(sqlStatementContext, "select
gs_password_notifytime()", "sharding_db", Collections.emptyList());
ConnectionSession connectionSession = mock(ConnectionSession.class);
diff --git
a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
index 86972df45ac..4b0227a5453 100644
---
a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
+++
b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
@@ -110,6 +110,7 @@ class MySQLComStmtPrepareExecutorTest {
when(packet.getSQL()).thenReturn(sql);
when(packet.getHintValueContext()).thenReturn(new HintValueContext());
when(connectionSession.getConnectionId()).thenReturn(1);
+ when(connectionSession.getDefaultDatabaseName()).thenReturn("foo_db");
MySQLStatementIdGenerator.getInstance().registerConnection(1);
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/MySQLContainer.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/MySQLContainer.java
index 91da286900f..55613568514 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/MySQLContainer.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/impl/MySQLContainer.java
@@ -41,7 +41,7 @@ public final class MySQLContainer extends
DockerStorageContainer {
private final StorageContainerConfiguration storageContainerConfig;
public MySQLContainer(final String containerImage, final
StorageContainerConfiguration storageContainerConfig) {
- super(TypedSPILoader.getService(DatabaseType.class, "MySQL"),
Strings.isNullOrEmpty(containerImage) ? "mysql:8.0" : containerImage);
+ super(TypedSPILoader.getService(DatabaseType.class, "MySQL"),
Strings.isNullOrEmpty(containerImage) ? "mysql:8.2.0" : containerImage);
this.storageContainerConfig = storageContainerConfig;
}
diff --git
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/dataset/row/DataSetRow.java
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/dataset/row/DataSetRow.java
index 7f4de97ddce..dbfdbbc34da 100644
---
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/dataset/row/DataSetRow.java
+++
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/dataset/row/DataSetRow.java
@@ -26,6 +26,7 @@ import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import java.util.List;
+import java.util.stream.Collectors;
/**
* Data set row.
@@ -36,6 +37,8 @@ import java.util.List;
@EqualsAndHashCode
public final class DataSetRow {
+ private static final String E2E_DATA_DELIMITER = "{E2E_DATA_DELIMITER}";
+
@XmlAttribute(name = "data-node")
private String dataNode;
@@ -49,6 +52,6 @@ public final class DataSetRow {
* @return split values
*/
public List<String> splitValues(final String delimiter) {
- return Splitter.on(delimiter).trimResults().splitToList(values);
+ return
Splitter.on(delimiter).trimResults().splitToList(values).stream().map(each ->
each.replace(E2E_DATA_DELIMITER, delimiter)).collect(Collectors.toList());
}
}