This is an automated email from the ASF dual-hosted git repository.
tuichenchuxin 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 ea1a48b9a50 Refactor bounded column and bounded table info in
ColumnSegment and TableNameSegment (#28205)
ea1a48b9a50 is described below
commit ea1a48b9a507d807134bf5d8bec79e13672dd6de
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Mon Aug 21 18:07:30 2023 +0800
Refactor bounded column and bounded table info in ColumnSegment and
TableNameSegment (#28205)
---
.../EncryptPredicateColumnTokenGenerator.java | 4 +-
.../generator/EncryptProjectionTokenGenerator.java | 4 +-
.../EncryptProjectionTokenGeneratorTest.java | 10 +-
.../fixture/EncryptGeneratorFixtureBuilder.java | 9 +-
.../select/projection/engine/ProjectionEngine.java | 4 +-
.../expression/impl/ColumnSegmentBinder.java | 14 ++-
.../from/impl/SimpleTableSegmentBinder.java | 11 +--
.../from/impl/SubqueryTableSegmentBinder.java | 8 +-
.../from/impl/JoinTableSegmentBinderTest.java | 108 ++++++++++-----------
.../from/impl/SimpleTableSegmentBinderTest.java | 42 ++++----
.../common/segment/dml/column/ColumnSegment.java | 16 +--
.../ColumnSegmentBoundedInfo.java} | 24 ++---
.../TableSegmentBoundedInfo.java} | 19 +---
.../segment/generic/table/TableNameSegment.java | 5 +-
14 files changed, 142 insertions(+), 136 deletions(-)
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGenerator.java
index db91e18f35e..eda1c1cc2a0 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGenerator.java
@@ -127,8 +127,8 @@ public final class EncryptPredicateColumnTokenGenerator
implements CollectionSQL
}
private EncryptAlgorithm<?, ?> getColumnEncryptor(final ColumnSegment
columnSegment) {
- String tableName = columnSegment.getOriginalTable().getValue();
- String columnName = columnSegment.getOriginalColumn().getValue();
+ String tableName =
columnSegment.getColumnBoundedInfo().getOriginalTable().getValue();
+ String columnName =
columnSegment.getColumnBoundedInfo().getOriginalColumn().getValue();
if (!encryptRule.findEncryptTable(tableName).isPresent() ||
!encryptRule.getEncryptTable(tableName).isEncryptColumn(columnName)) {
return null;
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
index a9498f4c1fe..e4130989c71 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
@@ -111,8 +111,8 @@ public final class EncryptProjectionTokenGenerator
implements CollectionSQLToken
private ColumnProjection buildColumnProjection(final
ColumnProjectionSegment segment) {
IdentifierValue owner =
segment.getColumn().getOwner().map(OwnerSegment::getIdentifier).orElse(null);
ColumnProjection result = new ColumnProjection(owner,
segment.getColumn().getIdentifier(), segment.getAliasName().isPresent() ?
segment.getAlias().orElse(null) : null, databaseType);
- result.setOriginalColumn(segment.getColumn().getOriginalColumn());
- result.setOriginalTable(segment.getColumn().getOriginalTable());
+
result.setOriginalColumn(segment.getColumn().getColumnBoundedInfo().getOriginalColumn());
+
result.setOriginalTable(segment.getColumn().getColumnBoundedInfo().getOriginalTable());
return result;
}
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGeneratorTest.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGeneratorTest.java
index b1f0893683e..712e5fffcee 100644
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGeneratorTest.java
+++
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGeneratorTest.java
@@ -23,6 +23,7 @@ import
org.apache.shardingsphere.encrypt.rule.column.EncryptColumn;
import
org.apache.shardingsphere.infra.binder.context.segment.select.projection.impl.ColumnProjection;
import
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
+import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.UnsupportedSQLOperationException;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.SQLToken;
@@ -33,6 +34,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.Projecti
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ShorthandProjectionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.AliasSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.bounded.ColumnSegmentBoundedInfo;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
@@ -82,8 +84,8 @@ class EncryptProjectionTokenGeneratorTest {
SimpleTableSegment doctorTable = new SimpleTableSegment(new
TableNameSegment(0, 0, new IdentifierValue("doctor")));
doctorTable.setAlias(new AliasSegment(0, 0, new IdentifierValue("a")));
ColumnSegment column = new ColumnSegment(0, 0, new
IdentifierValue("mobile"));
- column.setOriginalColumn(new IdentifierValue("mobile"));
- column.setOriginalTable(new IdentifierValue("doctor"));
+ column.setColumnBoundedInfo(new ColumnSegmentBoundedInfo(new
IdentifierValue(DefaultDatabase.LOGIC_NAME), new
IdentifierValue(DefaultDatabase.LOGIC_NAME), new IdentifierValue("doctor"),
+ new IdentifierValue("mobile")));
column.setOwner(new OwnerSegment(0, 0, new IdentifierValue("a")));
ProjectionsSegment projections = mock(ProjectionsSegment.class);
when(projections.getProjections()).thenReturn(Collections.singletonList(new
ColumnProjectionSegment(column)));
@@ -104,8 +106,8 @@ class EncryptProjectionTokenGeneratorTest {
SimpleTableSegment doctorTable = new SimpleTableSegment(new
TableNameSegment(0, 0, new IdentifierValue("doctor")));
doctorTable.setAlias(new AliasSegment(0, 0, new IdentifierValue("a")));
ColumnSegment column = new ColumnSegment(0, 0, new
IdentifierValue("mobile"));
- column.setOriginalColumn(new IdentifierValue("mobile"));
- column.setOriginalTable(new IdentifierValue("doctor"));
+ column.setColumnBoundedInfo(new ColumnSegmentBoundedInfo(new
IdentifierValue(DefaultDatabase.LOGIC_NAME), new
IdentifierValue(DefaultDatabase.LOGIC_NAME), new IdentifierValue("doctor"),
+ new IdentifierValue("mobile")));
column.setOwner(new OwnerSegment(0, 0, new IdentifierValue("a")));
ProjectionsSegment projections = mock(ProjectionsSegment.class);
when(projections.getProjections()).thenReturn(Collections.singletonList(new
ColumnProjectionSegment(column)));
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/fixture/EncryptGeneratorFixtureBuilder.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/fixture/EncryptGeneratorFixtureBuilder.java
index feadcd3acfe..22339c8b13b 100644
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/fixture/EncryptGeneratorFixtureBuilder.java
+++
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/fixture/EncryptGeneratorFixtureBuilder.java
@@ -49,6 +49,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.Expressi
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.LiteralExpressionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.ParameterMarkerExpressionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.WhereSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.bounded.ColumnSegmentBoundedInfo;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement;
@@ -177,11 +178,11 @@ public final class EncryptGeneratorFixtureBuilder {
*/
public static SQLStatementContext createSelectStatementContext() {
ColumnSegment leftColumn = new ColumnSegment(0, 0, new
IdentifierValue("user_name"));
- leftColumn.setOriginalColumn(new IdentifierValue("user_name"));
- leftColumn.setOriginalTable(new IdentifierValue("t_user"));
+ leftColumn.setColumnBoundedInfo(new ColumnSegmentBoundedInfo(new
IdentifierValue(DefaultDatabase.LOGIC_NAME), new
IdentifierValue(DefaultDatabase.LOGIC_NAME), new IdentifierValue("t_user"),
+ new IdentifierValue("user_name")));
ColumnSegment rightColumn = new ColumnSegment(0, 0, new
IdentifierValue("user_id"));
- rightColumn.setOriginalColumn(new IdentifierValue("user_id"));
- rightColumn.setOriginalTable(new IdentifierValue("t_user"));
+ rightColumn.setColumnBoundedInfo(new ColumnSegmentBoundedInfo(new
IdentifierValue(DefaultDatabase.LOGIC_NAME), new
IdentifierValue(DefaultDatabase.LOGIC_NAME), new IdentifierValue("t_user"),
+ new IdentifierValue("user_id")));
SelectStatementContext result = mock(SelectStatementContext.class);
when(result.getJoinConditions()).thenReturn(Collections.singleton(new
BinaryOperationExpression(0, 0, leftColumn, rightColumn, "=", "")));
return result;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/engine/ProjectionEngine.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/engine/ProjectionEngine.java
index 472f7f60ba4..20460a05229 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/engine/ProjectionEngine.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/projection/engine/ProjectionEngine.java
@@ -111,8 +111,8 @@ public final class ProjectionEngine {
IdentifierValue owner =
projectionSegment.getColumn().getOwner().isPresent() ?
projectionSegment.getColumn().getOwner().get().getIdentifier() : null;
IdentifierValue alias = projectionSegment.getAliasName().isPresent() ?
projectionSegment.getAlias().orElse(null) : null;
ColumnProjection result = new ColumnProjection(owner,
projectionSegment.getColumn().getIdentifier(), alias, databaseType);
-
result.setOriginalColumn(projectionSegment.getColumn().getOriginalColumn());
-
result.setOriginalTable(projectionSegment.getColumn().getOriginalTable());
+
result.setOriginalColumn(projectionSegment.getColumn().getColumnBoundedInfo().getOriginalColumn());
+
result.setOriginalTable(projectionSegment.getColumn().getColumnBoundedInfo().getOriginalTable());
return result;
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ColumnSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ColumnSegmentBinder.java
index c5231edac8d..bac14132113 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ColumnSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/expression/impl/ColumnSegmentBinder.java
@@ -27,6 +27,8 @@ import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePrecondition
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ColumnProjectionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ProjectionSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.bounded.ColumnSegmentBoundedInfo;
+import
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
import java.util.Arrays;
import java.util.Collection;
@@ -61,10 +63,14 @@ public final class ColumnSegmentBinder {
segment.getOwner().ifPresent(result::setOwner);
Collection<TableSegmentBinderContext> tableBinderContextValues =
getTableSegmentBinderContexts(segment, statementBinderContext,
tableBinderContexts, outerTableBinderContexts);
Optional<ColumnSegment> inputColumnSegment =
findInputColumnSegment(segment.getIdentifier().getValue(),
tableBinderContextValues);
- inputColumnSegment.ifPresent(optional ->
result.setOriginalDatabase(optional.getOriginalDatabase()));
- inputColumnSegment.ifPresent(optional ->
result.setOriginalSchema(optional.getOriginalSchema()));
- result.setOriginalTable(null == segment.getOriginalTable() ?
inputColumnSegment.map(ColumnSegment::getOriginalTable).orElse(null) :
segment.getOriginalTable());
- result.setOriginalColumn(null == segment.getOriginalColumn() ?
segment.getIdentifier() : segment.getOriginalColumn());
+ IdentifierValue originalDatabase = inputColumnSegment.map(optional ->
optional.getColumnBoundedInfo().getOriginalDatabase()).orElse(null);
+ IdentifierValue originalSchema = inputColumnSegment.map(optional ->
optional.getColumnBoundedInfo().getOriginalSchema()).orElse(null);
+ IdentifierValue originalTable = null ==
segment.getColumnBoundedInfo().getOriginalTable() ?
inputColumnSegment.map(optional ->
optional.getColumnBoundedInfo().getOriginalTable()).orElse(null)
+ : segment.getColumnBoundedInfo().getOriginalTable();
+ IdentifierValue originalColumn =
+ null == segment.getColumnBoundedInfo().getOriginalColumn() ?
inputColumnSegment.map(optional ->
optional.getColumnBoundedInfo().getOriginalColumn()).orElse(null)
+ : segment.getColumnBoundedInfo().getOriginalColumn();
+ result.setColumnBoundedInfo(new
ColumnSegmentBoundedInfo(originalDatabase, originalSchema, originalTable,
originalColumn));
return result;
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
index dc82e714093..2216a39d1d2 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
@@ -33,6 +33,8 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.Column
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ColumnProjectionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ProjectionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.bounded.ColumnSegmentBoundedInfo;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.bounded.TableSegmentBoundedInfo;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
@@ -77,8 +79,7 @@ public final class SimpleTableSegmentBinder {
tableBinderContexts.put(segment.getAliasName().orElseGet(() ->
segment.getTableName().getIdentifier().getValue()),
createSimpleTableBinderContext(segment, schema,
originalDatabase, originalSchema, statementBinderContext.getDatabaseType()));
TableNameSegment tableNameSegment = new
TableNameSegment(segment.getTableName().getStartIndex(),
segment.getTableName().getStopIndex(), segment.getTableName().getIdentifier());
- tableNameSegment.setOriginalDatabase(originalDatabase);
- tableNameSegment.setOriginalSchema(originalSchema);
+ tableNameSegment.setTableBoundedInfo(new
TableSegmentBoundedInfo(originalDatabase, originalSchema));
SimpleTableSegment result = new SimpleTableSegment(tableNameSegment);
segment.getOwner().ifPresent(result::setOwner);
segment.getAliasSegment().ifPresent(result::setAlias);
@@ -113,10 +114,8 @@ public final class SimpleTableSegmentBinder {
for (ShardingSphereColumn each : columnNames) {
ColumnSegment columnSegment = new ColumnSegment(0, 0, new
IdentifierValue(each.getName(), dialectDatabaseMetaData.getQuoteCharacter()));
columnSegment.setOwner(new OwnerSegment(0, 0,
segment.getAlias().orElse(segment.getTableName().getIdentifier())));
- columnSegment.setOriginalDatabase(originalDatabase);
- columnSegment.setOriginalSchema(originalSchema);
-
columnSegment.setOriginalTable(segment.getTableName().getIdentifier());
- columnSegment.setOriginalColumn(new
IdentifierValue(each.getName(), dialectDatabaseMetaData.getQuoteCharacter()));
+ columnSegment.setColumnBoundedInfo(new
ColumnSegmentBoundedInfo(originalDatabase, originalSchema,
segment.getTableName().getIdentifier(),
+ new IdentifierValue(each.getName(),
dialectDatabaseMetaData.getQuoteCharacter())));
ColumnProjectionSegment columnProjectionSegment = new
ColumnProjectionSegment(columnSegment);
columnProjectionSegment.setVisible(each.isVisible());
projectionSegments.add(columnProjectionSegment);
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SubqueryTableSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SubqueryTableSegmentBinder.java
index 96486d7ae9a..d1ecb081295 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SubqueryTableSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SubqueryTableSegmentBinder.java
@@ -30,6 +30,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.Projecti
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ShorthandProjectionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.AliasSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.bounded.ColumnSegmentBoundedInfo;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SubqueryTableSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
@@ -83,10 +84,9 @@ public final class SubqueryTableSegmentBinder {
if (!Strings.isNullOrEmpty(subqueryTableName.getValue())) {
newColumnSegment.setOwner(new OwnerSegment(0, 0,
subqueryTableName));
}
-
newColumnSegment.setOriginalColumn(originalColumn.getColumn().getOriginalColumn());
-
newColumnSegment.setOriginalTable(originalColumn.getColumn().getOriginalTable());
-
newColumnSegment.setOriginalSchema(originalColumn.getColumn().getOriginalSchema());
-
newColumnSegment.setOriginalDatabase(originalColumn.getColumn().getOriginalDatabase());
+ newColumnSegment.setColumnBoundedInfo(
+ new
ColumnSegmentBoundedInfo(originalColumn.getColumn().getColumnBoundedInfo().getOriginalDatabase(),
originalColumn.getColumn().getColumnBoundedInfo().getOriginalSchema(),
+
originalColumn.getColumn().getColumnBoundedInfo().getOriginalTable(),
originalColumn.getColumn().getColumnBoundedInfo().getOriginalColumn()));
ColumnProjectionSegment result = new
ColumnProjectionSegment(newColumnSegment);
result.setVisible(originalColumn.isVisible());
return result;
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/JoinTableSegmentBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/JoinTableSegmentBinderTest.java
index cdd65583524..15b4b59478a 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/JoinTableSegmentBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/JoinTableSegmentBinderTest.java
@@ -68,11 +68,11 @@ class JoinTableSegmentBinderTest {
Map<String, TableSegmentBinderContext> tableBinderContexts = new
CaseInsensitiveMap<>();
JoinTableSegment actual =
JoinTableSegmentBinder.bind(joinTableSegment, new
SQLStatementBinderContext(metaData, DefaultDatabase.LOGIC_NAME, databaseType),
tableBinderContexts);
assertTrue(actual.getLeft() instanceof SimpleTableSegment);
- assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
assertTrue(actual.getRight() instanceof SimpleTableSegment);
- assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
assertJoinTableProjectionSegments(actual.getJoinTableProjectionSegments());
assertTrue(tableBinderContexts.containsKey("o"));
assertTrue(tableBinderContexts.containsKey("i"));
@@ -82,20 +82,20 @@ class JoinTableSegmentBinderTest {
List<ProjectionSegment> actual = new
ArrayList<>(joinTableProjectionSegments);
assertThat(actual.size(), is(7));
assertTrue(actual.get(0) instanceof ColumnProjectionSegment);
- assertThat(((ColumnProjectionSegment)
actual.get(0)).getColumn().getOriginalColumn().getValue(), is("order_id"));
- assertThat(((ColumnProjectionSegment)
actual.get(0)).getColumn().getOriginalTable().getValue(), is("t_order"));
- assertThat(((ColumnProjectionSegment)
actual.get(1)).getColumn().getOriginalColumn().getValue(), is("user_id"));
- assertThat(((ColumnProjectionSegment)
actual.get(1)).getColumn().getOriginalTable().getValue(), is("t_order"));
- assertThat(((ColumnProjectionSegment)
actual.get(2)).getColumn().getOriginalColumn().getValue(), is("status"));
- assertThat(((ColumnProjectionSegment)
actual.get(2)).getColumn().getOriginalTable().getValue(), is("t_order"));
- assertThat(((ColumnProjectionSegment)
actual.get(3)).getColumn().getOriginalColumn().getValue(), is("item_id"));
- assertThat(((ColumnProjectionSegment)
actual.get(3)).getColumn().getOriginalTable().getValue(), is("t_order_item"));
- assertThat(((ColumnProjectionSegment)
actual.get(4)).getColumn().getOriginalColumn().getValue(), is("order_id"));
- assertThat(((ColumnProjectionSegment)
actual.get(4)).getColumn().getOriginalTable().getValue(), is("t_order_item"));
- assertThat(((ColumnProjectionSegment)
actual.get(5)).getColumn().getOriginalColumn().getValue(), is("user_id"));
- assertThat(((ColumnProjectionSegment)
actual.get(5)).getColumn().getOriginalTable().getValue(), is("t_order_item"));
- assertThat(((ColumnProjectionSegment)
actual.get(6)).getColumn().getOriginalColumn().getValue(), is("status"));
- assertThat(((ColumnProjectionSegment)
actual.get(6)).getColumn().getOriginalTable().getValue(), is("t_order_item"));
+ assertThat(((ColumnProjectionSegment)
actual.get(0)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("order_id"));
+ assertThat(((ColumnProjectionSegment)
actual.get(0)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order"));
+ assertThat(((ColumnProjectionSegment)
actual.get(1)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("user_id"));
+ assertThat(((ColumnProjectionSegment)
actual.get(1)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order"));
+ assertThat(((ColumnProjectionSegment)
actual.get(2)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("status"));
+ assertThat(((ColumnProjectionSegment)
actual.get(2)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order"));
+ assertThat(((ColumnProjectionSegment)
actual.get(3)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("item_id"));
+ assertThat(((ColumnProjectionSegment)
actual.get(3)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order_item"));
+ assertThat(((ColumnProjectionSegment)
actual.get(4)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("order_id"));
+ assertThat(((ColumnProjectionSegment)
actual.get(4)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order_item"));
+ assertThat(((ColumnProjectionSegment)
actual.get(5)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("user_id"));
+ assertThat(((ColumnProjectionSegment)
actual.get(5)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order_item"));
+ assertThat(((ColumnProjectionSegment)
actual.get(6)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("status"));
+ assertThat(((ColumnProjectionSegment)
actual.get(6)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order_item"));
}
@Test
@@ -109,11 +109,11 @@ class JoinTableSegmentBinderTest {
Map<String, TableSegmentBinderContext> tableBinderContexts = new
CaseInsensitiveMap<>();
JoinTableSegment actual =
JoinTableSegmentBinder.bind(joinTableSegment, new
SQLStatementBinderContext(metaData, DefaultDatabase.LOGIC_NAME, databaseType),
tableBinderContexts);
assertTrue(actual.getLeft() instanceof SimpleTableSegment);
- assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
assertTrue(actual.getRight() instanceof SimpleTableSegment);
- assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
assertJoinTableProjectionSegments(actual.getJoinTableProjectionSegments());
assertTrue(tableBinderContexts.containsKey("t_order"));
assertTrue(tableBinderContexts.containsKey("t_order_item"));
@@ -134,11 +134,11 @@ class JoinTableSegmentBinderTest {
Map<String, TableSegmentBinderContext> tableBinderContexts = new
CaseInsensitiveMap<>();
JoinTableSegment actual =
JoinTableSegmentBinder.bind(joinTableSegment, new
SQLStatementBinderContext(metaData, DefaultDatabase.LOGIC_NAME, databaseType),
tableBinderContexts);
assertTrue(actual.getLeft() instanceof SimpleTableSegment);
- assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
assertTrue(actual.getRight() instanceof SimpleTableSegment);
- assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
assertJoinTableProjectionSegmentsWithNaturalJoin(actual.getJoinTableProjectionSegments());
assertTrue(tableBinderContexts.containsKey("o"));
assertTrue(tableBinderContexts.containsKey("i"));
@@ -148,14 +148,14 @@ class JoinTableSegmentBinderTest {
List<ProjectionSegment> actual = new
ArrayList<>(joinTableProjectionSegments);
assertThat(actual.size(), is(4));
assertTrue(actual.get(0) instanceof ColumnProjectionSegment);
- assertThat(((ColumnProjectionSegment)
actual.get(0)).getColumn().getOriginalColumn().getValue(), is("order_id"));
- assertThat(((ColumnProjectionSegment)
actual.get(0)).getColumn().getOriginalTable().getValue(), is("t_order"));
- assertThat(((ColumnProjectionSegment)
actual.get(1)).getColumn().getOriginalColumn().getValue(), is("user_id"));
- assertThat(((ColumnProjectionSegment)
actual.get(1)).getColumn().getOriginalTable().getValue(), is("t_order"));
- assertThat(((ColumnProjectionSegment)
actual.get(2)).getColumn().getOriginalColumn().getValue(), is("status"));
- assertThat(((ColumnProjectionSegment)
actual.get(2)).getColumn().getOriginalTable().getValue(), is("t_order"));
- assertThat(((ColumnProjectionSegment)
actual.get(3)).getColumn().getOriginalColumn().getValue(), is("item_id"));
- assertThat(((ColumnProjectionSegment)
actual.get(3)).getColumn().getOriginalTable().getValue(), is("t_order_item"));
+ assertThat(((ColumnProjectionSegment)
actual.get(0)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("order_id"));
+ assertThat(((ColumnProjectionSegment)
actual.get(0)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order"));
+ assertThat(((ColumnProjectionSegment)
actual.get(1)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("user_id"));
+ assertThat(((ColumnProjectionSegment)
actual.get(1)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order"));
+ assertThat(((ColumnProjectionSegment)
actual.get(2)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("status"));
+ assertThat(((ColumnProjectionSegment)
actual.get(2)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order"));
+ assertThat(((ColumnProjectionSegment)
actual.get(3)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("item_id"));
+ assertThat(((ColumnProjectionSegment)
actual.get(3)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order_item"));
}
@Test
@@ -173,11 +173,11 @@ class JoinTableSegmentBinderTest {
Map<String, TableSegmentBinderContext> tableBinderContexts = new
CaseInsensitiveMap<>();
JoinTableSegment actual =
JoinTableSegmentBinder.bind(joinTableSegment, new
SQLStatementBinderContext(metaData, DefaultDatabase.LOGIC_NAME, databaseType),
tableBinderContexts);
assertTrue(actual.getLeft() instanceof SimpleTableSegment);
- assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getLeft()).getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
assertTrue(actual.getRight() instanceof SimpleTableSegment);
- assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
assertJoinTableProjectionSegmentsWithUsing(actual.getJoinTableProjectionSegments());
assertTrue(tableBinderContexts.containsKey("o"));
assertTrue(tableBinderContexts.containsKey("i"));
@@ -187,16 +187,16 @@ class JoinTableSegmentBinderTest {
List<ProjectionSegment> actual = new
ArrayList<>(joinTableProjectionSegments);
assertThat(actual.size(), is(5));
assertTrue(actual.get(0) instanceof ColumnProjectionSegment);
- assertThat(((ColumnProjectionSegment)
actual.get(0)).getColumn().getOriginalColumn().getValue(), is("status"));
- assertThat(((ColumnProjectionSegment)
actual.get(0)).getColumn().getOriginalTable().getValue(), is("t_order"));
- assertThat(((ColumnProjectionSegment)
actual.get(1)).getColumn().getOriginalColumn().getValue(), is("order_id"));
- assertThat(((ColumnProjectionSegment)
actual.get(1)).getColumn().getOriginalTable().getValue(), is("t_order"));
- assertThat(((ColumnProjectionSegment)
actual.get(2)).getColumn().getOriginalColumn().getValue(), is("user_id"));
- assertThat(((ColumnProjectionSegment)
actual.get(2)).getColumn().getOriginalTable().getValue(), is("t_order"));
- assertThat(((ColumnProjectionSegment)
actual.get(3)).getColumn().getOriginalColumn().getValue(), is("item_id"));
- assertThat(((ColumnProjectionSegment)
actual.get(3)).getColumn().getOriginalTable().getValue(), is("t_order_item"));
- assertThat(((ColumnProjectionSegment)
actual.get(4)).getColumn().getOriginalColumn().getValue(), is("user_id"));
- assertThat(((ColumnProjectionSegment)
actual.get(4)).getColumn().getOriginalTable().getValue(), is("t_order_item"));
+ assertThat(((ColumnProjectionSegment)
actual.get(0)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("status"));
+ assertThat(((ColumnProjectionSegment)
actual.get(0)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order"));
+ assertThat(((ColumnProjectionSegment)
actual.get(1)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("order_id"));
+ assertThat(((ColumnProjectionSegment)
actual.get(1)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order"));
+ assertThat(((ColumnProjectionSegment)
actual.get(2)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("user_id"));
+ assertThat(((ColumnProjectionSegment)
actual.get(2)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order"));
+ assertThat(((ColumnProjectionSegment)
actual.get(3)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("item_id"));
+ assertThat(((ColumnProjectionSegment)
actual.get(3)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order_item"));
+ assertThat(((ColumnProjectionSegment)
actual.get(4)).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
is("user_id"));
+ assertThat(((ColumnProjectionSegment)
actual.get(4)).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
is("t_order_item"));
}
@Test
@@ -212,14 +212,14 @@ class JoinTableSegmentBinderTest {
JoinTableSegment actual =
JoinTableSegmentBinder.bind(joinTableSegment, new
SQLStatementBinderContext(metaData, DefaultDatabase.LOGIC_NAME, databaseType),
tableBinderContexts);
assertTrue(actual.getLeft() instanceof JoinTableSegment);
assertTrue(((JoinTableSegment) actual.getLeft()).getLeft() instanceof
SimpleTableSegment);
- assertThat(((SimpleTableSegment) ((JoinTableSegment)
actual.getLeft()).getLeft()).getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((SimpleTableSegment) ((JoinTableSegment)
actual.getLeft()).getLeft()).getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment) ((JoinTableSegment)
actual.getLeft()).getLeft()).getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment) ((JoinTableSegment)
actual.getLeft()).getLeft()).getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
assertTrue(((JoinTableSegment) actual.getLeft()).getRight() instanceof
SimpleTableSegment);
- assertThat(((SimpleTableSegment) ((JoinTableSegment)
actual.getLeft()).getRight()).getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((SimpleTableSegment) ((JoinTableSegment)
actual.getLeft()).getRight()).getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment) ((JoinTableSegment)
actual.getLeft()).getRight()).getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment) ((JoinTableSegment)
actual.getLeft()).getRight()).getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
assertTrue(actual.getRight() instanceof SimpleTableSegment);
- assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+ assertThat(((SimpleTableSegment)
actual.getRight()).getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
assertThat(actual.getJoinTableProjectionSegments().size(), is(10));
assertTrue(tableBinderContexts.containsKey("o"));
assertTrue(tableBinderContexts.containsKey("o2"));
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinderTest.java
index 64d8d823e51..b9a9f767a65 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinderTest.java
@@ -54,31 +54,37 @@ class SimpleTableSegmentBinderTest {
ShardingSphereMetaData metaData = createMetaData();
Map<String, TableSegmentBinderContext> tableBinderContexts = new
CaseInsensitiveMap<>();
SimpleTableSegment actual =
SimpleTableSegmentBinder.bind(simpleTableSegment, new
SQLStatementBinderContext(metaData, DefaultDatabase.LOGIC_NAME, databaseType),
tableBinderContexts);
- assertThat(actual.getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(actual.getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+
assertThat(actual.getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+
assertThat(actual.getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
assertTrue(tableBinderContexts.containsKey("t_order"));
assertThat(tableBinderContexts.get("t_order").getProjectionSegments().size(),
is(3));
assertTrue(tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("user_id")
instanceof ColumnProjectionSegment);
- assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("user_id")).getColumn().getOriginalDatabase().getValue(),
+ assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("user_id")).getColumn().getColumnBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("user_id")).getColumn().getOriginalSchema().getValue(),
+ assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("user_id")).getColumn().getColumnBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("user_id")).getColumn().getOriginalTable().getValue(),
is("t_order"));
- assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("user_id")).getColumn().getOriginalColumn().getValue(),
is("user_id"));
+ assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("user_id")).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
+ is("t_order"));
+ assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("user_id")).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
+ is("user_id"));
assertTrue(tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("order_id")
instanceof ColumnProjectionSegment);
- assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("order_id")).getColumn().getOriginalDatabase().getValue(),
+ assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("order_id")).getColumn().getColumnBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("order_id")).getColumn().getOriginalSchema().getValue(),
+ assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("order_id")).getColumn().getColumnBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("order_id")).getColumn().getOriginalTable().getValue(),
is("t_order"));
- assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("order_id")).getColumn().getOriginalColumn().getValue(),
is("order_id"));
+ assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("order_id")).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
+ is("t_order"));
+ assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("order_id")).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
+ is("order_id"));
assertTrue(tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("status")
instanceof ColumnProjectionSegment);
- assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("status")).getColumn().getOriginalDatabase().getValue(),
+ assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("status")).getColumn().getColumnBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("status")).getColumn().getOriginalSchema().getValue(),
+ assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("status")).getColumn().getColumnBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("status")).getColumn().getOriginalTable().getValue(),
is("t_order"));
- assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("status")).getColumn().getOriginalColumn().getValue(),
is("status"));
+ assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("status")).getColumn().getColumnBoundedInfo().getOriginalTable().getValue(),
+ is("t_order"));
+ assertThat(((ColumnProjectionSegment)
tableBinderContexts.get("t_order").getProjectionSegmentByColumnLabel("status")).getColumn().getColumnBoundedInfo().getOriginalColumn().getValue(),
+ is("status"));
}
@Test
@@ -88,8 +94,8 @@ class SimpleTableSegmentBinderTest {
ShardingSphereMetaData metaData = createMetaData();
Map<String, TableSegmentBinderContext> tableBinderContexts = new
CaseInsensitiveMap<>();
SimpleTableSegment actual =
SimpleTableSegmentBinder.bind(simpleTableSegment, new
SQLStatementBinderContext(metaData, DefaultDatabase.LOGIC_NAME, databaseType),
tableBinderContexts);
- assertThat(actual.getTableName().getOriginalDatabase().getValue(),
is("sharding_db"));
- assertThat(actual.getTableName().getOriginalSchema().getValue(),
is("sharding_db"));
+
assertThat(actual.getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is("sharding_db"));
+
assertThat(actual.getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is("sharding_db"));
}
@Test
@@ -98,8 +104,8 @@ class SimpleTableSegmentBinderTest {
ShardingSphereMetaData metaData = createMetaData();
Map<String, TableSegmentBinderContext> tableBinderContexts = new
CaseInsensitiveMap<>();
SimpleTableSegment actual =
SimpleTableSegmentBinder.bind(simpleTableSegment, new
SQLStatementBinderContext(metaData, DefaultDatabase.LOGIC_NAME, databaseType),
tableBinderContexts);
- assertThat(actual.getTableName().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
- assertThat(actual.getTableName().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+
assertThat(actual.getTableName().getTableBoundedInfo().getOriginalDatabase().getValue(),
is(DefaultDatabase.LOGIC_NAME));
+
assertThat(actual.getTableName().getTableBoundedInfo().getOriginalSchema().getValue(),
is(DefaultDatabase.LOGIC_NAME));
}
private ShardingSphereMetaData createMetaData() {
diff --git
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/column/ColumnSegment.java
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/column/ColumnSegment.java
index 478f1f4d6ca..3ef6404d02d 100644
---
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/column/ColumnSegment.java
+++
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/column/ColumnSegment.java
@@ -18,11 +18,11 @@
package org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column;
import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import lombok.Setter;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerAvailable;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.bounded.ColumnSegmentBoundedInfo;
import
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
import java.util.List;
@@ -32,7 +32,6 @@ import java.util.stream.Collectors;
/**
* Column segment.
*/
-@RequiredArgsConstructor
@Getter
@Setter
public final class ColumnSegment implements ExpressionSegment, OwnerAvailable {
@@ -47,13 +46,14 @@ public final class ColumnSegment implements
ExpressionSegment, OwnerAvailable {
private OwnerSegment owner;
- private IdentifierValue originalDatabase;
+ private ColumnSegmentBoundedInfo columnBoundedInfo;
- private IdentifierValue originalSchema;
-
- private IdentifierValue originalTable;
-
- private IdentifierValue originalColumn;
+ public ColumnSegment(final int startIndex, final int stopIndex, final
IdentifierValue identifier) {
+ this.startIndex = startIndex;
+ this.stopIndex = stopIndex;
+ this.identifier = identifier;
+ columnBoundedInfo = new ColumnSegmentBoundedInfo(identifier);
+ }
/**
* Get qualified name with quote characters.
diff --git
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/TableNameSegment.java
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/bounded/ColumnSegmentBoundedInfo.java
similarity index 67%
copy from
parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/TableNameSegment.java
copy to
parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/bounded/ColumnSegmentBoundedInfo.java
index f0bf6db777f..da5433edb52 100644
---
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/TableNameSegment.java
+++
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/bounded/ColumnSegmentBoundedInfo.java
@@ -15,29 +15,31 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table;
+package
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.bounded;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import lombok.Setter;
-import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
/**
- * Table name segment.
+ * Column segment bounded info.
*/
@RequiredArgsConstructor
@Getter
-@Setter
-public final class TableNameSegment implements SQLSegment {
+public final class ColumnSegmentBoundedInfo {
- private final int startIndex;
+ private final IdentifierValue originalDatabase;
- private final int stopIndex;
+ private final IdentifierValue originalSchema;
- private final IdentifierValue identifier;
+ private final IdentifierValue originalTable;
- private IdentifierValue originalDatabase;
+ private final IdentifierValue originalColumn;
- private IdentifierValue originalSchema;
+ public ColumnSegmentBoundedInfo(final IdentifierValue originalColumn) {
+ this.originalDatabase = null;
+ this.originalSchema = null;
+ this.originalTable = null;
+ this.originalColumn = originalColumn;
+ }
}
diff --git
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/TableNameSegment.java
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/bounded/TableSegmentBoundedInfo.java
similarity index 71%
copy from
parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/TableNameSegment.java
copy to
parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/bounded/TableSegmentBoundedInfo.java
index f0bf6db777f..0523a0c8e69 100644
---
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/TableNameSegment.java
+++
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/bounded/TableSegmentBoundedInfo.java
@@ -15,29 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table;
+package
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.bounded;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import lombok.Setter;
-import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
/**
- * Table name segment.
+ * Table name bounded info.
*/
@RequiredArgsConstructor
@Getter
-@Setter
-public final class TableNameSegment implements SQLSegment {
+public final class TableSegmentBoundedInfo {
- private final int startIndex;
+ private final IdentifierValue originalDatabase;
- private final int stopIndex;
-
- private final IdentifierValue identifier;
-
- private IdentifierValue originalDatabase;
-
- private IdentifierValue originalSchema;
+ private final IdentifierValue originalSchema;
}
diff --git
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/TableNameSegment.java
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/TableNameSegment.java
index f0bf6db777f..4f73e26de67 100644
---
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/TableNameSegment.java
+++
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/generic/table/TableNameSegment.java
@@ -21,6 +21,7 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.bounded.TableSegmentBoundedInfo;
import
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
/**
@@ -37,7 +38,5 @@ public final class TableNameSegment implements SQLSegment {
private final IdentifierValue identifier;
- private IdentifierValue originalDatabase;
-
- private IdentifierValue originalSchema;
+ private TableSegmentBoundedInfo tableBoundedInfo;
}