未验证 提交 09281f69 编写于 作者: L Liang Zhang 提交者: GitHub

Rename PhysicalSchemaMetaData to ShardingSphereSchema (#8094)

* Rename PhysicalSchemaMetaData to ShardingSphereSchema

* Fix checkstyle
上级 4cd701e9
......@@ -28,7 +28,7 @@ import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecoratorEngine;
import org.apache.shardingsphere.infra.merge.engine.decorator.impl.TransparentResultDecorator;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
......@@ -39,10 +39,10 @@ import org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatemen
public final class EncryptResultDecoratorEngine implements ResultDecoratorEngine<EncryptRule> {
@Override
public ResultDecorator newInstance(final DatabaseType databaseType, final PhysicalSchemaMetaData schemaMetaData,
public ResultDecorator newInstance(final DatabaseType databaseType, final ShardingSphereSchema schema,
final EncryptRule encryptRule, final ConfigurationProperties props, final SQLStatementContext sqlStatementContext) {
if (sqlStatementContext instanceof SelectStatementContext) {
return new EncryptDQLResultDecorator(new EncryptAlgorithmMetaData(schemaMetaData,
return new EncryptDQLResultDecorator(new EncryptAlgorithmMetaData(schema,
encryptRule, (SelectStatementContext) sqlStatementContext), props.<Boolean>getValue(ConfigurationPropertyKey.QUERY_WITH_CIPHER_COLUMN));
}
if (sqlStatementContext.getSqlStatement() instanceof DALStatement) {
......
......@@ -23,7 +23,7 @@ import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.merge.result.impl.transparent.TransparentMergedResult;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLDescribeStatement;
......@@ -35,14 +35,14 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQ
public final class EncryptDALResultDecorator implements ResultDecorator {
@Override
public MergedResult decorate(final QueryResult queryResult, final SQLStatementContext<?> sqlStatementContext, final PhysicalSchemaMetaData schemaMetaData) {
public MergedResult decorate(final QueryResult queryResult, final SQLStatementContext<?> sqlStatementContext, final ShardingSphereSchema schema) {
return isNeedMergeEncryptColumns(sqlStatementContext.getSqlStatement())
? new MergedEncryptColumnsMergedResult(queryResult, sqlStatementContext, schemaMetaData) : new TransparentMergedResult(queryResult);
? new MergedEncryptColumnsMergedResult(queryResult, sqlStatementContext, schema) : new TransparentMergedResult(queryResult);
}
@Override
public MergedResult decorate(final MergedResult mergedResult, final SQLStatementContext<?> sqlStatementContext, final PhysicalSchemaMetaData schemaMetaData) {
return isNeedMergeEncryptColumns(sqlStatementContext.getSqlStatement()) ? new DecoratedEncryptColumnsMergedResult(mergedResult, sqlStatementContext, schemaMetaData) : mergedResult;
public MergedResult decorate(final MergedResult mergedResult, final SQLStatementContext<?> sqlStatementContext, final ShardingSphereSchema schema) {
return isNeedMergeEncryptColumns(sqlStatementContext.getSqlStatement()) ? new DecoratedEncryptColumnsMergedResult(mergedResult, sqlStatementContext, schema) : mergedResult;
}
private boolean isNeedMergeEncryptColumns(final SQLStatement sqlStatement) {
......
......@@ -17,7 +17,7 @@
package org.apache.shardingsphere.encrypt.merge.dal.impl;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
......@@ -30,8 +30,8 @@ public final class DecoratedEncryptColumnsMergedResult extends EncryptColumnsMer
private final MergedResult mergedResult;
public DecoratedEncryptColumnsMergedResult(final MergedResult mergedResult, final SQLStatementContext sqlStatementContext, final PhysicalSchemaMetaData schemaMetaData) {
super(sqlStatementContext, schemaMetaData);
public DecoratedEncryptColumnsMergedResult(final MergedResult mergedResult, final SQLStatementContext sqlStatementContext, final ShardingSphereSchema schema) {
super(sqlStatementContext, schema);
this.mergedResult = mergedResult;
}
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.encrypt.merge.dal.impl;
import com.google.common.base.Preconditions;
import org.apache.shardingsphere.encrypt.metadata.EncryptColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.type.TableAvailable;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
......@@ -40,12 +40,12 @@ import java.util.stream.Collectors;
*/
public abstract class EncryptColumnsMergedResult implements MergedResult {
private final PhysicalSchemaMetaData schemaMetaData;
private final ShardingSphereSchema schema;
private final String tableName;
protected EncryptColumnsMergedResult(final SQLStatementContext sqlStatementContext, final PhysicalSchemaMetaData schemaMetaData) {
this.schemaMetaData = schemaMetaData;
protected EncryptColumnsMergedResult(final SQLStatementContext sqlStatementContext, final ShardingSphereSchema schema) {
this.schema = schema;
Preconditions.checkState(sqlStatementContext instanceof TableAvailable && 1 == ((TableAvailable) sqlStatementContext).getAllTables().size());
tableName = ((TableAvailable) sqlStatementContext).getAllTables().iterator().next().getTableName().getIdentifier().getValue();
}
......@@ -82,7 +82,7 @@ public abstract class EncryptColumnsMergedResult implements MergedResult {
private Collection<EncryptColumnMetaData> getTableEncryptColumnMetaDataList() {
Collection<EncryptColumnMetaData> result = new LinkedList<>();
for (Entry<String, PhysicalColumnMetaData> entry : schemaMetaData.get(tableName).getColumns().entrySet()) {
for (Entry<String, PhysicalColumnMetaData> entry : schema.get(tableName).getColumns().entrySet()) {
if (entry.getValue() instanceof EncryptColumnMetaData) {
result.add((EncryptColumnMetaData) entry.getValue());
}
......@@ -101,7 +101,7 @@ public abstract class EncryptColumnsMergedResult implements MergedResult {
}
private Optional<String> getLogicColumnOfCipher(final String cipherColumn) {
for (Entry<String, PhysicalColumnMetaData> entry : schemaMetaData.get(tableName).getColumns().entrySet()) {
for (Entry<String, PhysicalColumnMetaData> entry : schema.get(tableName).getColumns().entrySet()) {
if (entry.getValue() instanceof EncryptColumnMetaData) {
EncryptColumnMetaData encryptColumnMetaData = (EncryptColumnMetaData) entry.getValue();
if (encryptColumnMetaData.getCipherColumnName().equalsIgnoreCase(cipherColumn)) {
......
......@@ -17,7 +17,7 @@
package org.apache.shardingsphere.encrypt.merge.dal.impl;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
......@@ -30,8 +30,8 @@ public final class MergedEncryptColumnsMergedResult extends EncryptColumnsMerged
private final QueryResult queryResult;
public MergedEncryptColumnsMergedResult(final QueryResult queryResult, final SQLStatementContext sqlStatementContext, final PhysicalSchemaMetaData schemaMetaData) {
super(sqlStatementContext, schemaMetaData);
public MergedEncryptColumnsMergedResult(final QueryResult queryResult, final SQLStatementContext sqlStatementContext, final ShardingSphereSchema schema) {
super(sqlStatementContext, schema);
this.queryResult = queryResult;
}
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.encrypt.merge.dql;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.select.projection.Projection;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.ColumnProjection;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
......@@ -34,7 +34,7 @@ import java.util.Optional;
@RequiredArgsConstructor
public final class EncryptAlgorithmMetaData {
private final PhysicalSchemaMetaData schemaMetaData;
private final ShardingSphereSchema schema;
private final EncryptRule encryptRule;
......@@ -58,7 +58,7 @@ public final class EncryptAlgorithmMetaData {
Projection projection = expandProjections.get(columnIndex - 1);
if (projection instanceof ColumnProjection) {
String columnName = ((ColumnProjection) projection).getName();
Optional<String> tableName = selectStatementContext.getTablesContext().findTableName((ColumnProjection) projection, schemaMetaData);
Optional<String> tableName = selectStatementContext.getTablesContext().findTableName((ColumnProjection) projection, schema);
return tableName.isPresent() ? findEncryptor(tableName.get(), columnName) : findEncryptor(columnName);
}
return Optional.empty();
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.encrypt.merge.dql;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
......@@ -36,12 +36,12 @@ public final class EncryptDQLResultDecorator implements ResultDecorator {
private final boolean queryWithCipherColumn;
@Override
public MergedResult decorate(final QueryResult queryResult, final SQLStatementContext<?> sqlStatementContext, final PhysicalSchemaMetaData schemaMetaData) {
public MergedResult decorate(final QueryResult queryResult, final SQLStatementContext<?> sqlStatementContext, final ShardingSphereSchema schema) {
return new EncryptMergedResult(metaData, new TransparentMergedResult(queryResult), queryWithCipherColumn);
}
@Override
public MergedResult decorate(final MergedResult mergedResult, final SQLStatementContext<?> sqlStatementContext, final PhysicalSchemaMetaData schemaMetaData) {
public MergedResult decorate(final MergedResult mergedResult, final SQLStatementContext<?> sqlStatementContext, final ShardingSphereSchema schema) {
return new EncryptMergedResult(metaData, mergedResult, queryWithCipherColumn);
}
}
......@@ -28,7 +28,7 @@ import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
import org.apache.shardingsphere.infra.merge.engine.decorator.impl.TransparentResultDecorator;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.spi.ordered.OrderedSPIRegistry;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dal.DescribeStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
......@@ -61,7 +61,7 @@ public final class EncryptResultDecoratorEngineTest {
private DatabaseType databaseType;
@Mock
private PhysicalSchemaMetaData schemaMetaData;
private ShardingSphereSchema schema;
@Mock
private ConfigurationProperties props;
......@@ -74,7 +74,7 @@ public final class EncryptResultDecoratorEngineTest {
@Test
public void assertNewInstanceWithSelectStatement() {
EncryptResultDecoratorEngine engine = (EncryptResultDecoratorEngine) OrderedSPIRegistry.getRegisteredServices(Collections.singleton(rule), ResultProcessEngine.class).get(rule);
ResultDecorator actual = engine.newInstance(databaseType, schemaMetaData, rule, props, mock(SelectStatementContext.class));
ResultDecorator actual = engine.newInstance(databaseType, schema, rule, props, mock(SelectStatementContext.class));
assertThat(actual, instanceOf(EncryptDQLResultDecorator.class));
}
......@@ -83,14 +83,14 @@ public final class EncryptResultDecoratorEngineTest {
SQLStatementContext<MySQLDescribeStatement> sqlStatementContext = mock(DescribeStatementContext.class);
when(sqlStatementContext.getSqlStatement()).thenReturn(mock(MySQLDescribeStatement.class));
EncryptResultDecoratorEngine engine = (EncryptResultDecoratorEngine) OrderedSPIRegistry.getRegisteredServices(Collections.singleton(rule), ResultProcessEngine.class).get(rule);
ResultDecorator actual = engine.newInstance(databaseType, schemaMetaData, rule, props, sqlStatementContext);
ResultDecorator actual = engine.newInstance(databaseType, schema, rule, props, sqlStatementContext);
assertThat(actual, instanceOf(EncryptDALResultDecorator.class));
}
@Test
public void assertNewInstanceWithOtherStatement() {
EncryptResultDecoratorEngine engine = (EncryptResultDecoratorEngine) OrderedSPIRegistry.getRegisteredServices(Collections.singleton(rule), ResultProcessEngine.class).get(rule);
ResultDecorator actual = engine.newInstance(databaseType, schemaMetaData, rule, props, mock(InsertStatementContext.class));
ResultDecorator actual = engine.newInstance(databaseType, schema, rule, props, mock(InsertStatementContext.class));
assertThat(actual, instanceOf(TransparentResultDecorator.class));
}
}
......@@ -22,7 +22,7 @@ import org.apache.shardingsphere.encrypt.merge.dal.impl.MergedEncryptColumnsMerg
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.merge.result.impl.transparent.TransparentMergedResult;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dal.DescribeStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dal.ShowColumnsStatementContext;
......@@ -47,36 +47,36 @@ import static org.mockito.Mockito.when;
public final class EncryptDALResultDecoratorTest {
@Mock
private PhysicalSchemaMetaData schemaMetaData;
private ShardingSphereSchema schema;
@Mock
private SQLStatementContext<?> sqlStatementContext;
@Test
public void assertMergedResultWithDescribeStatement() {
schemaMetaData = mock(PhysicalSchemaMetaData.class);
schema = mock(ShardingSphereSchema.class);
sqlStatementContext = getDescribeStatementContext();
EncryptDALResultDecorator encryptDALResultDecorator = new EncryptDALResultDecorator();
assertThat(encryptDALResultDecorator.decorate(mock(QueryResult.class), sqlStatementContext, schemaMetaData), instanceOf(MergedEncryptColumnsMergedResult.class));
assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class), sqlStatementContext, schemaMetaData), instanceOf(DecoratedEncryptColumnsMergedResult.class));
assertThat(encryptDALResultDecorator.decorate(mock(QueryResult.class), sqlStatementContext, schema), instanceOf(MergedEncryptColumnsMergedResult.class));
assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class), sqlStatementContext, schema), instanceOf(DecoratedEncryptColumnsMergedResult.class));
}
@Test
public void assertMergedResultWithShowColumnsStatement() {
schemaMetaData = mock(PhysicalSchemaMetaData.class);
schema = mock(ShardingSphereSchema.class);
sqlStatementContext = getShowColumnsStatementContext();
EncryptDALResultDecorator encryptDALResultDecorator = new EncryptDALResultDecorator();
assertThat(encryptDALResultDecorator.decorate(mock(QueryResult.class), sqlStatementContext, schemaMetaData), instanceOf(MergedEncryptColumnsMergedResult.class));
assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class), sqlStatementContext, schemaMetaData), instanceOf(DecoratedEncryptColumnsMergedResult.class));
assertThat(encryptDALResultDecorator.decorate(mock(QueryResult.class), sqlStatementContext, schema), instanceOf(MergedEncryptColumnsMergedResult.class));
assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class), sqlStatementContext, schema), instanceOf(DecoratedEncryptColumnsMergedResult.class));
}
@Test
public void assertMergedResultWithOtherStatement() {
schemaMetaData = mock(PhysicalSchemaMetaData.class);
schema = mock(ShardingSphereSchema.class);
sqlStatementContext = mock(SQLStatementContext.class);
EncryptDALResultDecorator encryptDALResultDecorator = new EncryptDALResultDecorator();
assertThat(encryptDALResultDecorator.decorate(mock(QueryResult.class), sqlStatementContext, schemaMetaData), instanceOf(TransparentMergedResult.class));
assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class), sqlStatementContext, schemaMetaData), instanceOf(MergedResult.class));
assertThat(encryptDALResultDecorator.decorate(mock(QueryResult.class), sqlStatementContext, schema), instanceOf(TransparentMergedResult.class));
assertThat(encryptDALResultDecorator.decorate(mock(MergedResult.class), sqlStatementContext, schema), instanceOf(MergedResult.class));
}
private SQLStatementContext<?> getDescribeStatementContext() {
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.encrypt.merge.dal;
import org.apache.shardingsphere.encrypt.merge.dal.impl.MergedEncryptColumnsMergedResult;
import org.apache.shardingsphere.encrypt.metadata.EncryptColumnMetaData;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
......@@ -56,12 +56,12 @@ public final class MergedEncryptColumnsMergedResultTest {
PhysicalTableMetaData tableMetaData = new PhysicalTableMetaData(Collections.emptyList(), Collections.emptyList());
Map<String, PhysicalTableMetaData> tables = new HashMap<>(1, 1);
tables.put("test", tableMetaData);
assertTrue(createMergedEncryptColumnsMergedResult(queryResult, new PhysicalSchemaMetaData(tables)).next());
assertTrue(createMergedEncryptColumnsMergedResult(queryResult, new ShardingSphereSchema(tables)).next());
}
@Test
public void assertNextWithHasNext() throws SQLException {
assertFalse(createMergedEncryptColumnsMergedResult(queryResult, mock(PhysicalSchemaMetaData.class)).next());
assertFalse(createMergedEncryptColumnsMergedResult(queryResult, mock(ShardingSphereSchema.class)).next());
}
@Test
......@@ -72,7 +72,7 @@ public final class MergedEncryptColumnsMergedResultTest {
PhysicalTableMetaData tableMetaData = new PhysicalTableMetaData(Collections.singletonList(encryptColumnMetaData), Collections.emptyList());
Map<String, PhysicalTableMetaData> tables = new HashMap<>(1, 1);
tables.put("test", tableMetaData);
assertFalse(createMergedEncryptColumnsMergedResult(queryResult, new PhysicalSchemaMetaData(tables)).next());
assertFalse(createMergedEncryptColumnsMergedResult(queryResult, new ShardingSphereSchema(tables)).next());
}
@Test
......@@ -82,7 +82,7 @@ public final class MergedEncryptColumnsMergedResultTest {
PhysicalTableMetaData tableMetaData = new PhysicalTableMetaData(Collections.singletonList(encryptColumnMetaData), Collections.emptyList());
Map<String, PhysicalTableMetaData> tables = new HashMap<>(1);
tables.put("test", tableMetaData);
assertThat(createMergedEncryptColumnsMergedResult(queryResult, new PhysicalSchemaMetaData(tables)).getValue(1, String.class), is("id"));
assertThat(createMergedEncryptColumnsMergedResult(queryResult, new ShardingSphereSchema(tables)).getValue(1, String.class), is("id"));
}
@Test
......@@ -92,7 +92,7 @@ public final class MergedEncryptColumnsMergedResultTest {
PhysicalTableMetaData tableMetaData = new PhysicalTableMetaData(Collections.singletonList(encryptColumnMetaData), Collections.emptyList());
Map<String, PhysicalTableMetaData> tables = new HashMap<>(1, 1);
tables.put("test", tableMetaData);
assertThat(createMergedEncryptColumnsMergedResult(queryResult, new PhysicalSchemaMetaData(tables)).getValue(1, String.class), is("assistedQuery"));
assertThat(createMergedEncryptColumnsMergedResult(queryResult, new ShardingSphereSchema(tables)).getValue(1, String.class), is("assistedQuery"));
}
@Test
......@@ -102,20 +102,20 @@ public final class MergedEncryptColumnsMergedResultTest {
PhysicalTableMetaData tableMetaData = new PhysicalTableMetaData(Collections.singletonList(encryptColumnMetaData), Collections.emptyList());
Map<String, PhysicalTableMetaData> tables = new HashMap<>(1, 1);
tables.put("test", tableMetaData);
assertThat(createMergedEncryptColumnsMergedResult(queryResult, new PhysicalSchemaMetaData(tables)).getValue(2, String.class), is("id"));
assertThat(createMergedEncryptColumnsMergedResult(queryResult, new ShardingSphereSchema(tables)).getValue(2, String.class), is("id"));
}
@Test
public void assertWasNull() throws SQLException {
assertFalse(createMergedEncryptColumnsMergedResult(queryResult, mock(PhysicalSchemaMetaData.class)).wasNull());
assertFalse(createMergedEncryptColumnsMergedResult(queryResult, mock(ShardingSphereSchema.class)).wasNull());
}
private MergedEncryptColumnsMergedResult createMergedEncryptColumnsMergedResult(final QueryResult queryResult, final PhysicalSchemaMetaData schemaMetaData) {
private MergedEncryptColumnsMergedResult createMergedEncryptColumnsMergedResult(final QueryResult queryResult, final ShardingSphereSchema schema) {
SelectStatementContext sqlStatementContext = mock(SelectStatementContext.class);
IdentifierValue identifierValue = new IdentifierValue("test");
TableNameSegment tableNameSegment = new TableNameSegment(1, 4, identifierValue);
SimpleTableSegment simpleTableSegment = new SimpleTableSegment(tableNameSegment);
when(sqlStatementContext.getAllTables()).thenReturn(Collections.singletonList(simpleTableSegment));
return new MergedEncryptColumnsMergedResult(queryResult, sqlStatementContext, schemaMetaData);
return new MergedEncryptColumnsMergedResult(queryResult, sqlStatementContext, schema);
}
}
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.encrypt.merge.dal.impl;
import org.apache.shardingsphere.encrypt.merge.dal.impl.fixture.TestStatementContext;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
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;
......@@ -52,7 +52,7 @@ public final class DecoratedEncryptColumnsMergedResultTest {
when(mergedResult.next()).thenReturn(true);
when(mergedResult.wasNull()).thenReturn(false);
when(mergedResult.getValue(eq(new Integer(1)), eq(getClass()))).thenReturn("test");
DecoratedEncryptColumnsMergedResult actual = new DecoratedEncryptColumnsMergedResult(mergedResult, testStatementContext, mock(PhysicalSchemaMetaData.class));
DecoratedEncryptColumnsMergedResult actual = new DecoratedEncryptColumnsMergedResult(mergedResult, testStatementContext, mock(ShardingSphereSchema.class));
assertNotNull(actual);
assertTrue(actual.nextValue());
assertFalse(actual.wasNull());
......
......@@ -17,28 +17,29 @@
package org.apache.shardingsphere.encrypt.merge.dql;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.Properties;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmFactory;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.binder.segment.select.projection.Projection;
import org.apache.shardingsphere.infra.binder.segment.select.projection.ProjectionsContext;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.ColumnProjection;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.DerivedProjection;
import org.apache.shardingsphere.infra.binder.segment.table.TablesContext;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmFactory;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
......@@ -50,7 +51,7 @@ import static org.mockito.Mockito.when;
public final class EncryptAlgorithmMetaDataTest {
@Mock
private PhysicalSchemaMetaData schemaMetaData;
private ShardingSphereSchema schema;
@Mock
private EncryptRule encryptRule;
......@@ -81,9 +82,9 @@ public final class EncryptAlgorithmMetaDataTest {
@Test
public void assertFindEncryptorByTableNameAndColumnName() {
when(tablesContext.findTableName(columnProjection, schemaMetaData)).thenReturn(Optional.of("t_order"));
when(tablesContext.findTableName(columnProjection, schema)).thenReturn(Optional.of("t_order"));
when(encryptRule.findEncryptor("t_order", "id")).thenReturn(Optional.of(encryptAlgorithm));
EncryptAlgorithmMetaData encryptAlgorithmMetaData = new EncryptAlgorithmMetaData(schemaMetaData, encryptRule, selectStatementContext);
EncryptAlgorithmMetaData encryptAlgorithmMetaData = new EncryptAlgorithmMetaData(schema, encryptRule, selectStatementContext);
Optional<EncryptAlgorithm> actualEncryptor = encryptAlgorithmMetaData.findEncryptor(1);
assertTrue(actualEncryptor.isPresent());
assertThat(actualEncryptor.get().getType(), is("MD5"));
......@@ -91,10 +92,10 @@ public final class EncryptAlgorithmMetaDataTest {
@Test
public void assertFindEncryptorByColumnName() {
when(tablesContext.findTableName(columnProjection, schemaMetaData)).thenReturn(Optional.empty());
when(tablesContext.findTableName(columnProjection, schema)).thenReturn(Optional.empty());
when(tablesContext.getTableNames()).thenReturn(Arrays.asList("t_user", "t_user_item", "t_order_item"));
when(encryptRule.findEncryptor("t_order_item", "id")).thenReturn(Optional.of(encryptAlgorithm));
EncryptAlgorithmMetaData encryptAlgorithmMetaData = new EncryptAlgorithmMetaData(schemaMetaData, encryptRule, selectStatementContext);
EncryptAlgorithmMetaData encryptAlgorithmMetaData = new EncryptAlgorithmMetaData(schema, encryptRule, selectStatementContext);
Optional<EncryptAlgorithm> actualEncryptor = encryptAlgorithmMetaData.findEncryptor(1);
assertTrue(actualEncryptor.isPresent());
assertThat(actualEncryptor.get().getType(), is("MD5"));
......@@ -103,7 +104,7 @@ public final class EncryptAlgorithmMetaDataTest {
@Test
public void assertFindEncryptorWhenColumnProjectionIsNotExist() {
when(projectionsContext.getExpandProjections()).thenReturn(Collections.singletonList(mock(DerivedProjection.class)));
EncryptAlgorithmMetaData encryptAlgorithmMetaData = new EncryptAlgorithmMetaData(schemaMetaData, encryptRule, selectStatementContext);
EncryptAlgorithmMetaData encryptAlgorithmMetaData = new EncryptAlgorithmMetaData(schema, encryptRule, selectStatementContext);
Optional<EncryptAlgorithm> actualEncryptor = encryptAlgorithmMetaData.findEncryptor(1);
assertFalse(actualEncryptor.isPresent());
}
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.encrypt.merge.dql;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.junit.Test;
......@@ -40,7 +40,7 @@ public final class EncryptDQLResultDecoratorTest {
QueryResult queryResult = mock(QueryResult.class);
when(queryResult.next()).thenReturn(true);
EncryptDQLResultDecorator decorator = new EncryptDQLResultDecorator(metaData, queryWithCipherColumn);
MergedResult actual = decorator.decorate(queryResult, mock(SQLStatementContext.class), mock(PhysicalSchemaMetaData.class));
MergedResult actual = decorator.decorate(queryResult, mock(SQLStatementContext.class), mock(ShardingSphereSchema.class));
assertTrue(actual.next());
}
......@@ -49,7 +49,7 @@ public final class EncryptDQLResultDecoratorTest {
MergedResult mergedResult = mock(MergedResult.class);
when(mergedResult.next()).thenReturn(true);
EncryptDQLResultDecorator decorator = new EncryptDQLResultDecorator(metaData, queryWithCipherColumn);
MergedResult actual = decorator.decorate(mergedResult, mock(SQLStatementContext.class), mock(PhysicalSchemaMetaData.class));
MergedResult actual = decorator.decorate(mergedResult, mock(SQLStatementContext.class), mock(ShardingSphereSchema.class));
assertTrue(actual.next());
}
}
......@@ -18,13 +18,13 @@
package org.apache.shardingsphere.encrypt.merge.dql.fixture;
import org.apache.shardingsphere.encrypt.merge.dal.impl.EncryptColumnsMergedResult;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
public final class EncryptColumnsMergedResultFixture extends EncryptColumnsMergedResult {
public EncryptColumnsMergedResultFixture(final SQLStatementContext sqlStatementContext, final PhysicalSchemaMetaData schemaMetaData) {
super(sqlStatementContext, schemaMetaData);
public EncryptColumnsMergedResultFixture(final SQLStatementContext sqlStatementContext, final ShardingSphereSchema schema) {
super(sqlStatementContext, schema);
}
@Override
......
......@@ -22,7 +22,7 @@ import org.apache.shardingsphere.encrypt.merge.dql.fixture.EncryptColumnsMergedR
import org.apache.shardingsphere.encrypt.merge.dql.fixture.TableAvailableAndSqlStatementContextFixture;
import org.apache.shardingsphere.encrypt.metadata.EncryptColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
......@@ -54,7 +54,7 @@ public final class EncryptColumnsMergedResultTest {
private TableAvailableAndSqlStatementContextFixture tableAvailableAndSqlStatementContextFixture;
@Mock
private PhysicalSchemaMetaData schemaMetaData;
private ShardingSphereSchema schema;
@Mock
private PhysicalTableMetaData tableMetaData;
......@@ -74,23 +74,23 @@ public final class EncryptColumnsMergedResultTest {
when(tableNameSegment.getIdentifier()).thenReturn(identifierValue);
String tableName = "t_order";
when(identifierValue.getValue()).thenReturn(tableName);
when(schemaMetaData.get(anyString())).thenReturn(tableMetaData);
when(schema.get(anyString())).thenReturn(tableMetaData);
when(tableMetaData.getColumns()).thenReturn(columns);
encryptColumnsMergedResultFixture = spy(new EncryptColumnsMergedResultFixture(tableAvailableAndSqlStatementContextFixture, schemaMetaData));
encryptColumnsMergedResultFixture = spy(new EncryptColumnsMergedResultFixture(tableAvailableAndSqlStatementContextFixture, schema));
}
@Test
public void assertHasNextWithEmptyColumnMetaData() throws SQLException {
when(schemaMetaData.get(anyString())).thenReturn(tableMetaData);
when(schema.get(anyString())).thenReturn(tableMetaData);
when(tableMetaData.getColumns()).thenReturn(Collections.emptyMap());
EncryptColumnsMergedResultFixture encryptColumnsMergedResultFixture = spy(new EncryptColumnsMergedResultFixture(tableAvailableAndSqlStatementContextFixture, schemaMetaData));
EncryptColumnsMergedResultFixture encryptColumnsMergedResultFixture = spy(new EncryptColumnsMergedResultFixture(tableAvailableAndSqlStatementContextFixture, schema));
when(encryptColumnsMergedResultFixture.nextValue()).thenReturn(true).thenReturn(false);
assertThat(encryptColumnsMergedResultFixture.next(), is(true));
}
@Test
public void assertWithoutHasNext() throws SQLException {
EncryptColumnsMergedResultFixture encryptColumnsMergedResultFixture = spy(new EncryptColumnsMergedResultFixture(tableAvailableAndSqlStatementContextFixture, schemaMetaData));
EncryptColumnsMergedResultFixture encryptColumnsMergedResultFixture = spy(new EncryptColumnsMergedResultFixture(tableAvailableAndSqlStatementContextFixture, schema));
when(encryptColumnsMergedResultFixture.nextValue()).thenReturn(false);
assertThat(encryptColumnsMergedResultFixture.next(), is(false));
}
......@@ -100,9 +100,9 @@ public final class EncryptColumnsMergedResultTest {
Map<String, PhysicalColumnMetaData> columns = new HashMap<>(1, 1);
EncryptColumnMetaData encryptColumnMetaData = new EncryptColumnMetaData("order", 1, "Integer", false, "status", "status", "status");
columns.put("", encryptColumnMetaData);
when(schemaMetaData.get(anyString())).thenReturn(tableMetaData);
when(schema.get(anyString())).thenReturn(tableMetaData);
when(tableMetaData.getColumns()).thenReturn(columns);
EncryptColumnsMergedResultFixture encryptColumnsMergedResultFixture = spy(new EncryptColumnsMergedResultFixture(tableAvailableAndSqlStatementContextFixture, schemaMetaData));
EncryptColumnsMergedResultFixture encryptColumnsMergedResultFixture = spy(new EncryptColumnsMergedResultFixture(tableAvailableAndSqlStatementContextFixture, schema));
when(encryptColumnsMergedResultFixture.nextValue()).thenReturn(true).thenReturn(true);
when(encryptColumnsMergedResultFixture.getOriginalValue(1, String.class)).thenReturn("status").thenReturn("noInThatCollection");
assertThat(encryptColumnsMergedResultFixture.next(), is(true));
......@@ -113,7 +113,7 @@ public final class EncryptColumnsMergedResultTest {
Map<String, PhysicalColumnMetaData> columns = new HashMap<>(1, 1);
EncryptColumnMetaData encryptColumnMetaData = new EncryptColumnMetaData("order", 1, "Integer", false, "status", "status", "status");
columns.put("key", encryptColumnMetaData);
when(schemaMetaData.get(anyString())).thenReturn(tableMetaData);
when(schema.get(anyString())).thenReturn(tableMetaData);
when(tableMetaData.getColumns()).thenReturn(columns);
when(encryptColumnsMergedResultFixture.getOriginalValue(1, String.class)).thenReturn("status");
assertThat(encryptColumnsMergedResultFixture.getValue(1, String.class), is("key"));
......
......@@ -22,7 +22,7 @@ import org.apache.shardingsphere.encrypt.rewrite.condition.impl.EncryptEqualCond
import org.apache.shardingsphere.encrypt.rewrite.condition.impl.EncryptInCondition;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.type.WhereAvailable;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
......@@ -51,7 +51,7 @@ public final class EncryptConditionEngine {
private final EncryptRule encryptRule;
private final PhysicalSchemaMetaData schemaMetaData;
private final ShardingSphereSchema schema;
/**
* Create encrypt conditions.
......@@ -100,7 +100,7 @@ public final class EncryptConditionEngine {
if (!column.isPresent()) {
return Optional.empty();
}
Optional<String> tableName = sqlStatementContext.getTablesContext().findTableName(column.get(), schemaMetaData);
Optional<String> tableName = sqlStatementContext.getTablesContext().findTableName(column.get(), schema);
return tableName.isPresent() && encryptRule.findEncryptor(tableName.get(), column.get().getIdentifier().getValue()).isPresent()
? createEncryptCondition(expression, tableName.get()) : Optional.empty();
}
......
......@@ -37,7 +37,7 @@ public final class EncryptSQLRewriteContextDecorator implements SQLRewriteContex
@Override
public void decorate(final EncryptRule encryptRule, final ConfigurationProperties props, final SQLRewriteContext sqlRewriteContext, final RouteContext routeContext) {
boolean isQueryWithCipherColumn = props.<Boolean>getValue(ConfigurationPropertyKey.QUERY_WITH_CIPHER_COLUMN);
for (ParameterRewriter each : new EncryptParameterRewriterBuilder(encryptRule, isQueryWithCipherColumn).getParameterRewriters(sqlRewriteContext.getSchemaMetaData())) {
for (ParameterRewriter each : new EncryptParameterRewriterBuilder(encryptRule, isQueryWithCipherColumn).getParameterRewriters(sqlRewriteContext.getSchema())) {
if (!sqlRewriteContext.getParameters().isEmpty() && each.isNeedRewrite(sqlRewriteContext.getSqlStatementContext())) {
each.rewrite(sqlRewriteContext.getParameterBuilder(), sqlRewriteContext.getSqlStatementContext(), sqlRewriteContext.getParameters());
}
......
......@@ -25,7 +25,7 @@ import org.apache.shardingsphere.encrypt.rewrite.parameter.impl.EncryptInsertVal
import org.apache.shardingsphere.encrypt.rewrite.parameter.impl.EncryptPredicateParameterRewriter;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.encrypt.rule.aware.EncryptRuleAware;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriter;
import org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriterBuilder;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.SchemaMetaDataAware;
......@@ -44,10 +44,10 @@ public final class EncryptParameterRewriterBuilder implements ParameterRewriterB
private final boolean queryWithCipherColumn;
@Override
public Collection<ParameterRewriter> getParameterRewriters(final PhysicalSchemaMetaData schemaMetaData) {
public Collection<ParameterRewriter> getParameterRewriters(final ShardingSphereSchema schema) {
Collection<ParameterRewriter> result = getParameterRewriters();
for (ParameterRewriter each : result) {
setUpParameterRewriters(each, schemaMetaData);
setUpParameterRewriters(each, schema);
}
return result;
}
......@@ -61,9 +61,9 @@ public final class EncryptParameterRewriterBuilder implements ParameterRewriterB
return result;
}
private void setUpParameterRewriters(final ParameterRewriter parameterRewriter, final PhysicalSchemaMetaData schemaMetaData) {
private void setUpParameterRewriters(final ParameterRewriter parameterRewriter, final ShardingSphereSchema schema) {
if (parameterRewriter instanceof SchemaMetaDataAware) {
((SchemaMetaDataAware) parameterRewriter).setSchemaMetaData(schemaMetaData);
((SchemaMetaDataAware) parameterRewriter).setSchema(schema);
}
if (parameterRewriter instanceof EncryptRuleAware) {
((EncryptRuleAware) parameterRewriter).setEncryptRule(encryptRule);
......
......@@ -22,7 +22,7 @@ import org.apache.shardingsphere.encrypt.rewrite.aware.QueryWithCipherColumnAwar
import org.apache.shardingsphere.encrypt.rewrite.condition.EncryptCondition;
import org.apache.shardingsphere.encrypt.rewrite.condition.EncryptConditionEngine;
import org.apache.shardingsphere.encrypt.rewrite.parameter.EncryptParameterRewriter;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.rewrite.parameter.builder.ParameterBuilder;
import org.apache.shardingsphere.infra.rewrite.parameter.builder.impl.StandardParameterBuilder;
......@@ -38,7 +38,7 @@ import java.util.Map.Entry;
@Setter
public final class EncryptPredicateParameterRewriter extends EncryptParameterRewriter<SQLStatementContext> implements SchemaMetaDataAware, QueryWithCipherColumnAware {
private PhysicalSchemaMetaData schemaMetaData;
private ShardingSphereSchema schema;
private boolean queryWithCipherColumn;
......@@ -49,7 +49,7 @@ public final class EncryptPredicateParameterRewriter extends EncryptParameterRew
@Override
public void rewrite(final ParameterBuilder parameterBuilder, final SQLStatementContext sqlStatementContext, final List<Object> parameters) {
List<EncryptCondition> encryptConditions = new EncryptConditionEngine(getEncryptRule(), schemaMetaData).createEncryptConditions(sqlStatementContext);
List<EncryptCondition> encryptConditions = new EncryptConditionEngine(getEncryptRule(), schema).createEncryptConditions(sqlStatementContext);
if (encryptConditions.isEmpty()) {
return;
}
......
......@@ -25,7 +25,7 @@ import org.apache.shardingsphere.encrypt.rule.EncryptTable;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.CollectionSQLTokenGenerator;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.SchemaMetaDataAware;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.generic.SubstitutableColumnNameToken;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.type.WhereAvailable;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
......@@ -45,7 +45,7 @@ import java.util.Optional;
@Setter
public final class EncryptPredicateColumnTokenGenerator extends BaseEncryptSQLTokenGenerator implements CollectionSQLTokenGenerator, SchemaMetaDataAware, QueryWithCipherColumnAware {
private PhysicalSchemaMetaData schemaMetaData;
private ShardingSphereSchema schema;
private boolean queryWithCipherColumn;
......@@ -96,6 +96,6 @@ public final class EncryptPredicateColumnTokenGenerator extends BaseEncryptSQLTo
}
private Optional<EncryptTable> findEncryptTable(final SQLStatementContext sqlStatementContext, final ColumnSegment column) {
return sqlStatementContext.getTablesContext().findTableName(column, schemaMetaData).flatMap(tableName -> getEncryptRule().findEncryptTable(tableName));
return sqlStatementContext.getTablesContext().findTableName(column, schema).flatMap(tableName -> getEncryptRule().findEncryptTable(tableName));
}
}
......@@ -25,7 +25,7 @@ import org.apache.shardingsphere.encrypt.rewrite.condition.impl.EncryptInConditi
import org.apache.shardingsphere.encrypt.rewrite.token.generator.BaseEncryptSQLTokenGenerator;
import org.apache.shardingsphere.encrypt.rewrite.token.pojo.EncryptPredicateEqualRightValueToken;
import org.apache.shardingsphere.encrypt.rewrite.token.pojo.EncryptPredicateInRightValueToken;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.type.WhereAvailable;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.CollectionSQLTokenGenerator;
......@@ -48,7 +48,7 @@ import java.util.Optional;
public final class EncryptPredicateRightValueTokenGenerator extends BaseEncryptSQLTokenGenerator
implements CollectionSQLTokenGenerator, SchemaMetaDataAware, ParametersAware, QueryWithCipherColumnAware {
private PhysicalSchemaMetaData schemaMetaData;
private ShardingSphereSchema schema;
private List<Object> parameters;
......@@ -61,7 +61,7 @@ public final class EncryptPredicateRightValueTokenGenerator extends BaseEncryptS
@Override
public Collection<SQLToken> generateSQLTokens(final SQLStatementContext sqlStatementContext) {
List<EncryptCondition> encryptConditions = new EncryptConditionEngine(getEncryptRule(), schemaMetaData).createEncryptConditions(sqlStatementContext);
List<EncryptCondition> encryptConditions = new EncryptConditionEngine(getEncryptRule(), schema).createEncryptConditions(sqlStatementContext);
return encryptConditions.isEmpty() ? Collections.emptyList() : generateSQLTokens(encryptConditions);
}
......
......@@ -25,7 +25,7 @@ import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.parser.sql.SQLStatementParserEngine;
import org.apache.shardingsphere.infra.rewrite.SQLRewriteEntry;
import org.apache.shardingsphere.infra.rewrite.engine.result.GenericSQLRewriteResult;
......@@ -73,7 +73,7 @@ public final class EncryptSQLRewriterParameterizedTest extends AbstractSQLRewrit
Collection<ShardingSphereRule> rules = ShardingSphereRulesBuilder.build(
new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(ruleConfigurations.getRules()), ruleConfigurations.getDataSources().keySet());
SQLStatementParserEngine sqlStatementParserEngine = new SQLStatementParserEngine(null == getTestParameters().getDatabaseType() ? "SQL92" : getTestParameters().getDatabaseType());
PhysicalSchemaMetaData schema = mockSchema();
ShardingSphereSchema schema = mockSchema();
ConfigurationProperties props = new ConfigurationProperties(ruleConfigurations.getProps());
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(
schema, getTestParameters().getInputParameters(), sqlStatementParserEngine.parse(getTestParameters().getInputSQL(), false));
......@@ -92,8 +92,8 @@ public final class EncryptSQLRewriterParameterizedTest extends AbstractSQLRewrit
return YamlEngine.unmarshal(new File(url.getFile()), YamlRootRuleConfigurations.class);
}
private PhysicalSchemaMetaData mockSchema() {
PhysicalSchemaMetaData result = mock(PhysicalSchemaMetaData.class);
private ShardingSphereSchema mockSchema() {
ShardingSphereSchema result = mock(ShardingSphereSchema.class);
when(result.getAllColumnNames("t_account")).thenReturn(Arrays.asList("account_id", "certificate_number", "password", "amount", "status"));
when(result.getAllColumnNames("t_account_bak")).thenReturn(Arrays.asList("account_id", "certificate_number", "password", "amount", "status"));
return result;
......
......@@ -27,7 +27,7 @@ import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.SQLRouter;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
......@@ -94,7 +94,7 @@ public final class HASQLRouterTest {
public void assertCreateRouteContextToPrimaryWithoutRouteUnits() {
LogicSQL logicSQL = new LogicSQL(mock(SQLStatementContext.class), "", Collections.emptyList());
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema",
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(PhysicalSchemaMetaData.class));
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(ShardingSphereSchema.class));
RouteContext actual = sqlRouter.createRouteContext(logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(PRIMARY_DATASOURCE));
......@@ -105,7 +105,7 @@ public final class HASQLRouterTest {
RouteContext actual = mockRouteContext();
LogicSQL logicSQL = new LogicSQL(mock(SQLStatementContext.class), "", Collections.emptyList());
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema",
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(PhysicalSchemaMetaData.class));
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(ShardingSphereSchema.class));
sqlRouter.decorateRouteContext(actual, logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(NONE_HA_DATASOURCE_NAME));
......@@ -119,7 +119,7 @@ public final class HASQLRouterTest {
when(selectStatement.getLock()).thenReturn(Optional.empty());
LogicSQL logicSQL = new LogicSQL(sqlStatementContext, "", Collections.emptyList());
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema",
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(PhysicalSchemaMetaData.class));
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(ShardingSphereSchema.class));
RouteContext actual = sqlRouter.createRouteContext(logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(REPLICA_DATASOURCE));
......@@ -133,7 +133,7 @@ public final class HASQLRouterTest {
when(selectStatement.getLock()).thenReturn(Optional.empty());
LogicSQL logicSQL = new LogicSQL(sqlStatementContext, "", Collections.emptyList());
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema",
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(PhysicalSchemaMetaData.class));
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(ShardingSphereSchema.class));
sqlRouter.decorateRouteContext(actual, logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(NONE_HA_DATASOURCE_NAME));
......@@ -147,7 +147,7 @@ public final class HASQLRouterTest {
when(selectStatement.getLock()).thenReturn(Optional.of(mock(LockSegment.class)));
LogicSQL logicSQL = new LogicSQL(sqlStatementContext, "", Collections.emptyList());
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema",
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(PhysicalSchemaMetaData.class));
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(ShardingSphereSchema.class));
RouteContext actual = sqlRouter.createRouteContext(logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(PRIMARY_DATASOURCE));
......@@ -161,7 +161,7 @@ public final class HASQLRouterTest {
when(selectStatement.getLock()).thenReturn(Optional.of(mock(LockSegment.class)));
LogicSQL logicSQL = new LogicSQL(sqlStatementContext, "", Collections.emptyList());
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema",
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(PhysicalSchemaMetaData.class));
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(ShardingSphereSchema.class));
sqlRouter.decorateRouteContext(actual, logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(NONE_HA_DATASOURCE_NAME));
......@@ -173,7 +173,7 @@ public final class HASQLRouterTest {
when(sqlStatementContext.getSqlStatement()).thenReturn(mock(InsertStatement.class));
LogicSQL logicSQL = new LogicSQL(sqlStatementContext, "", Collections.emptyList());
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema",
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(PhysicalSchemaMetaData.class));
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule)), mock(ShardingSphereSchema.class));
RouteContext actual = sqlRouter.createRouteContext(logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(PRIMARY_DATASOURCE));
......
......@@ -23,7 +23,7 @@ import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.SQLRouter;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
......@@ -94,7 +94,7 @@ public final class ReplicaQuerySQLRouterTest {
public void assertCreateRouteContextToPrimaryWithoutRouteUnits() {
LogicSQL logicSQL = new LogicSQL(mock(SQLStatementContext.class), "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
RouteContext actual = sqlRouter.createRouteContext(logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(PRIMARY_DATASOURCE));
......@@ -105,7 +105,7 @@ public final class ReplicaQuerySQLRouterTest {
RouteContext actual = mockRouteContext();
LogicSQL logicSQL = new LogicSQL(mock(SQLStatementContext.class), "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
sqlRouter.decorateRouteContext(actual, logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(NONE_REPLICA_QUERY_DATASOURCE_NAME));
......@@ -119,7 +119,7 @@ public final class ReplicaQuerySQLRouterTest {
when(selectStatement.getLock()).thenReturn(Optional.empty());
LogicSQL logicSQL = new LogicSQL(sqlStatementContext, "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
RouteContext actual = sqlRouter.createRouteContext(logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(REPLICA_DATASOURCE));
......@@ -133,7 +133,7 @@ public final class ReplicaQuerySQLRouterTest {
when(selectStatement.getLock()).thenReturn(Optional.empty());
LogicSQL logicSQL = new LogicSQL(sqlStatementContext, "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
sqlRouter.decorateRouteContext(actual, logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(NONE_REPLICA_QUERY_DATASOURCE_NAME));
......@@ -147,7 +147,7 @@ public final class ReplicaQuerySQLRouterTest {
when(selectStatement.getLock()).thenReturn(Optional.of(mock(LockSegment.class)));
LogicSQL logicSQL = new LogicSQL(sqlStatementContext, "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
RouteContext actual = sqlRouter.createRouteContext(logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(PRIMARY_DATASOURCE));
......@@ -161,7 +161,7 @@ public final class ReplicaQuerySQLRouterTest {
when(selectStatement.getLock()).thenReturn(Optional.of(mock(LockSegment.class)));
LogicSQL logicSQL = new LogicSQL(sqlStatementContext, "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
sqlRouter.decorateRouteContext(actual, logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(NONE_REPLICA_QUERY_DATASOURCE_NAME));
......@@ -173,7 +173,7 @@ public final class ReplicaQuerySQLRouterTest {
when(sqlStatementContext.getSqlStatement()).thenReturn(mock(InsertStatement.class));
LogicSQL logicSQL = new LogicSQL(sqlStatementContext, "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
RouteContext actual = sqlRouter.createRouteContext(logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(PRIMARY_DATASOURCE));
......
......@@ -35,7 +35,7 @@ public final class ShadowSQLRewriteContextDecorator implements SQLRewriteContext
@SuppressWarnings("unchecked")
@Override
public void decorate(final ShadowRule shadowRule, final ConfigurationProperties props, final SQLRewriteContext sqlRewriteContext, final RouteContext routeContext) {
for (ParameterRewriter each : new ShadowParameterRewriterBuilder(shadowRule).getParameterRewriters(sqlRewriteContext.getSchemaMetaData())) {
for (ParameterRewriter each : new ShadowParameterRewriterBuilder(shadowRule).getParameterRewriters(sqlRewriteContext.getSchema())) {
if (!sqlRewriteContext.getParameters().isEmpty() && each.isNeedRewrite(sqlRewriteContext.getSqlStatementContext())) {
each.rewrite(sqlRewriteContext.getParameterBuilder(), sqlRewriteContext.getSqlStatementContext(), sqlRewriteContext.getParameters());
}
......
......@@ -22,7 +22,7 @@ import org.apache.shardingsphere.shadow.rule.ShadowRule;
import org.apache.shardingsphere.shadow.rewrite.aware.ShadowRuleAware;
import org.apache.shardingsphere.shadow.rewrite.parameter.impl.ShadowInsertValueParameterRewriter;
import org.apache.shardingsphere.shadow.rewrite.parameter.impl.ShadowPredicateParameterRewriter;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriter;
import org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriterBuilder;
......@@ -38,7 +38,7 @@ public final class ShadowParameterRewriterBuilder implements ParameterRewriterBu
private final ShadowRule shadowRule;
@Override
public Collection<ParameterRewriter> getParameterRewriters(final PhysicalSchemaMetaData schemaMetaData) {
public Collection<ParameterRewriter> getParameterRewriters(final ShardingSphereSchema schema) {
Collection<ParameterRewriter> result = getParameterRewriters();
for (ParameterRewriter each : result) {
((ShadowRuleAware) each).setShadowRule(shadowRule);
......
......@@ -25,7 +25,7 @@ import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.SQLRouter;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
......@@ -81,7 +81,7 @@ public final class ShadowSQLRouterTest {
public void assertCreateRouteContextToShadowDataSource() {
LogicSQL logicSQL = new LogicSQL(mockSQLStatementContextForShadow(), "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
RouteContext actual = sqlRouter.createRouteContext(logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(SHADOW_DATASOURCE));
......@@ -91,7 +91,7 @@ public final class ShadowSQLRouterTest {
public void assertCreateRouteContextToActualDataSource() {
LogicSQL logicSQL = new LogicSQL(mockSQLStatementContext(), "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
RouteContext actual = sqlRouter.createRouteContext(logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(ACTUAL_DATASOURCE));
......@@ -101,7 +101,7 @@ public final class ShadowSQLRouterTest {
public void assertCreateRouteContextForNonDMLStatement() {
LogicSQL logicSQL = new LogicSQL(mockNonDMLSQLStatementContext(), "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
RouteContext actual = sqlRouter.createRouteContext(logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
assertThat(actual.getRouteUnits().size(), is(2));
assertTrue(actual.getActualDataSourceNames().contains(SHADOW_DATASOURCE));
......@@ -115,7 +115,7 @@ public final class ShadowSQLRouterTest {
LogicSQL logicSQL = new LogicSQL(mockSQLStatementContextForShadow(), "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData(
"logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
"logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
sqlRouter.decorateRouteContext(actual, logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
assertThat(actual.getRouteUnits().size(), is(1));
assertTrue(actual.getActualDataSourceNames().contains(SHADOW_DATASOURCE));
......@@ -127,7 +127,7 @@ public final class ShadowSQLRouterTest {
actual.getRouteUnits().add(mockRouteUnit());
LogicSQL logicSQL = new LogicSQL(mockSQLStatementContext(), "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
sqlRouter.decorateRouteContext(actual, logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
Iterator<String> routedDataSourceNames = actual.getActualDataSourceNames().iterator();
assertThat(routedDataSourceNames.next(), is(ACTUAL_DATASOURCE));
......@@ -139,7 +139,7 @@ public final class ShadowSQLRouterTest {
actual.getRouteUnits().add(mockRouteUnit());
LogicSQL logicSQL = new LogicSQL(mockNonDMLSQLStatementContext(), "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
sqlRouter.decorateRouteContext(actual, logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
assertThat(actual.getRouteUnits().size(), is(2));
assertTrue(actual.getActualDataSourceNames().contains(SHADOW_DATASOURCE));
......@@ -152,7 +152,7 @@ public final class ShadowSQLRouterTest {
actual.getRouteUnits().add(mockRouteUnit());
LogicSQL logicSQL = new LogicSQL(mockSQLStatementContextForShadow(), "", Collections.emptyList());
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.singleton(rule));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(PhysicalSchemaMetaData.class));
ShardingSphereMetaData metaData = new ShardingSphereMetaData("logic_schema", mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), ruleMetaData, mock(ShardingSphereSchema.class));
sqlRouter.decorateRouteContext(actual, logicSQL, metaData, rule, new ConfigurationProperties(new Properties()));
assertThat(actual.getRouteUnits().size(), is(1));
assertTrue(actual.getActualDataSourceNames().contains(SHADOW_DATASOURCE));
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.shadow.route.engine.judge.impl;
import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
import org.apache.shardingsphere.shadow.rule.ShadowRule;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
......@@ -51,8 +51,8 @@ public final class PreparedShadowDataSourceRouterTest {
@Test
public void isShadowSQL() {
PhysicalSchemaMetaData schemaMetaData = mock(PhysicalSchemaMetaData.class);
when(schemaMetaData.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "shadow"));
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "shadow"));
ShadowRuleConfiguration shadowRuleConfig = new ShadowRuleConfiguration("shadow", Collections.singletonList("ds"), Collections.singletonList("shadow_ds"));
ShadowRule shadowRule = new ShadowRule(shadowRuleConfig);
InsertStatement insertStatement = new MySQLInsertStatement();
......@@ -60,7 +60,7 @@ public final class PreparedShadowDataSourceRouterTest {
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0,
Arrays.asList(new ColumnSegment(0, 0, new IdentifierValue("id")), new ColumnSegment(0, 0, new IdentifierValue("name")), new ColumnSegment(0, 0, new IdentifierValue("shadow"))));
insertStatement.setInsertColumns(insertColumnsSegment);
InsertStatementContext insertStatementContext = new InsertStatementContext(schemaMetaData, Arrays.asList(1, "Tom", 2, "Jerry", 3, true), insertStatement);
InsertStatementContext insertStatementContext = new InsertStatementContext(schema, Arrays.asList(1, "Tom", 2, "Jerry", 3, true), insertStatement);
PreparedShadowDataSourceJudgeEngine preparedShadowDataSourceRouter = new PreparedShadowDataSourceJudgeEngine(shadowRule, insertStatementContext, Arrays.asList(1, "Tom", true));
assertTrue("should be shadow", preparedShadowDataSourceRouter.isShadow());
}
......@@ -69,30 +69,30 @@ public final class PreparedShadowDataSourceRouterTest {
public void isShadowSQLInLiteralExpressionForMySQL() {
isShadowSQLInLiteralExpression(new MySQLSelectStatement());
}
@Test
public void isShadowSQLInLiteralExpressionForOracle() {
isShadowSQLInLiteralExpression(new OracleSelectStatement());
}
@Test
public void isShadowSQLInLiteralExpressionForPostgreSQL() {
isShadowSQLInLiteralExpression(new PostgreSQLSelectStatement());
}
@Test
public void isShadowSQLInLiteralExpressionForSQL92() {
isShadowSQLInLiteralExpression(new SQL92SelectStatement());
}
@Test
public void isShadowSQLInLiteralExpressionForSQLServer() {
isShadowSQLInLiteralExpression(new SQLServerSelectStatement());
}
private void isShadowSQLInLiteralExpression(final SelectStatement selectStatement) {
PhysicalSchemaMetaData schemaMetaData = mock(PhysicalSchemaMetaData.class);
when(schemaMetaData.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "shadow"));
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "shadow"));
ShadowRuleConfiguration shadowRuleConfig = new ShadowRuleConfiguration("shadow", Collections.singletonList("ds"), Collections.singletonList("shadow_ds"));
ShadowRule shadowRule = new ShadowRule(shadowRuleConfig);
PreparedShadowDataSourceJudgeEngine preparedShadowDataSourceRouter = new PreparedShadowDataSourceJudgeEngine(shadowRule,
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.shadow.route.engine.judge.impl;
import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
import org.apache.shardingsphere.shadow.rule.ShadowRule;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.InsertValuesSegment;
......@@ -57,14 +57,14 @@ import static org.mockito.Mockito.when;
public final class SimpleShadowDataSourceRouterTest {
private PhysicalSchemaMetaData schemaMetaData;
private ShardingSphereSchema schema;
private ShadowRule shadowRule;
@Before
public void setUp() {
schemaMetaData = mock(PhysicalSchemaMetaData.class);
when(schemaMetaData.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "shadow"));
schema = mock(ShardingSphereSchema.class);
when(schema.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "shadow"));
shadowRule = new ShadowRule(new ShadowRuleConfiguration("shadow", Collections.singletonList("ds"), Collections.singletonList("shadow_ds")));
}
......@@ -100,13 +100,13 @@ public final class SimpleShadowDataSourceRouterTest {
insertStatement.setInsertColumns(insertColumnsSegment);
insertStatement.getValues().addAll(Collections.singletonList(new InsertValuesSegment(
0, 0, Arrays.asList(new LiteralExpressionSegment(0, 0, 1), new LiteralExpressionSegment(0, 0, "name"), new LiteralExpressionSegment(0, 0, true)))));
InsertStatementContext insertStatementContext = new InsertStatementContext(schemaMetaData, Collections.emptyList(), insertStatement);
InsertStatementContext insertStatementContext = new InsertStatementContext(schema, Collections.emptyList(), insertStatement);
SimpleShadowDataSourceJudgeEngine simpleShadowDataSourceRouter = new SimpleShadowDataSourceJudgeEngine(shadowRule, insertStatementContext);
assertTrue("should be shadow", simpleShadowDataSourceRouter.isShadow());
insertStatement.getValues().clear();
insertStatement.getValues().addAll(Collections.singletonList(
new InsertValuesSegment(0, 0, Arrays.asList(new LiteralExpressionSegment(0, 0, 1), new LiteralExpressionSegment(0, 0, "name"), new LiteralExpressionSegment(0, 0, false)))));
insertStatementContext = new InsertStatementContext(schemaMetaData, Collections.emptyList(), insertStatement);
insertStatementContext = new InsertStatementContext(schema, Collections.emptyList(), insertStatement);
simpleShadowDataSourceRouter = new SimpleShadowDataSourceJudgeEngine(shadowRule, insertStatementContext);
assertFalse("should not be shadow", simpleShadowDataSourceRouter.isShadow());
}
......@@ -146,7 +146,7 @@ public final class SimpleShadowDataSourceRouterTest {
projectionsSegment.setDistinctRow(true);
projectionsSegment.getProjections().addAll(Collections.singletonList(new ExpressionProjectionSegment(0, 0, "true")));
selectStatement.setProjections(projectionsSegment);
SelectStatementContext selectStatementContext = new SelectStatementContext(schemaMetaData, Collections.emptyList(), selectStatement);
SelectStatementContext selectStatementContext = new SelectStatementContext(schema, Collections.emptyList(), selectStatement);
SimpleShadowDataSourceJudgeEngine simpleShadowDataSourceRouter = new SimpleShadowDataSourceJudgeEngine(shadowRule, selectStatementContext);
assertTrue("should be shadow", simpleShadowDataSourceRouter.isShadow());
expression = new BinaryOperationExpression(0, 0, new ColumnSegment(0, 0, new IdentifierValue("shadow")), new LiteralExpressionSegment(0, 0, false), "=", null);
......
......@@ -27,7 +27,7 @@ import org.apache.shardingsphere.sharding.merge.dal.common.SingleLocalDataMerged
import org.apache.shardingsphere.sharding.merge.dal.show.LogicTablesMergedResult;
import org.apache.shardingsphere.sharding.merge.dal.show.ShowCreateTableMergedResult;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowCreateTableStatement;
......@@ -49,16 +49,16 @@ public final class ShardingDALResultMerger implements ResultMerger {
private final ShardingRule shardingRule;
@Override
public MergedResult merge(final List<QueryResult> queryResults, final SQLStatementContext<?> sqlStatementContext, final PhysicalSchemaMetaData schemaMetaData) throws SQLException {
public MergedResult merge(final List<QueryResult> queryResults, final SQLStatementContext<?> sqlStatementContext, final ShardingSphereSchema schema) throws SQLException {
SQLStatement dalStatement = sqlStatementContext.getSqlStatement();
if (dalStatement instanceof MySQLShowDatabasesStatement) {
return new SingleLocalDataMergedResult(Collections.singletonList(DefaultSchema.LOGIC_NAME));
}
if (dalStatement instanceof MySQLShowTablesStatement || dalStatement instanceof MySQLShowTableStatusStatement || dalStatement instanceof MySQLShowIndexStatement) {
return new LogicTablesMergedResult(shardingRule, sqlStatementContext, schemaMetaData, queryResults);
return new LogicTablesMergedResult(shardingRule, sqlStatementContext, schema, queryResults);
}
if (dalStatement instanceof MySQLShowCreateTableStatement) {
return new ShowCreateTableMergedResult(shardingRule, sqlStatementContext, schemaMetaData, queryResults);
return new ShowCreateTableMergedResult(shardingRule, sqlStatementContext, schema, queryResults);
}
return new TransparentMergedResult(queryResults.get(0));
}
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.merge.dal.show;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sharding.rule.TableRule;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.merge.result.impl.memory.MemoryMergedResult;
......@@ -38,12 +38,12 @@ import java.util.Set;
public class LogicTablesMergedResult extends MemoryMergedResult<ShardingRule> {
public LogicTablesMergedResult(final ShardingRule shardingRule,
final SQLStatementContext sqlStatementContext, final PhysicalSchemaMetaData schemaMetaData, final List<QueryResult> queryResults) throws SQLException {
super(shardingRule, schemaMetaData, sqlStatementContext, queryResults);
final SQLStatementContext sqlStatementContext, final ShardingSphereSchema schema, final List<QueryResult> queryResults) throws SQLException {
super(shardingRule, schema, sqlStatementContext, queryResults);
}
@Override
protected final List<MemoryQueryResultRow> init(final ShardingRule shardingRule, final PhysicalSchemaMetaData schemaMetaData,
protected final List<MemoryQueryResultRow> init(final ShardingRule shardingRule, final ShardingSphereSchema schema,
final SQLStatementContext sqlStatementContext, final List<QueryResult> queryResults) throws SQLException {
List<MemoryQueryResultRow> result = new LinkedList<>();
Set<String> tableNames = new HashSet<>();
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.sharding.merge.dal.show;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.merge.result.impl.memory.MemoryQueryResultRow;
......@@ -32,8 +32,8 @@ import java.util.List;
public final class ShowCreateTableMergedResult extends LogicTablesMergedResult {
public ShowCreateTableMergedResult(final ShardingRule shardingRule,
final SQLStatementContext sqlStatementContext, final PhysicalSchemaMetaData schemaMetaData, final List<QueryResult> queryResults) throws SQLException {
super(shardingRule, sqlStatementContext, schemaMetaData, queryResults);
final SQLStatementContext sqlStatementContext, final ShardingSphereSchema schema, final List<QueryResult> queryResults) throws SQLException {
super(shardingRule, sqlStatementContext, schema, queryResults);
}
@Override
......
......@@ -26,7 +26,7 @@ import org.apache.shardingsphere.sharding.merge.dql.pagination.LimitDecoratorMer
import org.apache.shardingsphere.sharding.merge.dql.pagination.RowNumberDecoratorMergedResult;
import org.apache.shardingsphere.sharding.merge.dql.pagination.TopAndRowNumberDecoratorMergedResult;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByItem;
import org.apache.shardingsphere.infra.binder.segment.select.pagination.PaginationContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
......@@ -53,14 +53,14 @@ public final class ShardingDQLResultMerger implements ResultMerger {
private final DatabaseType databaseType;
@Override
public MergedResult merge(final List<QueryResult> queryResults, final SQLStatementContext<?> sqlStatementContext, final PhysicalSchemaMetaData schemaMetaData) throws SQLException {
public MergedResult merge(final List<QueryResult> queryResults, final SQLStatementContext<?> sqlStatementContext, final ShardingSphereSchema schema) throws SQLException {
if (1 == queryResults.size()) {
return new IteratorStreamMergedResult(queryResults);
}
Map<String, Integer> columnLabelIndexMap = getColumnLabelIndexMap(queryResults.get(0));
SelectStatementContext selectStatementContext = (SelectStatementContext) sqlStatementContext;
selectStatementContext.setIndexes(columnLabelIndexMap);
MergedResult mergedResult = build(queryResults, selectStatementContext, columnLabelIndexMap, schemaMetaData);
MergedResult mergedResult = build(queryResults, selectStatementContext, columnLabelIndexMap, schema);
return decorate(queryResults, selectStatementContext, mergedResult);
}
......@@ -73,16 +73,16 @@ public final class ShardingDQLResultMerger implements ResultMerger {
}
private MergedResult build(final List<QueryResult> queryResults, final SelectStatementContext selectStatementContext,
final Map<String, Integer> columnLabelIndexMap, final PhysicalSchemaMetaData schemaMetaData) throws SQLException {
final Map<String, Integer> columnLabelIndexMap, final ShardingSphereSchema schema) throws SQLException {
if (isNeedProcessGroupBy(selectStatementContext)) {
return getGroupByMergedResult(queryResults, selectStatementContext, columnLabelIndexMap, schemaMetaData);
return getGroupByMergedResult(queryResults, selectStatementContext, columnLabelIndexMap, schema);
}
if (isNeedProcessDistinctRow(selectStatementContext)) {
setGroupByForDistinctRow(selectStatementContext);
return getGroupByMergedResult(queryResults, selectStatementContext, columnLabelIndexMap, schemaMetaData);
return getGroupByMergedResult(queryResults, selectStatementContext, columnLabelIndexMap, schema);
}
if (isNeedProcessOrderBy(selectStatementContext)) {
return new OrderByStreamMergedResult(queryResults, selectStatementContext, schemaMetaData);
return new OrderByStreamMergedResult(queryResults, selectStatementContext, schema);
}
return new IteratorStreamMergedResult(queryResults);
}
......@@ -104,10 +104,10 @@ public final class ShardingDQLResultMerger implements ResultMerger {
}
private MergedResult getGroupByMergedResult(final List<QueryResult> queryResults, final SelectStatementContext selectStatementContext,
final Map<String, Integer> columnLabelIndexMap, final PhysicalSchemaMetaData schemaMetaData) throws SQLException {
final Map<String, Integer> columnLabelIndexMap, final ShardingSphereSchema schema) throws SQLException {
return selectStatementContext.isSameGroupByAndOrderByItems()
? new GroupByStreamMergedResult(columnLabelIndexMap, queryResults, selectStatementContext, schemaMetaData)
: new GroupByMemoryMergedResult(queryResults, selectStatementContext, schemaMetaData);
? new GroupByStreamMergedResult(columnLabelIndexMap, queryResults, selectStatementContext, schema)
: new GroupByMemoryMergedResult(queryResults, selectStatementContext, schema);
}
private boolean isNeedProcessOrderBy(final SelectStatementContext selectStatementContext) {
......
......@@ -27,7 +27,7 @@ import org.apache.shardingsphere.sharding.merge.dql.groupby.aggregation.Aggregat
import org.apache.shardingsphere.sharding.merge.dql.groupby.aggregation.AggregationUnitFactory;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.binder.segment.select.projection.Projection;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.AggregationDistinctProjection;
......@@ -51,13 +51,13 @@ import java.util.Map.Entry;
*/
public final class GroupByMemoryMergedResult extends MemoryMergedResult<ShardingRule> {
public GroupByMemoryMergedResult(final List<QueryResult> queryResults, final SelectStatementContext selectStatementContext, final PhysicalSchemaMetaData schemaMetaData) throws SQLException {
super(null, schemaMetaData, selectStatementContext, queryResults);
public GroupByMemoryMergedResult(final List<QueryResult> queryResults, final SelectStatementContext selectStatementContext, final ShardingSphereSchema schema) throws SQLException {
super(null, schema, selectStatementContext, queryResults);
}
@Override
protected List<MemoryQueryResultRow> init(final ShardingRule shardingRule,
final PhysicalSchemaMetaData schemaMetaData, final SQLStatementContext sqlStatementContext, final List<QueryResult> queryResults) throws SQLException {
final ShardingSphereSchema schema, final SQLStatementContext sqlStatementContext, final List<QueryResult> queryResults) throws SQLException {
SelectStatementContext selectStatementContext = (SelectStatementContext) sqlStatementContext;
Map<GroupByValue, MemoryQueryResultRow> dataMap = new HashMap<>(1024);
Map<GroupByValue, Map<AggregationProjection, AggregationUnit>> aggregationMap = new HashMap<>(1024);
......@@ -69,7 +69,7 @@ public final class GroupByMemoryMergedResult extends MemoryMergedResult<Sharding
}
}
setAggregationValueToMemoryRow(selectStatementContext, dataMap, aggregationMap);
List<Boolean> valueCaseSensitive = queryResults.isEmpty() ? Collections.emptyList() : getValueCaseSensitive(queryResults.iterator().next(), selectStatementContext, schemaMetaData);
List<Boolean> valueCaseSensitive = queryResults.isEmpty() ? Collections.emptyList() : getValueCaseSensitive(queryResults.iterator().next(), selectStatementContext, schema);
return getMemoryResultSetRows(selectStatementContext, dataMap, valueCaseSensitive);
}
......@@ -116,19 +116,19 @@ public final class GroupByMemoryMergedResult extends MemoryMergedResult<Sharding
}
}
private List<Boolean> getValueCaseSensitive(final QueryResult queryResult, final SelectStatementContext selectStatementContext, final PhysicalSchemaMetaData schemaMetaData) throws SQLException {
private List<Boolean> getValueCaseSensitive(final QueryResult queryResult, final SelectStatementContext selectStatementContext, final ShardingSphereSchema schema) throws SQLException {
List<Boolean> result = Lists.newArrayList(false);
for (int columnIndex = 1; columnIndex <= queryResult.getColumnCount(); columnIndex++) {
result.add(getValueCaseSensitiveFromTables(queryResult, selectStatementContext, schemaMetaData, columnIndex));
result.add(getValueCaseSensitiveFromTables(queryResult, selectStatementContext, schema, columnIndex));
}
return result;
}
private boolean getValueCaseSensitiveFromTables(final QueryResult queryResult, final SelectStatementContext selectStatementContext,
final PhysicalSchemaMetaData schemaMetaData, final int columnIndex) throws SQLException {
private boolean getValueCaseSensitiveFromTables(final QueryResult queryResult,
final SelectStatementContext selectStatementContext, final ShardingSphereSchema schema, final int columnIndex) throws SQLException {
for (SimpleTableSegment each : selectStatementContext.getSimpleTableSegments()) {
String tableName = each.getTableName().getIdentifier().getValue();
PhysicalTableMetaData tableMetaData = schemaMetaData.get(tableName);
PhysicalTableMetaData tableMetaData = schema.get(tableName);
Map<String, PhysicalColumnMetaData> columns = tableMetaData.getColumns();
String columnName = queryResult.getColumnName(columnIndex);
if (columns.containsKey(columnName)) {
......
......@@ -22,7 +22,7 @@ import com.google.common.collect.Maps;
import org.apache.shardingsphere.sharding.merge.dql.groupby.aggregation.AggregationUnit;
import org.apache.shardingsphere.sharding.merge.dql.groupby.aggregation.AggregationUnitFactory;
import org.apache.shardingsphere.sharding.merge.dql.orderby.OrderByStreamMergedResult;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.AggregationDistinctProjection;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.AggregationProjection;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
......@@ -48,8 +48,8 @@ public final class GroupByStreamMergedResult extends OrderByStreamMergedResult {
private List<?> currentGroupByValues;
public GroupByStreamMergedResult(final Map<String, Integer> labelAndIndexMap, final List<QueryResult> queryResults,
final SelectStatementContext selectStatementContext, final PhysicalSchemaMetaData schemaMetaData) throws SQLException {
super(queryResults, selectStatementContext, schemaMetaData);
final SelectStatementContext selectStatementContext, final ShardingSphereSchema schema) throws SQLException {
super(queryResults, selectStatementContext, schema);
this.selectStatementContext = selectStatementContext;
currentRow = new ArrayList<>(labelAndIndexMap.size());
currentGroupByValues = getOrderByValuesQueue().isEmpty()
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.merge.dql.orderby;
import lombok.AccessLevel;
import lombok.Getter;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.merge.result.impl.stream.StreamMergedResult;
......@@ -44,16 +44,16 @@ public class OrderByStreamMergedResult extends StreamMergedResult {
@Getter(AccessLevel.PROTECTED)
private boolean isFirstNext;
public OrderByStreamMergedResult(final List<QueryResult> queryResults, final SelectStatementContext selectStatementContext, final PhysicalSchemaMetaData schemaMetaData) throws SQLException {
public OrderByStreamMergedResult(final List<QueryResult> queryResults, final SelectStatementContext selectStatementContext, final ShardingSphereSchema schema) throws SQLException {
orderByItems = selectStatementContext.getOrderByContext().getItems();
orderByValuesQueue = new PriorityQueue<>(queryResults.size());
orderResultSetsToQueue(queryResults, selectStatementContext, schemaMetaData);
orderResultSetsToQueue(queryResults, selectStatementContext, schema);
isFirstNext = true;
}
private void orderResultSetsToQueue(final List<QueryResult> queryResults, final SelectStatementContext selectStatementContext, final PhysicalSchemaMetaData schemaMetaData) throws SQLException {
private void orderResultSetsToQueue(final List<QueryResult> queryResults, final SelectStatementContext selectStatementContext, final ShardingSphereSchema schema) throws SQLException {
for (QueryResult each : queryResults) {
OrderByValue orderByValue = new OrderByValue(each, orderByItems, selectStatementContext, schemaMetaData);
OrderByValue orderByValue = new OrderByValue(each, orderByItems, selectStatementContext, schema);
if (orderByValue.next()) {
orderByValuesQueue.offer(orderByValue);
}
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.merge.dql.orderby;
import com.google.common.base.Preconditions;
import lombok.Getter;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByItem;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
......@@ -52,25 +52,25 @@ public final class OrderByValue implements Comparable<OrderByValue> {
private List<Comparable<?>> orderValues;
public OrderByValue(final QueryResult queryResult, final Collection<OrderByItem> orderByItems,
final SelectStatementContext selectStatementContext, final PhysicalSchemaMetaData schemaMetaData) throws SQLException {
final SelectStatementContext selectStatementContext, final ShardingSphereSchema schema) throws SQLException {
this.queryResult = queryResult;
this.orderByItems = orderByItems;
orderValuesCaseSensitive = getOrderValuesCaseSensitive(selectStatementContext, schemaMetaData);
orderValuesCaseSensitive = getOrderValuesCaseSensitive(selectStatementContext, schema);
}
private List<Boolean> getOrderValuesCaseSensitive(final SelectStatementContext selectStatementContext, final PhysicalSchemaMetaData schemaMetaData) throws SQLException {
private List<Boolean> getOrderValuesCaseSensitive(final SelectStatementContext selectStatementContext, final ShardingSphereSchema schema) throws SQLException {
List<Boolean> result = new ArrayList<>(orderByItems.size());
for (OrderByItem eachOrderByItem : orderByItems) {
result.add(getOrderValuesCaseSensitiveFromTables(selectStatementContext, schemaMetaData, eachOrderByItem));
result.add(getOrderValuesCaseSensitiveFromTables(selectStatementContext, schema, eachOrderByItem));
}
return result;
}
private boolean getOrderValuesCaseSensitiveFromTables(final SelectStatementContext selectStatementContext,
final PhysicalSchemaMetaData schemaMetaData, final OrderByItem eachOrderByItem) throws SQLException {
final ShardingSphereSchema schema, final OrderByItem eachOrderByItem) throws SQLException {
for (SimpleTableSegment eachSimpleTableSegment : selectStatementContext.getAllTables()) {
String tableName = eachSimpleTableSegment.getTableName().getIdentifier().getValue();
PhysicalTableMetaData tableMetaData = schemaMetaData.get(tableName);
PhysicalTableMetaData tableMetaData = schema.get(tableName);
Map<String, PhysicalColumnMetaData> columns = tableMetaData.getColumns();
OrderByItemSegment orderByItemSegment = eachOrderByItem.getSegment();
if (orderByItemSegment instanceof ColumnOrderByItemSegment) {
......
......@@ -22,7 +22,7 @@ import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.merge.engine.merger.impl.TransparentResultMerger;
import org.apache.shardingsphere.sharding.merge.dal.ShardingDALResultMerger;
import org.apache.shardingsphere.sharding.merge.dql.ShardingDQLResultMerger;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.select.groupby.GroupByContext;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByContext;
import org.apache.shardingsphere.infra.binder.segment.select.pagination.PaginationContext;
......@@ -100,7 +100,7 @@ public final class ShardingResultMergerEngineTest {
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0, Collections.singletonList(new ColumnSegment(0, 0, new IdentifierValue("col"))));
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("tbl")));
insertStatement.setInsertColumns(insertColumnsSegment);
InsertStatementContext sqlStatementContext = new InsertStatementContext(mock(PhysicalSchemaMetaData.class), Collections.emptyList(), insertStatement);
InsertStatementContext sqlStatementContext = new InsertStatementContext(mock(ShardingSphereSchema.class), Collections.emptyList(), insertStatement);
ConfigurationProperties props = new ConfigurationProperties(new Properties());
assertThat(new ShardingResultMergerEngine().newInstance(DatabaseTypeRegistry.getActualDatabaseType("MySQL"), null, props, sqlStatementContext), instanceOf(TransparentResultMerger.class));
}
......
......@@ -21,7 +21,7 @@ import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.junit.Before;
......@@ -41,36 +41,36 @@ public final class ShowCreateTableMergedResultTest {
private ShardingRule shardingRule;
private PhysicalSchemaMetaData schemaMetaData;
private ShardingSphereSchema schema;
@Before
public void setUp() {
shardingRule = createShardingRule();
schemaMetaData = createSchemaMetaData();
shardingRule = buildShardingRule();
schema = buildSchema();
}
private ShardingRule createShardingRule() {
private ShardingRule buildShardingRule() {
ShardingTableRuleConfiguration tableRuleConfig = new ShardingTableRuleConfiguration("table", "ds.table_${0..2}");
ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
shardingRuleConfig.getTables().add(tableRuleConfig);
return new ShardingRule(shardingRuleConfig, Collections.singletonList("ds"));
}
private PhysicalSchemaMetaData createSchemaMetaData() {
private ShardingSphereSchema buildSchema() {
Map<String, PhysicalTableMetaData> tableMetaDataMap = new HashMap<>(1, 1);
tableMetaDataMap.put("table", new PhysicalTableMetaData(Collections.emptyList(), Collections.emptyList()));
return new PhysicalSchemaMetaData(tableMetaDataMap);
return new ShardingSphereSchema(tableMetaDataMap);
}
@Test
public void assertNextForEmptyQueryResult() throws SQLException {
ShowCreateTableMergedResult actual = new ShowCreateTableMergedResult(shardingRule, mock(SQLStatementContext.class), schemaMetaData, Collections.emptyList());
ShowCreateTableMergedResult actual = new ShowCreateTableMergedResult(shardingRule, mock(SQLStatementContext.class), schema, Collections.emptyList());
assertFalse(actual.next());
}
@Test
public void assertNextForTableRuleIsPresent() throws SQLException {
ShowCreateTableMergedResult actual = new ShowCreateTableMergedResult(shardingRule, mock(SQLStatementContext.class), schemaMetaData, Collections.singletonList(createQueryResult()));
ShowCreateTableMergedResult actual = new ShowCreateTableMergedResult(shardingRule, mock(SQLStatementContext.class), schema, Collections.singletonList(createQueryResult()));
assertTrue(actual.next());
}
......
......@@ -22,7 +22,7 @@ import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.junit.Before;
......@@ -42,28 +42,28 @@ public final class ShowTablesMergedResultTest {
private ShardingRule shardingRule;
private PhysicalSchemaMetaData schemaMetaData;
private ShardingSphereSchema schema;
@Before
public void setUp() {
shardingRule = createShardingRule();
schemaMetaData = createSchemaMetaData();
shardingRule = buildShardingRule();
schema = buildSchema();
}
private ShardingRule createShardingRule() {
private ShardingRule buildShardingRule() {
ShardingTableRuleConfiguration tableRuleConfig = new ShardingTableRuleConfiguration("table", "ds.table_${0..2}");
ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
shardingRuleConfig.getTables().add(tableRuleConfig);
return new ShardingRule(shardingRuleConfig, Lists.newArrayList("ds"));
}
private PhysicalSchemaMetaData createSchemaMetaData() {
private ShardingSphereSchema buildSchema() {
Map<String, PhysicalTableMetaData> tableMetaDataMap = new HashMap<>(1, 1);
tableMetaDataMap.put("table", new PhysicalTableMetaData(Collections.emptyList(), Collections.emptyList()));
return new PhysicalSchemaMetaData(tableMetaDataMap);
return new ShardingSphereSchema(tableMetaDataMap);
}
private QueryResult createQueryResult(final String value) throws SQLException {
private QueryResult mockQueryResult(final String value) throws SQLException {
QueryResult result = mock(QueryResult.class);
when(result.next()).thenReturn(true, false);
when(result.getValue(1, Object.class)).thenReturn(value);
......@@ -73,13 +73,13 @@ public final class ShowTablesMergedResultTest {
@Test
public void assertNextForEmptyQueryResult() throws SQLException {
LogicTablesMergedResult actual = new LogicTablesMergedResult(shardingRule, mock(SQLStatementContext.class), schemaMetaData, Collections.emptyList());
LogicTablesMergedResult actual = new LogicTablesMergedResult(shardingRule, mock(SQLStatementContext.class), schema, Collections.emptyList());
assertFalse(actual.next());
}
@Test
public void assertNextForActualTableNameInTableRule() throws SQLException {
LogicTablesMergedResult actual = new LogicTablesMergedResult(shardingRule, mock(SQLStatementContext.class), schemaMetaData, Collections.singletonList(createQueryResult("table_0")));
LogicTablesMergedResult actual = new LogicTablesMergedResult(shardingRule, mock(SQLStatementContext.class), schema, Collections.singletonList(mockQueryResult("table_0")));
assertTrue(actual.next());
}
}
......@@ -23,7 +23,7 @@ import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.sharding.merge.dql.ShardingDQLResultMerger;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.binder.segment.select.groupby.GroupByContext;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByContext;
......@@ -60,13 +60,13 @@ public final class GroupByStreamMergedResultTest {
@Test
public void assertNextForResultSetsAllEmpty() throws SQLException {
ShardingDQLResultMerger resultMerger = new ShardingDQLResultMerger(DatabaseTypeRegistry.getActualDatabaseType("MySQL"));
MergedResult actual = resultMerger.merge(Arrays.asList(createQueryResult(), createQueryResult(), createQueryResult()), createSelectStatementContext(), createSchemaMetaData());
MergedResult actual = resultMerger.merge(Arrays.asList(mockQueryResult(), mockQueryResult(), mockQueryResult()), createSelectStatementContext(), buildSchema());
assertFalse(actual.next());
}
@Test
public void assertNextForSomeResultSetsEmpty() throws SQLException {
QueryResult queryResult1 = createQueryResult();
QueryResult queryResult1 = mockQueryResult();
when(queryResult1.next()).thenReturn(true, false);
when(queryResult1.getValue(1, Object.class)).thenReturn(20);
when(queryResult1.getValue(2, Object.class)).thenReturn(0);
......@@ -74,8 +74,8 @@ public final class GroupByStreamMergedResultTest {
when(queryResult1.getValue(4, Object.class)).thenReturn(new Date(0L));
when(queryResult1.getValue(5, Object.class)).thenReturn(2);
when(queryResult1.getValue(6, Object.class)).thenReturn(20);
QueryResult queryResult2 = createQueryResult();
QueryResult queryResult3 = createQueryResult();
QueryResult queryResult2 = mockQueryResult();
QueryResult queryResult3 = mockQueryResult();
when(queryResult3.next()).thenReturn(true, true, false);
when(queryResult3.getValue(1, Object.class)).thenReturn(20, 30);
when(queryResult3.getValue(2, Object.class)).thenReturn(0);
......@@ -84,7 +84,7 @@ public final class GroupByStreamMergedResultTest {
when(queryResult3.getValue(5, Object.class)).thenReturn(2, 2, 3);
when(queryResult3.getValue(6, Object.class)).thenReturn(20, 20, 30);
ShardingDQLResultMerger resultMerger = new ShardingDQLResultMerger(DatabaseTypeRegistry.getActualDatabaseType("MySQL"));
MergedResult actual = resultMerger.merge(Arrays.asList(queryResult1, queryResult2, queryResult3), createSelectStatementContext(), createSchemaMetaData());
MergedResult actual = resultMerger.merge(Arrays.asList(queryResult1, queryResult2, queryResult3), createSelectStatementContext(), buildSchema());
assertTrue(actual.next());
assertThat(actual.getValue(1, Object.class), is(new BigDecimal(40)));
assertThat(((BigDecimal) actual.getValue(2, Object.class)).intValue(), is(10));
......@@ -104,21 +104,21 @@ public final class GroupByStreamMergedResultTest {
@Test
public void assertNextForMix() throws SQLException {
QueryResult queryResult1 = createQueryResult();
QueryResult queryResult1 = mockQueryResult();
when(queryResult1.next()).thenReturn(true, false);
when(queryResult1.getValue(1, Object.class)).thenReturn(20);
when(queryResult1.getValue(2, Object.class)).thenReturn(0);
when(queryResult1.getValue(3, Object.class)).thenReturn(2);
when(queryResult1.getValue(5, Object.class)).thenReturn(2);
when(queryResult1.getValue(6, Object.class)).thenReturn(20);
QueryResult queryResult2 = createQueryResult();
QueryResult queryResult2 = mockQueryResult();
when(queryResult2.next()).thenReturn(true, true, true, false);
when(queryResult2.getValue(1, Object.class)).thenReturn(20, 30, 30, 40);
when(queryResult2.getValue(2, Object.class)).thenReturn(0);
when(queryResult2.getValue(3, Object.class)).thenReturn(2, 2, 3, 3, 3, 4);
when(queryResult2.getValue(5, Object.class)).thenReturn(2, 2, 3, 3, 3, 4);
when(queryResult2.getValue(6, Object.class)).thenReturn(20, 20, 30, 30, 30, 40);
QueryResult queryResult3 = createQueryResult();
QueryResult queryResult3 = mockQueryResult();
when(queryResult3.next()).thenReturn(true, true, false);
when(queryResult3.getValue(1, Object.class)).thenReturn(10, 30);
when(queryResult3.getValue(2, Object.class)).thenReturn(10);
......@@ -126,7 +126,7 @@ public final class GroupByStreamMergedResultTest {
when(queryResult3.getValue(5, Object.class)).thenReturn(1, 1, 3);
when(queryResult3.getValue(6, Object.class)).thenReturn(10, 10, 30);
ShardingDQLResultMerger resultMerger = new ShardingDQLResultMerger(DatabaseTypeRegistry.getActualDatabaseType("MySQL"));
MergedResult actual = resultMerger.merge(Arrays.asList(queryResult1, queryResult2, queryResult3), createSelectStatementContext(), createSchemaMetaData());
MergedResult actual = resultMerger.merge(Arrays.asList(queryResult1, queryResult2, queryResult3), createSelectStatementContext(), buildSchema());
assertTrue(actual.next());
assertThat(actual.getValue(1, Object.class), is(new BigDecimal(10)));
assertThat(((BigDecimal) actual.getValue(2, Object.class)).intValue(), is(10));
......@@ -177,15 +177,15 @@ public final class GroupByStreamMergedResultTest {
projectionsContext, new PaginationContext(null, null, Collections.emptyList()));
}
private PhysicalSchemaMetaData createSchemaMetaData() {
private ShardingSphereSchema buildSchema() {
PhysicalColumnMetaData columnMetaData1 = new PhysicalColumnMetaData("col1", 0, "dataType", false, false, false);
PhysicalColumnMetaData columnMetaData2 = new PhysicalColumnMetaData("col2", 0, "dataType", false, false, false);
PhysicalColumnMetaData columnMetaData3 = new PhysicalColumnMetaData("col3", 0, "dataType", false, false, false);
PhysicalTableMetaData tableMetaData = new PhysicalTableMetaData(Arrays.asList(columnMetaData1, columnMetaData2, columnMetaData3), Collections.emptyList());
return new PhysicalSchemaMetaData(ImmutableMap.of("tbl", tableMetaData));
return new ShardingSphereSchema(ImmutableMap.of("tbl", tableMetaData));
}
private QueryResult createQueryResult() throws SQLException {
private QueryResult mockQueryResult() throws SQLException {
QueryResult result = mock(QueryResult.class);
when(result.getColumnCount()).thenReturn(6);
when(result.getColumnLabel(1)).thenReturn("COUNT(*)");
......
......@@ -23,7 +23,7 @@ import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.sharding.merge.dql.ShardingDQLResultMerger;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.binder.segment.select.groupby.GroupByContext;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByContext;
......@@ -74,7 +74,7 @@ public final class OrderByStreamMergedResultTest {
public void assertNextForResultSetsAllEmpty() throws SQLException {
List<QueryResult> queryResults = Arrays.asList(mock(QueryResult.class), mock(QueryResult.class), mock(QueryResult.class));
ShardingDQLResultMerger resultMerger = new ShardingDQLResultMerger(DatabaseTypeRegistry.getActualDatabaseType("MySQL"));
MergedResult actual = resultMerger.merge(queryResults, selectStatementContext, createSchemaMetaData());
MergedResult actual = resultMerger.merge(queryResults, selectStatementContext, buildSchema());
assertFalse(actual.next());
}
......@@ -90,7 +90,7 @@ public final class OrderByStreamMergedResultTest {
when(queryResults.get(0).getValue(1, Object.class)).thenReturn("2");
when(queryResults.get(2).next()).thenReturn(true, true, false);
when(queryResults.get(2).getValue(1, Object.class)).thenReturn("1", "1", "3", "3");
MergedResult actual = resultMerger.merge(queryResults, selectStatementContext, createSchemaMetaData());
MergedResult actual = resultMerger.merge(queryResults, selectStatementContext, buildSchema());
assertTrue(actual.next());
assertThat(actual.getValue(1, Object.class).toString(), is("1"));
assertTrue(actual.next());
......@@ -114,7 +114,7 @@ public final class OrderByStreamMergedResultTest {
when(queryResults.get(1).getValue(1, Object.class)).thenReturn("2", "2", "3", "3", "4", "4");
when(queryResults.get(2).next()).thenReturn(true, true, false);
when(queryResults.get(2).getValue(1, Object.class)).thenReturn("1", "1", "3", "3");
MergedResult actual = resultMerger.merge(queryResults, selectStatementContext, createSchemaMetaData());
MergedResult actual = resultMerger.merge(queryResults, selectStatementContext, buildSchema());
assertTrue(actual.next());
assertThat(actual.getValue(1, Object.class).toString(), is("1"));
assertTrue(actual.next());
......@@ -144,7 +144,7 @@ public final class OrderByStreamMergedResultTest {
when(queryResults.get(2).next()).thenReturn(true, false);
when(queryResults.get(2).getValue(1, Object.class)).thenReturn("A");
ShardingDQLResultMerger resultMerger = new ShardingDQLResultMerger(DatabaseTypeRegistry.getActualDatabaseType("MySQL"));
MergedResult actual = resultMerger.merge(queryResults, selectStatementContext, createSchemaMetaData());
MergedResult actual = resultMerger.merge(queryResults, selectStatementContext, buildSchema());
assertTrue(actual.next());
assertThat(actual.getValue(1, Object.class).toString(), is("A"));
assertTrue(actual.next());
......@@ -170,7 +170,7 @@ public final class OrderByStreamMergedResultTest {
when(queryResults.get(2).next()).thenReturn(true, false);
when(queryResults.get(2).getValue(2, Object.class)).thenReturn("A");
ShardingDQLResultMerger resultMerger = new ShardingDQLResultMerger(DatabaseTypeRegistry.getActualDatabaseType("MySQL"));
MergedResult actual = resultMerger.merge(queryResults, selectStatementContext, createSchemaMetaData());
MergedResult actual = resultMerger.merge(queryResults, selectStatementContext, buildSchema());
assertTrue(actual.next());
assertThat(actual.getValue(2, Object.class).toString(), is("a"));
assertTrue(actual.next());
......@@ -182,10 +182,10 @@ public final class OrderByStreamMergedResultTest {
assertFalse(actual.next());
}
private PhysicalSchemaMetaData createSchemaMetaData() {
private ShardingSphereSchema buildSchema() {
PhysicalColumnMetaData columnMetaData1 = new PhysicalColumnMetaData("col1", 0, "dataType", false, false, true);
PhysicalColumnMetaData columnMetaData2 = new PhysicalColumnMetaData("col2", 0, "dataType", false, false, false);
PhysicalTableMetaData tableMetaData = new PhysicalTableMetaData(Arrays.asList(columnMetaData1, columnMetaData2), Collections.emptyList());
return new PhysicalSchemaMetaData(ImmutableMap.of("tbl", tableMetaData));
return new ShardingSphereSchema(ImmutableMap.of("tbl", tableMetaData));
}
}
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.merge.dql.orderby;
import com.google.common.collect.Lists;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.select.groupby.GroupByContext;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByContext;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByItem;
......@@ -86,19 +86,19 @@ public final class OrderByValueTest {
selectStatement.setProjections(projectionsSegment);
SelectStatementContext selectStatementContext = new SelectStatementContext(
selectStatement, new GroupByContext(Collections.emptyList(), 0), createOrderBy(), createProjectionsContext(), null);
PhysicalSchemaMetaData schemaMetaData = mock(PhysicalSchemaMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
QueryResult queryResult1 = createQueryResult("1", "2");
OrderByValue orderByValue1 = new OrderByValue(queryResult1, Arrays.asList(
createOrderByItem(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.ASC, OrderDirection.ASC)),
createOrderByItem(new IndexOrderByItemSegment(0, 0, 2, OrderDirection.ASC, OrderDirection.ASC))),
selectStatementContext, schemaMetaData);
selectStatementContext, schema);
FieldSetter.setField(orderByValue1, OrderByValue.class.getDeclaredField("orderValuesCaseSensitive"), Arrays.asList(false, false));
assertTrue(orderByValue1.next());
QueryResult queryResult2 = createQueryResult("3", "4");
OrderByValue orderByValue2 = new OrderByValue(queryResult2, Arrays.asList(
createOrderByItem(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.ASC, OrderDirection.ASC)),
createOrderByItem(new IndexOrderByItemSegment(0, 0, 2, OrderDirection.ASC, OrderDirection.ASC))),
selectStatementContext, schemaMetaData);
selectStatementContext, schema);
FieldSetter.setField(orderByValue2, OrderByValue.class.getDeclaredField("orderValuesCaseSensitive"), Arrays.asList(false, false));
assertTrue(orderByValue2.next());
assertTrue(orderByValue1.compareTo(orderByValue2) < 0);
......@@ -136,19 +136,19 @@ public final class OrderByValueTest {
selectStatement.setProjections(projectionsSegment);
SelectStatementContext selectStatementContext = new SelectStatementContext(
selectStatement, new GroupByContext(Collections.emptyList(), 0), createOrderBy(), createProjectionsContext(), null);
PhysicalSchemaMetaData schemaMetaData = mock(PhysicalSchemaMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
QueryResult queryResult1 = createQueryResult("1", "2");
OrderByValue orderByValue1 = new OrderByValue(queryResult1, Arrays.asList(
createOrderByItem(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)),
createOrderByItem(new IndexOrderByItemSegment(0, 0, 2, OrderDirection.DESC, OrderDirection.ASC))),
selectStatementContext, schemaMetaData);
selectStatementContext, schema);
FieldSetter.setField(orderByValue1, OrderByValue.class.getDeclaredField("orderValuesCaseSensitive"), Arrays.asList(false, false));
assertTrue(orderByValue1.next());
QueryResult queryResult2 = createQueryResult("3", "4");
OrderByValue orderByValue2 = new OrderByValue(queryResult2, Arrays.asList(
createOrderByItem(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)),
createOrderByItem(new IndexOrderByItemSegment(0, 0, 2, OrderDirection.DESC, OrderDirection.ASC))),
selectStatementContext, schemaMetaData);
selectStatementContext, schema);
FieldSetter.setField(orderByValue2, OrderByValue.class.getDeclaredField("orderValuesCaseSensitive"), Arrays.asList(false, false));
assertTrue(orderByValue2.next());
assertTrue(orderByValue1.compareTo(orderByValue2) > 0);
......@@ -186,19 +186,19 @@ public final class OrderByValueTest {
selectStatement.setProjections(projectionsSegment);
SelectStatementContext selectStatementContext = new SelectStatementContext(
selectStatement, new GroupByContext(Collections.emptyList(), 0), createOrderBy(), createProjectionsContext(), null);
PhysicalSchemaMetaData schemaMetaData = mock(PhysicalSchemaMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
QueryResult queryResult1 = createQueryResult("1", "2");
OrderByValue orderByValue1 = new OrderByValue(queryResult1, Arrays.asList(
createOrderByItem(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.ASC, OrderDirection.ASC)),
createOrderByItem(new IndexOrderByItemSegment(0, 0, 2, OrderDirection.DESC, OrderDirection.ASC))),
selectStatementContext, schemaMetaData);
selectStatementContext, schema);
FieldSetter.setField(orderByValue1, OrderByValue.class.getDeclaredField("orderValuesCaseSensitive"), Arrays.asList(false, false));
assertTrue(orderByValue1.next());
QueryResult queryResult2 = createQueryResult("1", "2");
OrderByValue orderByValue2 = new OrderByValue(queryResult2, Arrays.asList(
createOrderByItem(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.ASC, OrderDirection.ASC)),
createOrderByItem(new IndexOrderByItemSegment(0, 0, 2, OrderDirection.DESC, OrderDirection.ASC))),
selectStatementContext, schemaMetaData);
selectStatementContext, schema);
FieldSetter.setField(orderByValue2, OrderByValue.class.getDeclaredField("orderValuesCaseSensitive"), Arrays.asList(false, false));
assertTrue(orderByValue2.next());
assertThat(orderByValue1.compareTo(orderByValue2), is(0));
......
......@@ -37,7 +37,7 @@ public final class ShardingSQLRewriteContextDecorator implements SQLRewriteConte
@SuppressWarnings("unchecked")
@Override
public void decorate(final ShardingRule shardingRule, final ConfigurationProperties props, final SQLRewriteContext sqlRewriteContext, final RouteContext routeContext) {
for (ParameterRewriter each : new ShardingParameterRewriterBuilder(shardingRule, routeContext).getParameterRewriters(sqlRewriteContext.getSchemaMetaData())) {
for (ParameterRewriter each : new ShardingParameterRewriterBuilder(shardingRule, routeContext).getParameterRewriters(sqlRewriteContext.getSchema())) {
if (!sqlRewriteContext.getParameters().isEmpty() && each.isNeedRewrite(sqlRewriteContext.getSqlStatementContext())) {
each.rewrite(sqlRewriteContext.getParameterBuilder(), sqlRewriteContext.getSqlStatementContext(), sqlRewriteContext.getParameters());
}
......
......@@ -23,7 +23,7 @@ import org.apache.shardingsphere.sharding.rule.aware.ShardingRuleAware;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.RouteContextAware;
import org.apache.shardingsphere.sharding.rewrite.parameter.impl.ShardingGeneratedKeyInsertValueParameterRewriter;
import org.apache.shardingsphere.sharding.rewrite.parameter.impl.ShardingPaginationParameterRewriter;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriter;
import org.apache.shardingsphere.infra.rewrite.parameter.rewriter.ParameterRewriterBuilder;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.SchemaMetaDataAware;
......@@ -43,10 +43,10 @@ public final class ShardingParameterRewriterBuilder implements ParameterRewriter
private final RouteContext routeContext;
@Override
public Collection<ParameterRewriter> getParameterRewriters(final PhysicalSchemaMetaData schemaMetaData) {
public Collection<ParameterRewriter> getParameterRewriters(final ShardingSphereSchema schema) {
Collection<ParameterRewriter> result = getParameterRewriters();
for (ParameterRewriter each : result) {
setUpParameterRewriters(each, schemaMetaData);
setUpParameterRewriters(each, schema);
}
return result;
}
......@@ -58,9 +58,9 @@ public final class ShardingParameterRewriterBuilder implements ParameterRewriter
return result;
}
private void setUpParameterRewriters(final ParameterRewriter parameterRewriter, final PhysicalSchemaMetaData schemaMetaData) {
private void setUpParameterRewriters(final ParameterRewriter parameterRewriter, final ShardingSphereSchema schema) {
if (parameterRewriter instanceof SchemaMetaDataAware) {
((SchemaMetaDataAware) parameterRewriter).setSchemaMetaData(schemaMetaData);
((SchemaMetaDataAware) parameterRewriter).setSchema(schema);
}
if (parameterRewriter instanceof ShardingRuleAware) {
((ShardingRuleAware) parameterRewriter).setShardingRule(shardingRule);
......
......@@ -27,7 +27,7 @@ import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalIndexMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.parser.sql.SQLStatementParserEngine;
import org.apache.shardingsphere.infra.rewrite.SQLRewriteEntry;
......@@ -80,7 +80,7 @@ public final class MixSQLRewriterParameterizedTest extends AbstractSQLRewriterPa
Collection<ShardingSphereRule> rules = ShardingSphereRulesBuilder.build(
new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(ruleConfigurations.getRules()), ruleConfigurations.getDataSources().keySet());
SQLStatementParserEngine sqlStatementParserEngine = new SQLStatementParserEngine(null == getTestParameters().getDatabaseType() ? "SQL92" : getTestParameters().getDatabaseType());
PhysicalSchemaMetaData schema = mockSchema();
ShardingSphereSchema schema = mockSchema();
ConfigurationProperties props = new ConfigurationProperties(ruleConfigurations.getProps());
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(
schema, getTestParameters().getInputParameters(), sqlStatementParserEngine.parse(getTestParameters().getInputSQL(), false));
......@@ -99,8 +99,8 @@ public final class MixSQLRewriterParameterizedTest extends AbstractSQLRewriterPa
return YamlEngine.unmarshal(new File(url.getFile()), YamlRootRuleConfigurations.class);
}
private PhysicalSchemaMetaData mockSchema() {
PhysicalSchemaMetaData result = mock(PhysicalSchemaMetaData.class);
private ShardingSphereSchema mockSchema() {
ShardingSphereSchema result = mock(ShardingSphereSchema.class);
when(result.getAllTableNames()).thenReturn(Arrays.asList("t_account", "t_account_bak", "t_account_detail"));
PhysicalTableMetaData accountTableMetaData = mock(PhysicalTableMetaData.class);
when(accountTableMetaData.getColumns()).thenReturn(createColumnMetaDataMap());
......
......@@ -27,7 +27,7 @@ import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalIndexMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.parser.sql.SQLStatementParserEngine;
import org.apache.shardingsphere.infra.rewrite.SQLRewriteEntry;
......@@ -80,7 +80,7 @@ public final class ShardingSQLRewriterParameterizedTest extends AbstractSQLRewri
Collection<ShardingSphereRule> rules = ShardingSphereRulesBuilder.build(
new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(yamlRootRuleConfigs.getRules()), yamlRootRuleConfigs.getDataSources().keySet());
SQLStatementParserEngine sqlStatementParserEngine = new SQLStatementParserEngine(null == getTestParameters().getDatabaseType() ? "SQL92" : getTestParameters().getDatabaseType());
PhysicalSchemaMetaData schema = mockSchema();
ShardingSphereSchema schema = mockSchema();
ConfigurationProperties props = new ConfigurationProperties(yamlRootRuleConfigs.getProps());
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(
schema, getTestParameters().getInputParameters(), sqlStatementParserEngine.parse(getTestParameters().getInputSQL(), false));
......@@ -99,8 +99,8 @@ public final class ShardingSQLRewriterParameterizedTest extends AbstractSQLRewri
return YamlEngine.unmarshal(new File(url.getFile()), YamlRootRuleConfigurations.class);
}
private PhysicalSchemaMetaData mockSchema() {
PhysicalSchemaMetaData result = mock(PhysicalSchemaMetaData.class);
private ShardingSphereSchema mockSchema() {
ShardingSphereSchema result = mock(ShardingSphereSchema.class);
when(result.getAllTableNames()).thenReturn(Arrays.asList("t_account", "t_account_detail"));
PhysicalTableMetaData accountTableMetaData = mock(PhysicalTableMetaData.class);
when(accountTableMetaData.getColumns()).thenReturn(createColumnMetaDataMap());
......
......@@ -27,7 +27,7 @@ import org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditi
import org.apache.shardingsphere.sharding.route.engine.condition.engine.ShardingConditionEngine;
import org.apache.shardingsphere.sharding.route.engine.condition.value.ListShardingConditionValue;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.insert.keygen.GeneratedKeyContext;
import org.apache.shardingsphere.infra.binder.segment.insert.values.InsertValueContext;
import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
......@@ -54,7 +54,7 @@ public final class InsertClauseShardingConditionEngine implements ShardingCondit
private final ShardingRule shardingRule;
private final PhysicalSchemaMetaData schemaMetaData;
private final ShardingSphereSchema schema;
@Override
public List<ShardingCondition> createShardingConditions(final InsertStatementContext sqlStatementContext, final List<Object> parameters) {
......@@ -115,7 +115,7 @@ public final class InsertClauseShardingConditionEngine implements ShardingCondit
private List<ShardingCondition> createShardingConditionsWithInsertSelect(final InsertStatementContext sqlStatementContext, final List<Object> parameters) {
SelectStatementContext selectStatementContext = sqlStatementContext.getInsertSelectContext().getSelectStatementContext();
return new LinkedList<>(new WhereClauseShardingConditionEngine(shardingRule, schemaMetaData).createShardingConditions(selectStatementContext, parameters));
return new LinkedList<>(new WhereClauseShardingConditionEngine(shardingRule, schema).createShardingConditions(selectStatementContext, parameters));
}
private void appendGeneratedKeyConditions(final InsertStatementContext sqlStatementContext, final List<ShardingCondition> shardingConditions) {
......
......@@ -30,7 +30,7 @@ import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sharding.route.engine.condition.value.ListShardingConditionValue;
import org.apache.shardingsphere.sharding.route.engine.condition.value.RangeShardingConditionValue;
import org.apache.shardingsphere.sharding.route.engine.condition.value.ShardingConditionValue;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.type.WhereAvailable;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
......@@ -61,7 +61,7 @@ public final class WhereClauseShardingConditionEngine implements ShardingConditi
private final ShardingRule shardingRule;
private final PhysicalSchemaMetaData schemaMetaData;
private final ShardingSphereSchema schema;
@Override
public List<ShardingCondition> createShardingConditions(final SQLStatementContext<?> sqlStatementContext, final List<Object> parameters) {
......@@ -101,7 +101,7 @@ public final class WhereClauseShardingConditionEngine implements ShardingConditi
if (!columnSegment.isPresent()) {
continue;
}
Optional<String> tableName = sqlStatementContext.getTablesContext().findTableName(columnSegment.get(), schemaMetaData);
Optional<String> tableName = sqlStatementContext.getTablesContext().findTableName(columnSegment.get(), schema);
if (!(tableName.isPresent() && shardingRule.isShardingColumn(columnSegment.get().getIdentifier().getValue(), tableName.get()))) {
continue;
}
......
......@@ -26,7 +26,7 @@ import org.apache.shardingsphere.infra.route.context.RouteUnit;
import org.apache.shardingsphere.sharding.route.engine.type.ShardingRouteEngine;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sharding.rule.TableRule;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropIndexStatement;
......@@ -42,7 +42,7 @@ import java.util.Optional;
@RequiredArgsConstructor
public final class ShardingTableBroadcastRoutingEngine implements ShardingRouteEngine {
private final PhysicalSchemaMetaData schemaMetaData;
private final ShardingSphereSchema schema;
private final SQLStatementContext sqlStatementContext;
......@@ -69,8 +69,8 @@ public final class ShardingTableBroadcastRoutingEngine implements ShardingRouteE
}
private Optional<String> findLogicTableNameFromMetaData(final String logicIndexName) {
for (String each : schemaMetaData.getAllTableNames()) {
if (schemaMetaData.get(each).getIndexes().containsKey(logicIndexName)) {
for (String each : schema.getAllTableNames()) {
if (schema.get(each).getIndexes().containsKey(logicIndexName)) {
return Optional.of(each);
}
}
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.type.single;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
......@@ -43,7 +43,7 @@ public final class SingleTableRoutingEngine implements ShardingRouteEngine {
private final Collection<String> logicTables;
private final PhysicalSchemaMetaData schema;
private final ShardingSphereSchema schema;
private final SQLStatement sqlStatement;
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.sharding.route.engine.validator;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
......@@ -40,7 +40,7 @@ public interface ShardingStatementValidator<T extends SQLStatement> {
* @param parameters SQL parameters
* @param schema ShardingSphere schema
*/
void preValidate(ShardingRule shardingRule, SQLStatementContext<T> sqlStatementContext, List<Object> parameters, PhysicalSchemaMetaData schema);
void preValidate(ShardingRule shardingRule, SQLStatementContext<T> sqlStatementContext, List<Object> parameters, ShardingSphereSchema schema);
/**
* Validate whether sharding operation is supported after route.
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sharding.route.engine.exception.NoSuchTableException;
import org.apache.shardingsphere.sharding.route.engine.exception.TableExistsException;
import org.apache.shardingsphere.sharding.route.engine.validator.ShardingStatementValidator;
......@@ -38,7 +38,7 @@ public abstract class ShardingDDLStatementValidator<T extends DDLStatement> impl
* @param schema ShardingSphere schema
* @param tables tables
*/
protected void validateShardingTable(final PhysicalSchemaMetaData schema, final Collection<SimpleTableSegment> tables) {
protected void validateShardingTable(final ShardingSphereSchema schema, final Collection<SimpleTableSegment> tables) {
for (SimpleTableSegment each : tables) {
String tableName = each.getTableName().getIdentifier().getValue();
if (schema.getAllTableNames().contains(tableName)) {
......@@ -53,7 +53,7 @@ public abstract class ShardingDDLStatementValidator<T extends DDLStatement> impl
* @param schema ShardingSphere schema
* @param tables tables
*/
protected void validateTableExist(final PhysicalSchemaMetaData schema, final Collection<SimpleTableSegment> tables) {
protected void validateTableExist(final ShardingSphereSchema schema, final Collection<SimpleTableSegment> tables) {
for (SimpleTableSegment each : tables) {
String tableName = each.getTableName().getIdentifier().getValue();
if (!schema.containsTable(tableName)) {
......@@ -69,7 +69,7 @@ public abstract class ShardingDDLStatementValidator<T extends DDLStatement> impl
* @param schema ShardingSphere schema
* @param tables tables
*/
protected void validateTableNotExist(final PhysicalSchemaMetaData schema, final Collection<SimpleTableSegment> tables) {
protected void validateTableNotExist(final ShardingSphereSchema schema, final Collection<SimpleTableSegment> tables) {
for (SimpleTableSegment each : tables) {
String tableName = each.getTableName().getIdentifier().getValue();
if (schema.containsTable(tableName)) {
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
......@@ -37,7 +37,7 @@ public final class ShardingAlterViewStatementValidator extends ShardingDDLStatem
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<AlterViewStatement> sqlStatementContext,
final List<Object> parameters, final PhysicalSchemaMetaData schema) {
final List<Object> parameters, final ShardingSphereSchema schema) {
Optional<SelectStatement> selectStatement = AlterViewStatementHandler.getSelectStatement(sqlStatementContext.getSqlStatement());
selectStatement.ifPresent(select -> {
TableExtractor extractor = new TableExtractor();
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
......@@ -39,7 +39,7 @@ public final class ShardingCreateFunctionStatementValidator extends ShardingDDLS
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateFunctionStatement> sqlStatementContext,
final List<Object> parameters, final PhysicalSchemaMetaData schema) {
final List<Object> parameters, final ShardingSphereSchema schema) {
Optional<RoutineBodySegment> routineBodySegment = CreateFunctionStatementHandler.getRoutineBodySegment(sqlStatementContext.getSqlStatement());
routineBodySegment.ifPresent(routineBody -> {
TableExtractor extractor = new TableExtractor();
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
......@@ -39,7 +39,7 @@ public final class ShardingCreateProcedureStatementValidator extends ShardingDDL
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateProcedureStatement> sqlStatementContext,
final List<Object> parameters, final PhysicalSchemaMetaData schema) {
final List<Object> parameters, final ShardingSphereSchema schema) {
Optional<RoutineBodySegment> routineBodySegment = CreateProcedureStatementHandler.getRoutineBodySegment(sqlStatementContext.getSqlStatement());
routineBodySegment.ifPresent(routineBody -> {
TableExtractor extractor = new TableExtractor();
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
......@@ -35,7 +35,7 @@ public final class ShardingCreateTableStatementValidator extends ShardingDDLStat
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateTableStatement> sqlStatementContext,
final List<Object> parameters, final PhysicalSchemaMetaData schema) {
final List<Object> parameters, final ShardingSphereSchema schema) {
if (!CreateTableStatementHandler.containsIfNotExistClause(sqlStatementContext.getSqlStatement())) {
validateTableNotExist(schema, Collections.singletonList(sqlStatementContext.getSqlStatement().getTable()));
}
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
......@@ -37,7 +37,7 @@ public final class ShardingCreateViewStatementValidator extends ShardingDDLState
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<CreateViewStatement> sqlStatementContext,
final List<Object> parameters, final PhysicalSchemaMetaData schema) {
final List<Object> parameters, final ShardingSphereSchema schema) {
Optional<SelectStatement> selectStatement = CreateViewStatementHandler.getSelectStatement(sqlStatementContext.getSqlStatement());
selectStatement.ifPresent(select -> {
TableExtractor extractor = new TableExtractor();
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.dml.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.dml.ShardingDMLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
......@@ -35,7 +35,7 @@ public final class ShardingDeleteStatementValidator extends ShardingDMLStatement
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<DeleteStatement> sqlStatementContext,
final List<Object> parameters, final PhysicalSchemaMetaData schema) {
final List<Object> parameters, final ShardingSphereSchema schema) {
validateShardingMultipleTable(shardingRule, sqlStatementContext);
}
......
......@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.binder.segment.table.TablesContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.dml.ShardingDMLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
......@@ -43,7 +43,7 @@ public final class ShardingInsertStatementValidator extends ShardingDMLStatement
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<InsertStatement> sqlStatementContext,
final List<Object> parameters, final PhysicalSchemaMetaData schema) {
final List<Object> parameters, final ShardingSphereSchema schema) {
if (null == ((InsertStatementContext) sqlStatementContext).getInsertSelectContext()) {
validateShardingMultipleTable(shardingRule, sqlStatementContext);
}
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.dml.impl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.sharding.route.engine.validator.dml.ShardingDMLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
......@@ -45,7 +45,7 @@ public final class ShardingUpdateStatementValidator extends ShardingDMLStatement
@Override
public void preValidate(final ShardingRule shardingRule, final SQLStatementContext<UpdateStatement> sqlStatementContext,
final List<Object> parameters, final PhysicalSchemaMetaData schema) {
final List<Object> parameters, final ShardingSphereSchema schema) {
validateShardingMultipleTable(shardingRule, sqlStatementContext);
UpdateStatement sqlStatement = sqlStatementContext.getSqlStatement();
String tableName = sqlStatementContext.getTablesContext().getTables().iterator().next().getTableName().getIdentifier().getValue();
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.condition.engine;
import org.apache.shardingsphere.infra.binder.LogicSQL;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.sharding.route.engine.condition.engine.impl.InsertClauseShardingConditionEngine;
import org.apache.shardingsphere.sharding.route.engine.condition.engine.impl.WhereClauseShardingConditionEngine;
......@@ -50,7 +50,7 @@ public final class ShardingConditionEngineFactoryTest {
@Before
public void setUp() {
when(metaData.getSchema()).thenReturn(mock(PhysicalSchemaMetaData.class));
when(metaData.getSchema()).thenReturn(mock(ShardingSphereSchema.class));
}
@Test
......
......@@ -22,7 +22,7 @@ import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dcl.GrantStatementContext;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditions;
import org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingDataSourceGroupBroadcastRoutingEngine;
import org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingDatabaseBroadcastRoutingEngine;
......@@ -95,7 +95,7 @@ public final class ShardingRouteEngineFactoryTest {
@Before
public void setUp() {
when(sqlStatementContext.getTablesContext()).thenReturn(tablesContext);
when(metaData.getSchema()).thenReturn(mock(PhysicalSchemaMetaData.class));
when(metaData.getSchema()).thenReturn(mock(ShardingSphereSchema.class));
tableNames = new ArrayList<>();
when(tablesContext.getTableNames()).thenReturn(tableNames);
}
......
......@@ -25,7 +25,7 @@ import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalIndexMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.binder.segment.table.TablesContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
......@@ -63,7 +63,7 @@ public final class ShardingTableBroadcastRoutingEngineTest {
private TablesContext tablesContext;
@Mock
private PhysicalSchemaMetaData schemaMetaData;
private ShardingSphereSchema schema;
@Mock
private PhysicalTableMetaData tableMetaData;
......@@ -79,12 +79,12 @@ public final class ShardingTableBroadcastRoutingEngineTest {
shardingRuleConfig.getTables().add(tableRuleConfig);
when(sqlStatementContext.getTablesContext()).thenReturn(tablesContext);
when(tablesContext.getTableNames()).thenReturn(Lists.newArrayList("t_order"));
when(schemaMetaData.getAllTableNames()).thenReturn(Lists.newArrayList("t_order"));
when(schemaMetaData.get("t_order")).thenReturn(tableMetaData);
when(schema.getAllTableNames()).thenReturn(Lists.newArrayList("t_order"));
when(schema.get("t_order")).thenReturn(tableMetaData);
Map<String, PhysicalIndexMetaData> indexMetaDataMap = new HashMap<>(1, 1);
indexMetaDataMap.put("index_name", new PhysicalIndexMetaData("index_name"));
when(tableMetaData.getIndexes()).thenReturn(indexMetaDataMap);
tableBroadcastRoutingEngine = new ShardingTableBroadcastRoutingEngine(schemaMetaData, sqlStatementContext);
tableBroadcastRoutingEngine = new ShardingTableBroadcastRoutingEngine(schema, sqlStatementContext);
shardingRule = new ShardingRule(shardingRuleConfig, Arrays.asList("ds0", "ds1"));
}
......
......@@ -17,7 +17,7 @@
package org.apache.shardingsphere.sharding.route.engine.type.single;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
......@@ -41,7 +41,7 @@ public final class SingleTableRoutingEngineTest {
@Test
public void assertRoute() {
SingleTableRoutingEngine singleTableRoutingEngine = new SingleTableRoutingEngine(Arrays.asList("t_order", "t_order_item"), createShardingSphereSchema(), null);
SingleTableRoutingEngine singleTableRoutingEngine = new SingleTableRoutingEngine(Arrays.asList("t_order", "t_order_item"), buildSchema(), null);
ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
ShardingRule shardingRule = new ShardingRule(shardingRuleConfig, Arrays.asList("ds_0", "ds_1"));
RouteContext routeContext = new RouteContext();
......@@ -61,7 +61,7 @@ public final class SingleTableRoutingEngineTest {
@Test
public void assertRouteWithoutShardingRule() {
SingleTableRoutingEngine singleTableRoutingEngine = new SingleTableRoutingEngine(Arrays.asList("t_order", "t_order_item"), createShardingSphereSchema(), new MySQLCreateTableStatement());
SingleTableRoutingEngine singleTableRoutingEngine = new SingleTableRoutingEngine(Arrays.asList("t_order", "t_order_item"), buildSchema(), new MySQLCreateTableStatement());
ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
ShardingRule shardingRule = new ShardingRule(shardingRuleConfig, Arrays.asList("ds_0", "ds_1"));
RouteContext routeContext = new RouteContext();
......@@ -78,14 +78,14 @@ public final class SingleTableRoutingEngineTest {
assertThat(tableMapper1.getLogicName(), is("t_order_item"));
}
private PhysicalSchemaMetaData createShardingSphereSchema() {
private ShardingSphereSchema buildSchema() {
Map<String, PhysicalTableMetaData> tables = new HashMap<>(2, 1);
tables.put("t_order", createTableMetaData());
tables.put("t_order_item", createTableMetaData());
return new PhysicalSchemaMetaData(tables);
tables.put("t_order", buildTableMetaData());
tables.put("t_order_item", buildTableMetaData());
return new ShardingSphereSchema(tables);
}
private PhysicalTableMetaData createTableMetaData() {
private PhysicalTableMetaData buildTableMetaData() {
PhysicalTableMetaData result = new PhysicalTableMetaData();
result.getAddressingDataSources().add("ds_0");
return result;
......
......@@ -25,7 +25,7 @@ import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.parser.sql.SQLStatementParserEngine;
import org.apache.shardingsphere.infra.route.context.RouteContext;
......@@ -50,7 +50,7 @@ public abstract class AbstractSQLRouteTest extends AbstractRoutingEngineTest {
protected final RouteContext assertRoute(final String sql, final List<Object> parameters) {
ShardingRule shardingRule = createAllShardingRule();
PhysicalSchemaMetaData schema = buildPhysicalSchemaMetaData();
ShardingSphereSchema schema = buildSchema();
ConfigurationProperties props = new ConfigurationProperties(new Properties());
SQLStatementParserEngine sqlStatementParserEngine = new SQLStatementParserEngine("MySQL");
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(schema, parameters, sqlStatementParserEngine.parse(sql, false));
......@@ -62,7 +62,7 @@ public abstract class AbstractSQLRouteTest extends AbstractRoutingEngineTest {
return result;
}
private PhysicalSchemaMetaData buildPhysicalSchemaMetaData() {
private ShardingSphereSchema buildSchema() {
Map<String, PhysicalTableMetaData> tableMetaDataMap = new HashMap<>(3, 1);
tableMetaDataMap.put("t_order", new PhysicalTableMetaData(Arrays.asList(new PhysicalColumnMetaData("order_id", Types.INTEGER, "int", true, false, false),
new PhysicalColumnMetaData("user_id", Types.INTEGER, "int", false, false, false),
......@@ -75,6 +75,6 @@ public abstract class AbstractSQLRouteTest extends AbstractRoutingEngineTest {
tableMetaDataMap.put("t_other", new PhysicalTableMetaData(Collections.singletonList(new PhysicalColumnMetaData("order_id", Types.INTEGER, "int", true, false, false)), Collections.emptySet()));
tableMetaDataMap.put("t_category", new PhysicalTableMetaData());
tableMetaDataMap.get("t_category").getAddressingDataSources().add("single_db");
return new PhysicalSchemaMetaData(tableMetaDataMap);
return new ShardingSphereSchema(tableMetaDataMap);
}
}
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl.ShardingAlterViewStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
......@@ -48,7 +48,7 @@ public final class ShardingAlterViewStatementValidatorTest {
MySQLAlterViewStatement sqlStatement = new MySQLAlterViewStatement();
sqlStatement.setSelect(selectStatement);
SQLStatementContext<AlterViewStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
PhysicalSchemaMetaData schema = mock(PhysicalSchemaMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
new ShardingAlterViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
}
......@@ -59,7 +59,7 @@ public final class ShardingAlterViewStatementValidatorTest {
selectStatement.setFrom(new SimpleTableSegment(0, 0, new IdentifierValue("t_order")));
MySQLAlterViewStatement sqlStatement = new MySQLAlterViewStatement();
sqlStatement.setSelect(selectStatement);
PhysicalSchemaMetaData schema = mock(PhysicalSchemaMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.getAllTableNames()).thenReturn(Collections.singleton("t_order"));
SQLStatementContext<AlterViewStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
new ShardingAlterViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sharding.route.engine.exception.NoSuchTableException;
import org.apache.shardingsphere.sharding.route.engine.exception.TableExistsException;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl.ShardingCreateFunctionStatementValidator;
......@@ -63,7 +63,7 @@ public final class ShardingCreateFunctionStatementValidatorTest {
MySQLCreateFunctionStatement sqlStatement = new MySQLCreateFunctionStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
PhysicalSchemaMetaData schema = mock(PhysicalSchemaMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.containsTable("t_order_item")).thenReturn(true);
new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
}
......@@ -79,7 +79,7 @@ public final class ShardingCreateFunctionStatementValidatorTest {
MySQLCreateFunctionStatement sqlStatement = new MySQLCreateFunctionStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class, RETURNS_DEEP_STUBS));
new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS));
}
@Test(expected = NoSuchTableException.class)
......@@ -93,7 +93,7 @@ public final class ShardingCreateFunctionStatementValidatorTest {
MySQLCreateFunctionStatement sqlStatement = new MySQLCreateFunctionStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class, RETURNS_DEEP_STUBS));
new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS));
}
@Test(expected = TableExistsException.class)
......@@ -107,7 +107,7 @@ public final class ShardingCreateFunctionStatementValidatorTest {
MySQLCreateFunctionStatement sqlStatement = new MySQLCreateFunctionStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
PhysicalSchemaMetaData schema = mock(PhysicalSchemaMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.containsTable("t_order")).thenReturn(true);
new ShardingCreateFunctionStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
}
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sharding.route.engine.exception.NoSuchTableException;
import org.apache.shardingsphere.sharding.route.engine.exception.TableExistsException;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl.ShardingCreateProcedureStatementValidator;
......@@ -63,7 +63,7 @@ public final class ShardingCreateProcedureStatementValidatorTest {
MySQLCreateProcedureStatement sqlStatement = new MySQLCreateProcedureStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateProcedureStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
PhysicalSchemaMetaData schema = mock(PhysicalSchemaMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.containsTable("t_order_item")).thenReturn(true);
new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
}
......@@ -79,7 +79,7 @@ public final class ShardingCreateProcedureStatementValidatorTest {
MySQLCreateProcedureStatement sqlStatement = new MySQLCreateProcedureStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateProcedureStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class, RETURNS_DEEP_STUBS));
new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS));
}
@Test(expected = NoSuchTableException.class)
......@@ -93,7 +93,7 @@ public final class ShardingCreateProcedureStatementValidatorTest {
MySQLCreateProcedureStatement sqlStatement = new MySQLCreateProcedureStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateProcedureStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class, RETURNS_DEEP_STUBS));
new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS));
}
@Test(expected = TableExistsException.class)
......@@ -107,7 +107,7 @@ public final class ShardingCreateProcedureStatementValidatorTest {
MySQLCreateProcedureStatement sqlStatement = new MySQLCreateProcedureStatement();
sqlStatement.setRoutineBody(routineBody);
SQLStatementContext<CreateProcedureStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
PhysicalSchemaMetaData schema = mock(PhysicalSchemaMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.containsTable("t_order")).thenReturn(true);
new ShardingCreateProcedureStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
}
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.ddl.CreateTableStatementContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sharding.route.engine.exception.TableExistsException;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl.ShardingCreateTableStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
......@@ -83,7 +83,7 @@ public final class ShardingCreateTableStatementValidatorTest {
private void assertValidateCreateTable(final CreateTableStatement sqlStatement) {
SQLStatementContext<CreateTableStatement> sqlStatementContext = new CreateTableStatementContext(sqlStatement);
PhysicalSchemaMetaData schema = mock(PhysicalSchemaMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.containsTable("t_order")).thenReturn(true);
new ShardingCreateTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
}
......@@ -106,7 +106,7 @@ public final class ShardingCreateTableStatementValidatorTest {
private void assertValidateCreateTableIfNotExists(final CreateTableStatement sqlStatement) {
SQLStatementContext<CreateTableStatement> sqlStatementContext = new CreateTableStatementContext(sqlStatement);
PhysicalSchemaMetaData schema = mock(PhysicalSchemaMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.containsTable("t_order")).thenReturn(true);
new ShardingCreateTableStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
}
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl.ShardingCreateViewStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
......@@ -48,7 +48,7 @@ public final class ShardingCreateViewStatementValidatorTest {
MySQLCreateViewStatement sqlStatement = new MySQLCreateViewStatement();
sqlStatement.setSelect(selectStatement);
SQLStatementContext<CreateViewStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
new ShardingCreateViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class));
new ShardingCreateViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
}
@Test(expected = ShardingSphereException.class)
......@@ -57,7 +57,7 @@ public final class ShardingCreateViewStatementValidatorTest {
selectStatement.setFrom(new SimpleTableSegment(0, 0, new IdentifierValue("t_order")));
MySQLCreateViewStatement sqlStatement = new MySQLCreateViewStatement();
sqlStatement.setSelect(selectStatement);
PhysicalSchemaMetaData schema = mock(PhysicalSchemaMetaData.class);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.getAllTableNames()).thenReturn(Collections.singleton("t_order"));
SQLStatementContext<CreateViewStatement> sqlStatementContext = new CommonSQLStatementContext<>(sqlStatement);
new ShardingCreateViewStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), schema);
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sharding.route.engine.validator.dml;
import com.google.common.collect.Lists;
import org.apache.shardingsphere.infra.binder.statement.dml.DeleteStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sharding.route.engine.validator.dml.impl.ShardingDeleteStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.DeleteMultiTableSegment;
......@@ -84,6 +84,6 @@ public final class ShardingDeleteStatementValidatorTest {
Collection<String> shardingTableNames = Lists.newArrayList("order", "order_item");
when(shardingRule.getShardingLogicTableNames(sqlStatementContext.getTablesContext().getTableNames())).thenReturn(shardingTableNames);
when(shardingRule.isAllBindingTables(shardingTableNames)).thenReturn(true);
new ShardingDeleteStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class));
new ShardingDeleteStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
}
}
......@@ -22,7 +22,7 @@ import org.apache.shardingsphere.infra.binder.segment.table.TablesContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sharding.route.engine.validator.dml.impl.ShardingInsertStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.AssignmentSegment;
......@@ -61,27 +61,27 @@ public final class ShardingInsertStatementValidatorTest {
@Test(expected = ShardingSphereException.class)
public void assertValidateInsertModifyMultiTables() {
SQLStatementContext<InsertStatement> sqlStatementContext = new InsertStatementContext(
new PhysicalSchemaMetaData(Collections.emptyMap()), Collections.singletonList(1), createInsertStatement());
new ShardingSphereSchema(Collections.emptyMap()), Collections.singletonList(1), createInsertStatement());
Collection<String> shardingTableNames = Lists.newArrayList("order", "order_item");
when(shardingRule.getShardingLogicTableNames(sqlStatementContext.getTablesContext().getTableNames())).thenReturn(shardingTableNames);
when(shardingRule.isAllBindingTables(shardingTableNames)).thenReturn(true);
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class));
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
}
@Test
public void assertValidateOnDuplicateKeyWithoutShardingKey() {
when(shardingRule.isShardingColumn("id", "user")).thenReturn(false);
SQLStatementContext<InsertStatement> sqlStatementContext = new InsertStatementContext(
new PhysicalSchemaMetaData(Collections.emptyMap()), Collections.singletonList(1), createInsertStatement());
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class));
new ShardingSphereSchema(Collections.emptyMap()), Collections.singletonList(1), createInsertStatement());
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
}
@Test(expected = ShardingSphereException.class)
public void assertValidateOnDuplicateKeyWithShardingKey() {
when(shardingRule.isShardingColumn("id", "user")).thenReturn(true);
SQLStatementContext<InsertStatement> sqlStatementContext = new InsertStatementContext(
new PhysicalSchemaMetaData(Collections.emptyMap()), Collections.singletonList(1), createInsertStatement());
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class));
new ShardingSphereSchema(Collections.emptyMap()), Collections.singletonList(1), createInsertStatement());
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
}
@Test(expected = ShardingSphereException.class)
......@@ -89,9 +89,9 @@ public final class ShardingInsertStatementValidatorTest {
when(shardingRule.findGenerateKeyColumnName("user")).thenReturn(Optional.of("id"));
when(shardingRule.isGenerateKeyColumn("id", "user")).thenReturn(false);
SQLStatementContext<InsertStatement> sqlStatementContext = new InsertStatementContext(
new PhysicalSchemaMetaData(Collections.emptyMap()), Collections.singletonList(1), createInsertSelectStatement());
new ShardingSphereSchema(Collections.emptyMap()), Collections.singletonList(1), createInsertSelectStatement());
sqlStatementContext.getTablesContext().getTables().addAll(createSingleTablesContext().getTables());
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class));
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
}
@Test
......@@ -99,9 +99,9 @@ public final class ShardingInsertStatementValidatorTest {
when(shardingRule.findGenerateKeyColumnName("user")).thenReturn(Optional.of("id"));
when(shardingRule.isGenerateKeyColumn("id", "user")).thenReturn(true);
SQLStatementContext<InsertStatement> sqlStatementContext = new InsertStatementContext(
new PhysicalSchemaMetaData(Collections.emptyMap()), Collections.singletonList(1), createInsertSelectStatement());
new ShardingSphereSchema(Collections.emptyMap()), Collections.singletonList(1), createInsertSelectStatement());
sqlStatementContext.getTablesContext().getTables().addAll(createSingleTablesContext().getTables());
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class));
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
}
@Test(expected = ShardingSphereException.class)
......@@ -111,9 +111,9 @@ public final class ShardingInsertStatementValidatorTest {
TablesContext multiTablesContext = createMultiTablesContext();
when(shardingRule.isAllBindingTables(multiTablesContext.getTableNames())).thenReturn(false);
SQLStatementContext<InsertStatement> sqlStatementContext = new InsertStatementContext(
new PhysicalSchemaMetaData(Collections.emptyMap()), Collections.singletonList(1), createInsertSelectStatement());
new ShardingSphereSchema(Collections.emptyMap()), Collections.singletonList(1), createInsertSelectStatement());
sqlStatementContext.getTablesContext().getTables().addAll(multiTablesContext.getTables());
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class));
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
}
@Test
......@@ -123,9 +123,9 @@ public final class ShardingInsertStatementValidatorTest {
TablesContext multiTablesContext = createMultiTablesContext();
when(shardingRule.isAllBindingTables(multiTablesContext.getTableNames())).thenReturn(true);
SQLStatementContext<InsertStatement> sqlStatementContext = new InsertStatementContext(
new PhysicalSchemaMetaData(Collections.emptyMap()), Collections.singletonList(1), createInsertSelectStatement());
new ShardingSphereSchema(Collections.emptyMap()), Collections.singletonList(1), createInsertSelectStatement());
sqlStatementContext.getTablesContext().getTables().addAll(multiTablesContext.getTables());
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class));
new ShardingInsertStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
}
private InsertStatement createInsertStatement() {
......
......@@ -21,7 +21,7 @@ import com.google.common.collect.Lists;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.UpdateStatementContext;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sharding.route.engine.validator.dml.impl.ShardingUpdateStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.AssignmentSegment;
......@@ -66,40 +66,40 @@ public final class ShardingUpdateStatementValidatorTest {
Collection<String> tableNames = Lists.newArrayList("order", "order_item");
when(shardingRule.getShardingLogicTableNames(sqlStatementContext.getTablesContext().getTableNames())).thenReturn(tableNames);
when(shardingRule.isAllBindingTables(tableNames)).thenReturn(true);
new ShardingUpdateStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(PhysicalSchemaMetaData.class));
new ShardingUpdateStatementValidator().preValidate(shardingRule, sqlStatementContext, Collections.emptyList(), mock(ShardingSphereSchema.class));
}
@Test
public void assertValidateUpdateWithoutShardingKey() {
when(shardingRule.isShardingColumn("id", "user")).thenReturn(false);
new ShardingUpdateStatementValidator().preValidate(shardingRule, new UpdateStatementContext(createUpdateStatement()), Collections.emptyList(), mock(PhysicalSchemaMetaData.class));
new ShardingUpdateStatementValidator().preValidate(shardingRule, new UpdateStatementContext(createUpdateStatement()), Collections.emptyList(), mock(ShardingSphereSchema.class));
}
@Test(expected = ShardingSphereException.class)
public void assertValidateUpdateWithShardingKey() {
when(shardingRule.isShardingColumn("id", "user")).thenReturn(true);
new ShardingUpdateStatementValidator().preValidate(shardingRule, new UpdateStatementContext(createUpdateStatement()), Collections.emptyList(), mock(PhysicalSchemaMetaData.class));
new ShardingUpdateStatementValidator().preValidate(shardingRule, new UpdateStatementContext(createUpdateStatement()), Collections.emptyList(), mock(ShardingSphereSchema.class));
}
@Test
public void assertValidateUpdateWithoutShardingKeyAndParameters() {
when(shardingRule.isShardingColumn("id", "user")).thenReturn(false);
List<Object> parameters = Arrays.asList(1, 1);
new ShardingUpdateStatementValidator().preValidate(shardingRule, new UpdateStatementContext(createUpdateStatement()), parameters, mock(PhysicalSchemaMetaData.class));
new ShardingUpdateStatementValidator().preValidate(shardingRule, new UpdateStatementContext(createUpdateStatement()), parameters, mock(ShardingSphereSchema.class));
}
@Test
public void assertValidateUpdateWithShardingKeyAndShardingParameterEquals() {
when(shardingRule.isShardingColumn("id", "user")).thenReturn(true);
List<Object> parameters = Arrays.asList(1, 1);
new ShardingUpdateStatementValidator().preValidate(shardingRule, new UpdateStatementContext(createUpdateStatementAndParameters(1)), parameters, mock(PhysicalSchemaMetaData.class));
new ShardingUpdateStatementValidator().preValidate(shardingRule, new UpdateStatementContext(createUpdateStatementAndParameters(1)), parameters, mock(ShardingSphereSchema.class));
}
@Test(expected = ShardingSphereException.class)
public void assertValidateUpdateWithShardingKeyAndShardingParameterNotEquals() {
when(shardingRule.isShardingColumn("id", "user")).thenReturn(true);
List<Object> parameters = Arrays.asList(1, 1);
new ShardingUpdateStatementValidator().preValidate(shardingRule, new UpdateStatementContext(createUpdateStatementAndParameters(2)), parameters, mock(PhysicalSchemaMetaData.class));
new ShardingUpdateStatementValidator().preValidate(shardingRule, new UpdateStatementContext(createUpdateStatementAndParameters(2)), parameters, mock(ShardingSphereSchema.class));
}
private UpdateStatement createUpdateStatement() {
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.governance.core.event.model.metadata;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
/**
* Meta data changed event.
......@@ -31,5 +31,5 @@ public final class MetaDataChangedEvent implements GovernanceEvent {
private final String schemaName;
private final PhysicalSchemaMetaData metaData;
private final ShardingSphereSchema schema;
}
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.governance.core.event.model.persist;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
/**
* Meta data event.
......@@ -31,5 +31,5 @@ public final class MetaDataPersistEvent implements GovernanceEvent {
private final String schemaName;
private final PhysicalSchemaMetaData metaData;
private final ShardingSphereSchema schema;
}
......@@ -24,7 +24,7 @@ import org.apache.shardingsphere.governance.core.yaml.config.metadata.YamlSchema
import org.apache.shardingsphere.governance.core.yaml.config.metadata.YamlTableMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalIndexMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.infra.yaml.swapper.YamlSwapper;
......@@ -39,22 +39,22 @@ import java.util.stream.Collectors;
/**
* Logic schema meta data configuration YAML swapper.
*/
public final class LogicSchemaMetaDataYamlSwapper implements YamlSwapper<YamlLogicSchemaMetaData, PhysicalSchemaMetaData> {
public final class LogicSchemaMetaDataYamlSwapper implements YamlSwapper<YamlLogicSchemaMetaData, ShardingSphereSchema> {
@Override
public YamlLogicSchemaMetaData swapToYamlConfiguration(final PhysicalSchemaMetaData metaData) {
public YamlLogicSchemaMetaData swapToYamlConfiguration(final ShardingSphereSchema schema) {
YamlLogicSchemaMetaData result = new YamlLogicSchemaMetaData();
result.setConfiguredSchemaMetaData(convertYamlSchema(metaData));
result.setConfiguredSchemaMetaData(convertYamlSchema(schema));
return result;
}
@Override
public PhysicalSchemaMetaData swapToObject(final YamlLogicSchemaMetaData yamlConfig) {
return Optional.ofNullable(yamlConfig.getConfiguredSchemaMetaData()).map(this::convertSchema).orElse(new PhysicalSchemaMetaData());
public ShardingSphereSchema swapToObject(final YamlLogicSchemaMetaData yamlConfig) {
return Optional.ofNullable(yamlConfig.getConfiguredSchemaMetaData()).map(this::convertSchema).orElse(new ShardingSphereSchema());
}
private PhysicalSchemaMetaData convertSchema(final YamlSchemaMetaData schema) {
return new PhysicalSchemaMetaData(schema.getTables().entrySet().stream()
private ShardingSphereSchema convertSchema(final YamlSchemaMetaData schema) {
return new ShardingSphereSchema(schema.getTables().entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, entry -> convertTable(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new)));
}
......@@ -78,7 +78,7 @@ public final class LogicSchemaMetaDataYamlSwapper implements YamlSwapper<YamlLog
return new PhysicalColumnMetaData(column.getName(), column.getDataType(), column.getDataTypeName(), column.isPrimaryKey(), column.isGenerated(), column.isCaseSensitive());
}
private YamlSchemaMetaData convertYamlSchema(final PhysicalSchemaMetaData schema) {
private YamlSchemaMetaData convertYamlSchema(final ShardingSphereSchema schema) {
Map<String, YamlTableMetaData> tables = schema.getAllTableNames().stream()
.collect(Collectors.toMap(each -> each, each -> convertYamlTable(schema.get(each)), (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
YamlSchemaMetaData result = new YamlSchemaMetaData();
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.governance.core.yaml.swapper;
import lombok.SneakyThrows;
import org.apache.shardingsphere.governance.core.yaml.config.metadata.YamlLogicSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
import org.junit.Test;
......@@ -40,8 +40,8 @@ public final class LogicSchemaMetaDataYamlSwapperTest {
@Test
public void assertSwapToYamlLogicSchemaMetaData() {
PhysicalSchemaMetaData physicalSchemaMetaData = new LogicSchemaMetaDataYamlSwapper().swapToObject(YamlEngine.unmarshal(readYAML(META_DATA_YAM), YamlLogicSchemaMetaData.class));
YamlLogicSchemaMetaData yamlLogicSchemaMetaData = new LogicSchemaMetaDataYamlSwapper().swapToYamlConfiguration(physicalSchemaMetaData);
ShardingSphereSchema schema = new LogicSchemaMetaDataYamlSwapper().swapToObject(YamlEngine.unmarshal(readYAML(META_DATA_YAM), YamlLogicSchemaMetaData.class));
YamlLogicSchemaMetaData yamlLogicSchemaMetaData = new LogicSchemaMetaDataYamlSwapper().swapToYamlConfiguration(schema);
assertNotNull(yamlLogicSchemaMetaData);
assertNotNull(yamlLogicSchemaMetaData.getConfiguredSchemaMetaData());
assertThat(yamlLogicSchemaMetaData.getConfiguredSchemaMetaData().getTables().keySet(), is(Collections.singleton("t_order")));
......@@ -52,11 +52,11 @@ public final class LogicSchemaMetaDataYamlSwapperTest {
@Test
public void assertSwapToLogicSchemaMetaData() {
YamlLogicSchemaMetaData yamlLogicSchemaMetaData = YamlEngine.unmarshal(readYAML(META_DATA_YAM), YamlLogicSchemaMetaData.class);
PhysicalSchemaMetaData physicalSchemaMetaData = new LogicSchemaMetaDataYamlSwapper().swapToObject(yamlLogicSchemaMetaData);
assertThat(physicalSchemaMetaData.getAllTableNames(), is(Collections.singleton("t_order")));
assertThat(physicalSchemaMetaData.get("t_order").getIndexes().keySet(), is(Collections.singleton("primary")));
assertThat(physicalSchemaMetaData.getAllColumnNames("t_order").size(), is(1));
assertThat(physicalSchemaMetaData.get("t_order").getColumns().keySet(), is(Collections.singleton("id")));
ShardingSphereSchema schema = new LogicSchemaMetaDataYamlSwapper().swapToObject(yamlLogicSchemaMetaData);
assertThat(schema.getAllTableNames(), is(Collections.singleton("t_order")));
assertThat(schema.get("t_order").getIndexes().keySet(), is(Collections.singleton("primary")));
assertThat(schema.getAllColumnNames("t_order").size(), is(1));
assertThat(schema.get("t_order").getColumns().keySet(), is(Collections.singleton("id")));
}
@SneakyThrows({URISyntaxException.class, IOException.class})
......
......@@ -40,7 +40,7 @@ import org.apache.shardingsphere.infra.auth.yaml.config.YamlAuthenticationConfig
import org.apache.shardingsphere.infra.auth.yaml.swapper.AuthenticationYamlSwapper;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.yaml.config.YamlRootRuleConfigurations;
import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
......@@ -132,7 +132,14 @@ public final class ConfigCenter {
*/
@Subscribe
public synchronized void renew(final SchemaNamePersistEvent event) {
persistSchema(event.getSchemaName(), event.isDrop());
String schemaNames = repository.get(node.getSchemasPath());
Collection<String> schemas = Strings.isNullOrEmpty(schemaNames) ? new LinkedHashSet<>() : new LinkedHashSet<>(Splitter.on(",").splitToList(schemaNames));
if (event.isDrop()) {
schemas.remove(event.getSchemaName());
} else if (!schemas.contains(event.getSchemaName())) {
schemas.add(event.getSchemaName());
}
repository.persist(node.getSchemasPath(), Joiner.on(",").join(schemas));
}
/**
......@@ -142,7 +149,7 @@ public final class ConfigCenter {
*/
@Subscribe
public synchronized void renew(final MetaDataPersistEvent event) {
persistMetaData(event.getSchemaName(), event.getMetaData());
persistSchema(event.getSchemaName(), event.getSchema());
}
private void persistDataSourceConfigurations(final String schemaName, final Map<String, DataSourceConfiguration> dataSourceConfigurations, final boolean isOverwrite) {
......@@ -251,17 +258,6 @@ public final class ConfigCenter {
repository.persist(node.getSchemasPath(), Joiner.on(",").join(newArrayList));
}
private void persistSchema(final String schemaName, final boolean isDrop) {
String schemaNames = repository.get(node.getSchemasPath());
Collection<String> schemas = Strings.isNullOrEmpty(schemaNames) ? new LinkedHashSet<>() : new LinkedHashSet<>(Splitter.on(",").splitToList(schemaNames));
if (isDrop) {
schemas.remove(schemaName);
} else if (!schemas.contains(schemaName)) {
schemas.add(schemaName);
}
repository.persist(node.getSchemasPath(), Joiner.on(",").join(schemas));
}
/**
* Load data source configurations.
*
......@@ -339,22 +335,22 @@ public final class ConfigCenter {
}
/**
* Persist rule schema meta data.
* Persist ShardingSphere schema.
*
* @param schemaName schema name
* @param physicalSchemaMetaData physical schema meta data
* @param schema ShardingSphere schema
*/
public void persistMetaData(final String schemaName, final PhysicalSchemaMetaData physicalSchemaMetaData) {
repository.persist(node.getTablePath(schemaName), YamlEngine.marshal(new LogicSchemaMetaDataYamlSwapper().swapToYamlConfiguration(physicalSchemaMetaData)));
public void persistSchema(final String schemaName, final ShardingSphereSchema schema) {
repository.persist(node.getTablePath(schemaName), YamlEngine.marshal(new LogicSchemaMetaDataYamlSwapper().swapToYamlConfiguration(schema)));
}
/**
* Load rule schema meta data.
* Load ShardingSphere schema.
*
* @param schemaName schema name
* @return rule schema meta data of the schema
* @return ShardingSphere schema
*/
public Optional<PhysicalSchemaMetaData> loadMetaData(final String schemaName) {
public Optional<ShardingSphereSchema> loadSchema(final String schemaName) {
String path = repository.get(node.getTablePath(schemaName));
if (Strings.isNullOrEmpty(path)) {
return Optional.empty();
......
......@@ -35,7 +35,6 @@ import org.apache.shardingsphere.governance.core.yaml.swapper.LogicSchemaMetaDat
import org.apache.shardingsphere.governance.repository.api.ConfigurationRepository;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.yaml.config.YamlRootRuleConfigurations;
import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
......@@ -142,7 +141,6 @@ public final class SchemaChangedListener extends PostGovernanceRepositoryEventLi
}
private GovernanceEvent createMetaDataChangedEvent(final String schemaName, final DataChangedEvent event) {
PhysicalSchemaMetaData physicalSchemaMetaData = new LogicSchemaMetaDataYamlSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlLogicSchemaMetaData.class));
return new MetaDataChangedEvent(schemaName, physicalSchemaMetaData);
return new MetaDataChangedEvent(schemaName, new LogicSchemaMetaDataYamlSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlLogicSchemaMetaData.class)));
}
}
......@@ -33,7 +33,7 @@ import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.yaml.config.YamlRootRuleConfigurations;
import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
......@@ -498,27 +498,27 @@ public final class ConfigCenterTest {
}
@Test
public void assertPersistMetaData() {
PhysicalSchemaMetaData physicalSchemaMetaData = new LogicSchemaMetaDataYamlSwapper().swapToObject(YamlEngine.unmarshal(readYAML(META_DATA_YAML), YamlLogicSchemaMetaData.class));
public void assertPersistSchema() {
ShardingSphereSchema schema = new LogicSchemaMetaDataYamlSwapper().swapToObject(YamlEngine.unmarshal(readYAML(META_DATA_YAML), YamlLogicSchemaMetaData.class));
ConfigCenter configCenter = new ConfigCenter(configurationRepository);
configCenter.persistMetaData("sharding_db", physicalSchemaMetaData);
configCenter.persistSchema("sharding_db", schema);
verify(configurationRepository).persist(eq("/schemas/sharding_db/table"), anyString());
}
@Test
public void assertLoadMetaData() {
public void assertLoadSchema() {
when(configurationRepository.get("/schemas/sharding_db/table")).thenReturn(readYAML(META_DATA_YAML));
ConfigCenter configCenter = new ConfigCenter(configurationRepository);
Optional<PhysicalSchemaMetaData> physicalSchemaMetaDataOptional = configCenter.loadMetaData("sharding_db");
assertTrue(physicalSchemaMetaDataOptional.isPresent());
Optional<PhysicalSchemaMetaData> empty = configCenter.loadMetaData("test");
Optional<ShardingSphereSchema> schemaOptional = configCenter.loadSchema("sharding_db");
assertTrue(schemaOptional.isPresent());
Optional<ShardingSphereSchema> empty = configCenter.loadSchema("test");
assertThat(empty, is(Optional.empty()));
PhysicalSchemaMetaData physicalSchemaMetaData = physicalSchemaMetaDataOptional.get();
ShardingSphereSchema schema = schemaOptional.get();
verify(configurationRepository).get(eq("/schemas/sharding_db/table"));
assertThat(physicalSchemaMetaData.getAllTableNames(), is(Collections.singleton("t_order")));
assertThat(physicalSchemaMetaData.get("t_order").getIndexes().keySet(), is(Collections.singleton("primary")));
assertThat(physicalSchemaMetaData.getAllColumnNames("t_order").size(), is(1));
assertThat(physicalSchemaMetaData.get("t_order").getColumns().keySet(), is(Collections.singleton("id")));
assertThat(schema.getAllTableNames(), is(Collections.singleton("t_order")));
assertThat(schema.get("t_order").getIndexes().keySet(), is(Collections.singleton("primary")));
assertThat(schema.getAllColumnNames("t_order").size(), is(1));
assertThat(schema.get("t_order").getColumns().keySet(), is(Collections.singleton("id")));
}
@Test
......
......@@ -257,7 +257,7 @@ public final class SchemaChangedListenerTest {
DataChangedEvent dataChangedEvent = new DataChangedEvent("/schemas/sharding_db/table", readYAML(META_DATA_FILE), Type.UPDATED);
Optional<GovernanceEvent> actual = schemaChangedListener.createGovernanceEvent(dataChangedEvent);
assertTrue(actual.isPresent());
assertTrue(((MetaDataChangedEvent) actual.get()).getMetaData().getAllTableNames().contains("t_order"));
assertTrue(((MetaDataChangedEvent) actual.get()).getSchema().getAllTableNames().contains("t_order"));
}
@SneakyThrows({IOException.class, URISyntaxException.class})
......
......@@ -44,7 +44,7 @@ import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.event.impl.DataSourceNameDisabledEvent;
import org.apache.shardingsphere.infra.rule.type.StatusContainedRule;
......@@ -94,7 +94,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
}
private void persistMetaData() {
schemaContexts.getMetaDataMap().forEach((key, value) -> governanceFacade.getConfigCenter().persistMetaData(key, value.getSchema()));
schemaContexts.getMetaDataMap().forEach((key, value) -> governanceFacade.getConfigCenter().persistSchema(key, value.getSchema()));
}
@Override
......@@ -159,7 +159,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
Map<String, ShardingSphereMetaData> metaDataMap = new HashMap<>(schemaContexts.getMetaDataMap());
metaDataMap.put(event.getSchemaName(), createAddedMetaData(event));
schemaContexts = new StandardSchemaContexts(metaDataMap, schemaContexts.getExecutorKernel(), schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
governanceFacade.getConfigCenter().persistMetaData(event.getSchemaName(), schemaContexts.getMetaDataMap().get(event.getSchemaName()).getSchema());
governanceFacade.getConfigCenter().persistSchema(event.getSchemaName(), schemaContexts.getMetaDataMap().get(event.getSchemaName()).getSchema());
GovernanceEventBus.getInstance().post(
new DataSourceChangeCompletedEvent(event.getSchemaName(), schemaContexts.getDatabaseType(), metaDataMap.get(event.getSchemaName()).getResource().getDataSources()));
}
......@@ -210,7 +210,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
for (Entry<String, ShardingSphereMetaData> entry : schemaContexts.getMetaDataMap().entrySet()) {
String schemaName = entry.getKey();
ShardingSphereMetaData oldMetaData = entry.getValue();
ShardingSphereMetaData newMetaData = event.getSchemaName().equals(schemaName) ? getChangedMetaData(oldMetaData, event.getMetaData(), schemaName) : oldMetaData;
ShardingSphereMetaData newMetaData = event.getSchemaName().equals(schemaName) ? getChangedMetaData(oldMetaData, event.getSchema(), schemaName) : oldMetaData;
newMetaDataMap.put(schemaName, newMetaData);
}
schemaContexts = new StandardSchemaContexts(
......@@ -231,7 +231,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
newMetaDataMap.put(schemaName, getChangedMetaData(schemaContexts.getMetaDataMap().get(schemaName), event.getRuleConfigurations()));
schemaContexts = new StandardSchemaContexts(
newMetaDataMap, schemaContexts.getExecutorKernel(), schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
governanceFacade.getConfigCenter().persistMetaData(schemaName, newMetaDataMap.get(schemaName).getSchema());
governanceFacade.getConfigCenter().persistSchema(schemaName, newMetaDataMap.get(schemaName).getSchema());
}
/**
......@@ -297,9 +297,9 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
return result;
}
private ShardingSphereMetaData getChangedMetaData(final ShardingSphereMetaData oldMetaData, final PhysicalSchemaMetaData newSchemaMetaData, final String schemaName) {
private ShardingSphereMetaData getChangedMetaData(final ShardingSphereMetaData oldMetaData, final ShardingSphereSchema schema, final String schemaName) {
// TODO refresh tableAddressingMetaData
return new ShardingSphereMetaData(schemaName, oldMetaData.getResource(), oldMetaData.getRuleMetaData(), newSchemaMetaData);
return new ShardingSphereMetaData(schemaName, oldMetaData.getResource(), oldMetaData.getRuleMetaData(), schema);
}
private ShardingSphereMetaData getChangedMetaData(final ShardingSphereMetaData oldMetaData, final Collection<RuleConfiguration> ruleConfigs) throws SQLException {
......
......@@ -40,7 +40,7 @@ import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rule.event.RuleChangedEvent;
import org.apache.shardingsphere.jdbc.test.MockedDataSource;
import org.apache.shardingsphere.replicaquery.rule.ReplicaQueryRule;
......@@ -112,7 +112,7 @@ public final class GovernanceSchemaContextsTest {
private Map<String, ShardingSphereMetaData> createMetaDataMap() {
when(metaData.getName()).thenReturn("schema");
when(metaData.getResource()).thenReturn(mock(ShardingSphereResource.class));
when(metaData.getSchema()).thenReturn(mock(PhysicalSchemaMetaData.class));
when(metaData.getSchema()).thenReturn(mock(ShardingSphereSchema.class));
when(metaData.getRuleMetaData().getRules()).thenReturn(Collections.singletonList(replicaQueryRule));
return Collections.singletonMap("schema", metaData);
}
......@@ -191,7 +191,7 @@ public final class GovernanceSchemaContextsTest {
@Test
public void assertMetaDataChanged() {
MetaDataChangedEvent event = new MetaDataChangedEvent("schema_changed", mock(PhysicalSchemaMetaData.class));
MetaDataChangedEvent event = new MetaDataChangedEvent("schema_changed", mock(ShardingSphereSchema.class));
governanceSchemaContexts.renew(event);
assertTrue(governanceSchemaContexts.getMetaDataMap().containsKey("schema"));
assertFalse(governanceSchemaContexts.getMetaDataMap().containsKey("schema_changed"));
......@@ -199,7 +199,7 @@ public final class GovernanceSchemaContextsTest {
@Test
public void assertMetaDataChangedWithExistSchema() {
MetaDataChangedEvent event = new MetaDataChangedEvent("schema", mock(PhysicalSchemaMetaData.class));
MetaDataChangedEvent event = new MetaDataChangedEvent("schema", mock(ShardingSphereSchema.class));
governanceSchemaContexts.renew(event);
assertThat(governanceSchemaContexts.getMetaDataMap().get("schema"), not(metaData));
}
......
......@@ -45,7 +45,7 @@ import org.apache.shardingsphere.infra.binder.statement.dml.DeleteStatementConte
import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.UpdateStatementContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dcl.DCLStatement;
......@@ -87,14 +87,14 @@ public final class SQLStatementContextFactory {
/**
* Create SQL statement context.
*
* @param schemaMetaData table meta data
* @param schema ShardingSphere schema
* @param parameters SQL parameters
* @param sqlStatement SQL statement
* @return SQL statement context
*/
public static SQLStatementContext<?> newInstance(final PhysicalSchemaMetaData schemaMetaData, final List<Object> parameters, final SQLStatement sqlStatement) {
public static SQLStatementContext<?> newInstance(final ShardingSphereSchema schema, final List<Object> parameters, final SQLStatement sqlStatement) {
if (sqlStatement instanceof DMLStatement) {
return getDMLStatementContext(schemaMetaData, parameters, (DMLStatement) sqlStatement);
return getDMLStatementContext(schema, parameters, (DMLStatement) sqlStatement);
}
if (sqlStatement instanceof DDLStatement) {
return getDDLStatementContext((DDLStatement) sqlStatement);
......@@ -108,9 +108,9 @@ public final class SQLStatementContextFactory {
return new CommonSQLStatementContext<>(sqlStatement);
}
private static SQLStatementContext<?> getDMLStatementContext(final PhysicalSchemaMetaData schemaMetaData, final List<Object> parameters, final DMLStatement sqlStatement) {
private static SQLStatementContext<?> getDMLStatementContext(final ShardingSphereSchema schema, final List<Object> parameters, final DMLStatement sqlStatement) {
if (sqlStatement instanceof SelectStatement) {
return new SelectStatementContext(schemaMetaData, parameters, (SelectStatement) sqlStatement);
return new SelectStatementContext(schema, parameters, (SelectStatement) sqlStatement);
}
if (sqlStatement instanceof UpdateStatement) {
return new UpdateStatementContext((UpdateStatement) sqlStatement);
......@@ -119,7 +119,7 @@ public final class SQLStatementContextFactory {
return new DeleteStatementContext((DeleteStatement) sqlStatement);
}
if (sqlStatement instanceof InsertStatement) {
return new InsertStatementContext(schemaMetaData, parameters, (InsertStatement) sqlStatement);
return new InsertStatementContext(schema, parameters, (InsertStatement) sqlStatement);
}
if (sqlStatement instanceof CallStatement) {
return new CallStatementContext((CallStatement) sqlStatement);
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.binder.segment.insert.keygen.engine;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.insert.keygen.GeneratedKeyContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.SetAssignmentSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
......@@ -42,7 +42,7 @@ public final class GeneratedKeyContextEngine {
private final InsertStatement insertStatement;
private final PhysicalSchemaMetaData schemaMetaData;
private final ShardingSphereSchema schema;
/**
* Create generate key context.
......@@ -54,15 +54,15 @@ public final class GeneratedKeyContextEngine {
*/
public Optional<GeneratedKeyContext> createGenerateKeyContext(final List<String> insertColumnNames, final List<List<ExpressionSegment>> valueExpressions, final List<Object> parameters) {
String tableName = insertStatement.getTable().getTableName().getIdentifier().getValue();
return findGenerateKeyColumn(tableName).map(generateKeyColumnName -> containsGenerateKey(insertColumnNames, generateKeyColumnName)
? findGeneratedKey(insertColumnNames, valueExpressions, parameters, generateKeyColumnName) : new GeneratedKeyContext(generateKeyColumnName, true));
return findGenerateKeyColumn(tableName).map(optional -> containsGenerateKey(insertColumnNames, optional)
? findGeneratedKey(insertColumnNames, valueExpressions, parameters, optional) : new GeneratedKeyContext(optional, true));
}
private Optional<String> findGenerateKeyColumn(final String tableName) {
if (!schemaMetaData.containsTable(tableName)) {
if (!schema.containsTable(tableName)) {
return Optional.empty();
}
for (Entry<String, PhysicalColumnMetaData> entry : schemaMetaData.get(tableName).getColumns().entrySet()) {
for (Entry<String, PhysicalColumnMetaData> entry : schema.get(tableName).getColumns().entrySet()) {
if (entry.getValue().isGenerated()) {
return Optional.of(entry.getKey());
}
......@@ -71,7 +71,7 @@ public final class GeneratedKeyContextEngine {
}
private boolean containsGenerateKey(final List<String> insertColumnNames, final String generateKeyColumnName) {
return insertColumnNames.isEmpty() ? schemaMetaData.getAllColumnNames(insertStatement.getTable().getTableName().getIdentifier().getValue()).size() == getValueCountForPerGroup()
return insertColumnNames.isEmpty() ? schema.getAllColumnNames(insertStatement.getTable().getTableName().getIdentifier().getValue()).size() == getValueCountForPerGroup()
: insertColumnNames.contains(generateKeyColumnName);
}
......@@ -111,7 +111,7 @@ public final class GeneratedKeyContextEngine {
}
private int findGenerateKeyIndex(final List<String> insertColumnNames, final String generateKeyColumnName) {
return insertColumnNames.isEmpty() ? schemaMetaData.getAllColumnNames(insertStatement.getTable().getTableName().getIdentifier().getValue()).indexOf(generateKeyColumnName)
return insertColumnNames.isEmpty() ? schema.getAllColumnNames(insertStatement.getTable().getTableName().getIdentifier().getValue()).indexOf(generateKeyColumnName)
: insertColumnNames.indexOf(generateKeyColumnName);
}
}
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.infra.binder.segment.select.projection.engine;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.select.projection.DerivedColumn;
import org.apache.shardingsphere.infra.binder.segment.select.projection.Projection;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.AggregationDistinctProjection;
......@@ -47,7 +47,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public final class ProjectionEngine {
private final PhysicalSchemaMetaData schemaMetaData;
private final ShardingSphereSchema schema;
private int aggregationAverageDerivedColumnCount;
......@@ -123,7 +123,7 @@ public final class ProjectionEngine {
private Collection<ColumnProjection> getUnqualifiedShorthandColumns(final Collection<SimpleTableSegment> tables) {
Collection<ColumnProjection> result = new LinkedList<>();
for (SimpleTableSegment each : tables) {
result.addAll(schemaMetaData.getAllColumnNames(
result.addAll(schema.getAllColumnNames(
each.getTableName().getIdentifier().getValue()).stream().map(columnName -> new ColumnProjection(null, columnName, null)).collect(Collectors.toList()));
}
return result;
......@@ -133,7 +133,7 @@ public final class ProjectionEngine {
for (SimpleTableSegment each : tables) {
String tableName = each.getTableName().getIdentifier().getValue();
if (owner.equalsIgnoreCase(each.getAlias().orElse(tableName))) {
return schemaMetaData.getAllColumnNames(tableName).stream().map(columnName -> new ColumnProjection(owner, columnName, null)).collect(Collectors.toList());
return schema.getAllColumnNames(tableName).stream().map(columnName -> new ColumnProjection(owner, columnName, null)).collect(Collectors.toList());
}
}
return Collections.emptyList();
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.infra.binder.segment.select.projection.engine;
import com.google.common.base.Preconditions;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.select.groupby.GroupByContext;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByContext;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByItem;
......@@ -45,13 +45,13 @@ import java.util.Optional;
*/
public final class ProjectionsContextEngine {
private final PhysicalSchemaMetaData schemaMetaData;
private final ShardingSphereSchema schema;
private final ProjectionEngine projectionEngine;
public ProjectionsContextEngine(final PhysicalSchemaMetaData schemaMetaData) {
this.schemaMetaData = schemaMetaData;
projectionEngine = new ProjectionEngine(schemaMetaData);
public ProjectionsContextEngine(final ShardingSphereSchema schema) {
this.schema = schema;
projectionEngine = new ProjectionEngine(schema);
}
/**
......@@ -177,7 +177,7 @@ public final class ProjectionsContextEngine {
private boolean isSameProjection(final ShorthandProjection shorthandProjection, final ColumnOrderByItemSegment orderItem, final Collection<SimpleTableSegment> tables) {
Preconditions.checkState(shorthandProjection.getOwner().isPresent());
SimpleTableSegment tableSegment = find(shorthandProjection.getOwner().get(), tables);
return schemaMetaData.containsColumn(tableSegment.getTableName().getIdentifier().getValue(), orderItem.getColumn().getIdentifier().getValue());
return schema.containsColumn(tableSegment.getTableName().getIdentifier().getValue(), orderItem.getColumn().getIdentifier().getValue());
}
private boolean isSameAlias(final Projection projection, final TextOrderByItemSegment orderItem) {
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.binder.segment.table;
import lombok.Getter;
import lombok.ToString;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.ColumnProjection;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
......@@ -74,34 +74,34 @@ public final class TablesContext {
* Find table name.
*
* @param column column segment
* @param schemaMetaData schema meta data
* @param schema schema meta data
* @return table name
*/
public Optional<String> findTableName(final ColumnSegment column, final PhysicalSchemaMetaData schemaMetaData) {
public Optional<String> findTableName(final ColumnSegment column, final ShardingSphereSchema schema) {
if (1 == tables.size()) {
return Optional.of(tables.iterator().next().getTableName().getIdentifier().getValue());
}
if (column.getOwner().isPresent()) {
return Optional.of(findTableNameFromSQL(column.getOwner().get().getIdentifier().getValue()));
}
return findTableNameFromMetaData(column.getIdentifier().getValue(), schemaMetaData);
return findTableNameFromMetaData(column.getIdentifier().getValue(), schema);
}
/**
* Find table name.
*
* @param column column projection
* @param schemaMetaData schema meta data
* @param schema schema meta data
* @return table name
*/
public Optional<String> findTableName(final ColumnProjection column, final PhysicalSchemaMetaData schemaMetaData) {
public Optional<String> findTableName(final ColumnProjection column, final ShardingSphereSchema schema) {
if (1 == tables.size()) {
return Optional.of(tables.iterator().next().getTableName().getIdentifier().getValue());
}
if (null != column.getOwner()) {
return Optional.of(findTableNameFromSQL(column.getOwner()));
}
return findTableNameFromMetaData(column.getName(), schemaMetaData);
return findTableNameFromMetaData(column.getName(), schema);
}
/**
......@@ -118,9 +118,9 @@ public final class TablesContext {
throw new IllegalStateException("Can not find owner from table.");
}
private Optional<String> findTableNameFromMetaData(final String columnName, final PhysicalSchemaMetaData schemaMetaData) {
private Optional<String> findTableNameFromMetaData(final String columnName, final ShardingSphereSchema schema) {
for (SimpleTableSegment each : tables) {
if (schemaMetaData.containsColumn(each.getTableName().getIdentifier().getValue(), columnName)) {
if (schema.containsColumn(each.getTableName().getIdentifier().getValue(), columnName)) {
return Optional.of(each.getTableName().getIdentifier().getValue());
}
}
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.infra.binder.statement.dml;
import lombok.Getter;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.insert.keygen.GeneratedKeyContext;
import org.apache.shardingsphere.infra.binder.segment.insert.keygen.engine.GeneratedKeyContextEngine;
import org.apache.shardingsphere.infra.binder.segment.insert.values.InsertSelectContext;
......@@ -66,16 +66,16 @@ public final class InsertStatementContext extends CommonSQLStatementContext<Inse
private final GeneratedKeyContext generatedKeyContext;
public InsertStatementContext(final PhysicalSchemaMetaData schemaMetaData, final List<Object> parameters, final InsertStatement sqlStatement) {
public InsertStatementContext(final ShardingSphereSchema schema, final List<Object> parameters, final InsertStatement sqlStatement) {
super(sqlStatement);
List<String> insertColumnNames = getInsertColumnNames();
columnNames = useDefaultColumns() ? schemaMetaData.getAllColumnNames(sqlStatement.getTable().getTableName().getIdentifier().getValue()) : insertColumnNames;
columnNames = useDefaultColumns() ? schema.getAllColumnNames(sqlStatement.getTable().getTableName().getIdentifier().getValue()) : insertColumnNames;
AtomicInteger parametersOffset = new AtomicInteger(0);
insertValueContexts = getInsertValueContexts(parameters, parametersOffset);
insertSelectContext = getInsertSelectContext(schemaMetaData, parameters, parametersOffset).orElse(null);
insertSelectContext = getInsertSelectContext(schema, parameters, parametersOffset).orElse(null);
tablesContext = getTablesContext(sqlStatement);
onDuplicateKeyUpdateValueContext = getOnDuplicateKeyUpdateValueContext(parameters, parametersOffset).orElse(null);
generatedKeyContext = new GeneratedKeyContextEngine(sqlStatement, schemaMetaData).createGenerateKeyContext(insertColumnNames, getAllValueExpressions(sqlStatement), parameters).orElse(null);
generatedKeyContext = new GeneratedKeyContextEngine(sqlStatement, schema).createGenerateKeyContext(insertColumnNames, getAllValueExpressions(sqlStatement), parameters).orElse(null);
}
private TablesContext getTablesContext(final InsertStatement sqlStatement) {
......@@ -98,12 +98,12 @@ public final class InsertStatementContext extends CommonSQLStatementContext<Inse
return result;
}
private Optional<InsertSelectContext> getInsertSelectContext(final PhysicalSchemaMetaData schemaMetaData, final List<Object> parameters, final AtomicInteger parametersOffset) {
private Optional<InsertSelectContext> getInsertSelectContext(final ShardingSphereSchema schema, final List<Object> parameters, final AtomicInteger parametersOffset) {
if (!getSqlStatement().getInsertSelect().isPresent()) {
return Optional.empty();
}
SubquerySegment insertSelectSegment = getSqlStatement().getInsertSelect().get();
SelectStatementContext selectStatementContext = new SelectStatementContext(schemaMetaData, parameters, insertSelectSegment.getSelect());
SelectStatementContext selectStatementContext = new SelectStatementContext(schema, parameters, insertSelectSegment.getSelect());
InsertSelectContext insertSelectContext = new InsertSelectContext(selectStatementContext, parameters, parametersOffset.get());
parametersOffset.addAndGet(insertSelectContext.getParameterCount());
return Optional.of(insertSelectContext);
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.binder.statement.dml;
import com.google.common.base.Preconditions;
import lombok.Getter;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.select.groupby.GroupByContext;
import org.apache.shardingsphere.infra.binder.segment.select.groupby.engine.GroupByContextEngine;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByContext;
......@@ -81,12 +81,12 @@ public final class SelectStatementContext extends CommonSQLStatementContext<Sele
containsSubquery = containsSubquery();
}
public SelectStatementContext(final PhysicalSchemaMetaData schemaMetaData, final List<Object> parameters, final SelectStatement sqlStatement) {
public SelectStatementContext(final ShardingSphereSchema schema, final List<Object> parameters, final SelectStatement sqlStatement) {
super(sqlStatement);
tablesContext = new TablesContext(getSimpleTableSegments());
groupByContext = new GroupByContextEngine().createGroupByContext(sqlStatement);
orderByContext = new OrderByContextEngine().createOrderBy(sqlStatement, groupByContext);
projectionsContext = new ProjectionsContextEngine(schemaMetaData).createProjectionsContext(getSimpleTableSegments(), getSqlStatement().getProjections(), groupByContext, orderByContext);
projectionsContext = new ProjectionsContextEngine(schema).createProjectionsContext(getSimpleTableSegments(), getSqlStatement().getProjections(), groupByContext, orderByContext);
paginationContext = new PaginationContextEngine().createPaginationContext(sqlStatement, projectionsContext, parameters);
containsSubquery = containsSubquery();
}
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.binder.segment.insert.keygen.engine;
import org.apache.shardingsphere.infra.binder.segment.insert.keygen.GeneratedKeyContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.InsertValuesSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
......@@ -58,14 +58,14 @@ import static org.junit.Assert.assertTrue;
@RunWith(MockitoJUnitRunner.class)
public final class GeneratedKeyContextEngineTest {
private PhysicalSchemaMetaData schemaMetaData;
private ShardingSphereSchema schema;
@Before
public void setUp() {
PhysicalTableMetaData tableMetaData = new PhysicalTableMetaData(Collections.singletonList(new PhysicalColumnMetaData("id", Types.INTEGER, "INT", true, true, false)), Collections.emptyList());
Map<String, PhysicalTableMetaData> tableMetaDataMap = new HashMap<>(1, 1);
tableMetaDataMap.put("tbl", tableMetaData);
schemaMetaData = new PhysicalSchemaMetaData(tableMetaDataMap);
schema = new ShardingSphereSchema(tableMetaDataMap);
}
@Test
......@@ -96,7 +96,7 @@ public final class GeneratedKeyContextEngineTest {
private void assertCreateGenerateKeyContextWithoutGenerateKeyColumnConfiguration(final InsertStatement insertStatement) {
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("tbl1")));
insertStatement.setInsertColumns(new InsertColumnsSegment(0, 0, Collections.singletonList(new ColumnSegment(0, 0, new IdentifierValue("id")))));
assertFalse(new GeneratedKeyContextEngine(insertStatement, schemaMetaData).createGenerateKeyContext(Collections.emptyList(),
assertFalse(new GeneratedKeyContextEngine(insertStatement, schema).createGenerateKeyContext(Collections.emptyList(),
Collections.emptyList(), Collections.singletonList(1)).isPresent());
}
......@@ -130,7 +130,7 @@ public final class GeneratedKeyContextEngineTest {
insertStatement.setInsertColumns(new InsertColumnsSegment(0, 0, Collections.singletonList(new ColumnSegment(0, 0, new IdentifierValue("id")))));
List<ExpressionSegment> expressionSegments = Collections.singletonList(new LiteralExpressionSegment(0, 0, 1));
insertStatement.getValues().add(new InsertValuesSegment(0, 0, expressionSegments));
Optional<GeneratedKeyContext> actual = new GeneratedKeyContextEngine(insertStatement, schemaMetaData)
Optional<GeneratedKeyContext> actual = new GeneratedKeyContextEngine(insertStatement, schema)
.createGenerateKeyContext(Collections.singletonList("id"), Collections.singletonList(expressionSegments), Collections.singletonList(1));
assertTrue(actual.isPresent());
assertThat(actual.get().getGeneratedValues().size(), is(1));
......@@ -169,7 +169,7 @@ public final class GeneratedKeyContextEngineTest {
insertStatement.getValues().add(new InsertValuesSegment(0, 0, Collections.singletonList(new LiteralExpressionSegment(1, 2, "value"))));
insertStatement.getValues().add(new InsertValuesSegment(0, 0, Collections.singletonList(new CommonExpressionSegment(1, 2, "ignored value"))));
List<List<ExpressionSegment>> valueExpressions = insertStatement.getValues().stream().map(InsertValuesSegment::getValues).collect(Collectors.toList());
Optional<GeneratedKeyContext> actual = new GeneratedKeyContextEngine(insertStatement, schemaMetaData)
Optional<GeneratedKeyContext> actual = new GeneratedKeyContextEngine(insertStatement, schema)
.createGenerateKeyContext(Collections.singletonList("id"), valueExpressions, Collections.singletonList(1));
assertTrue(actual.isPresent());
assertThat(actual.get().getGeneratedValues().size(), is(3));
......@@ -177,7 +177,6 @@ public final class GeneratedKeyContextEngineTest {
assertThat(generatedValuesIterator.next(), is((Comparable) 1));
assertThat(generatedValuesIterator.next(), is((Comparable) 100));
assertThat(generatedValuesIterator.next(), is((Comparable) "value"));
assertTrue(new GeneratedKeyContextEngine(insertStatement, schemaMetaData).createGenerateKeyContext(Collections.emptyList(),
Collections.emptyList(), Collections.singletonList(1)).isPresent());
assertTrue(new GeneratedKeyContextEngine(insertStatement, schema).createGenerateKeyContext(Collections.emptyList(), Collections.emptyList(), Collections.singletonList(1)).isPresent());
}
}
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.binder.segment.select.projection.engine;
import org.apache.shardingsphere.infra.binder.segment.select.projection.Projection;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.AggregationDistinctProjection;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.AggregationProjection;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.ColumnProjection;
import org.apache.shardingsphere.infra.binder.segment.select.projection.impl.ExpressionProjection;
......@@ -49,14 +49,14 @@ public final class ProjectionEngineTest {
@Test
public void assertCreateProjectionWhenProjectionSegmentNotMatched() {
assertFalse(new ProjectionEngine(mock(PhysicalSchemaMetaData.class)).createProjection(Collections.emptyList(), null).isPresent());
assertFalse(new ProjectionEngine(mock(ShardingSphereSchema.class)).createProjection(Collections.emptyList(), null).isPresent());
}
@Test
public void assertCreateProjectionWhenProjectionSegmentInstanceOfShorthandProjectionSegment() {
ShorthandProjectionSegment shorthandProjectionSegment = new ShorthandProjectionSegment(0, 0);
shorthandProjectionSegment.setOwner(new OwnerSegment(0, 0, new IdentifierValue("tbl")));
Optional<Projection> actual = new ProjectionEngine(mock(PhysicalSchemaMetaData.class)).createProjection(Collections.emptyList(), shorthandProjectionSegment);
Optional<Projection> actual = new ProjectionEngine(mock(ShardingSphereSchema.class)).createProjection(Collections.emptyList(), shorthandProjectionSegment);
assertTrue(actual.isPresent());
assertThat(actual.get(), instanceOf(ShorthandProjection.class));
}
......@@ -65,7 +65,7 @@ public final class ProjectionEngineTest {
public void assertCreateProjectionWhenProjectionSegmentInstanceOfColumnProjectionSegment() {
ColumnProjectionSegment columnProjectionSegment = new ColumnProjectionSegment(new ColumnSegment(0, 10, new IdentifierValue("name")));
columnProjectionSegment.setAlias(new AliasSegment(0, 0, new IdentifierValue("alias")));
Optional<Projection> actual = new ProjectionEngine(mock(PhysicalSchemaMetaData.class)).createProjection(Collections.emptyList(), columnProjectionSegment);
Optional<Projection> actual = new ProjectionEngine(mock(ShardingSphereSchema.class)).createProjection(Collections.emptyList(), columnProjectionSegment);
assertTrue(actual.isPresent());
assertThat(actual.get(), instanceOf(ColumnProjection.class));
}
......@@ -73,7 +73,7 @@ public final class ProjectionEngineTest {
@Test
public void assertCreateProjectionWhenProjectionSegmentInstanceOfExpressionProjectionSegment() {
ExpressionProjectionSegment expressionProjectionSegment = new ExpressionProjectionSegment(0, 10, "text");
Optional<Projection> actual = new ProjectionEngine(mock(PhysicalSchemaMetaData.class)).createProjection(Collections.emptyList(), expressionProjectionSegment);
Optional<Projection> actual = new ProjectionEngine(mock(ShardingSphereSchema.class)).createProjection(Collections.emptyList(), expressionProjectionSegment);
assertTrue(actual.isPresent());
assertThat(actual.get(), instanceOf(ExpressionProjection.class));
}
......@@ -81,7 +81,7 @@ public final class ProjectionEngineTest {
@Test
public void assertCreateProjectionWhenProjectionSegmentInstanceOfAggregationDistinctProjectionSegment() {
AggregationDistinctProjectionSegment aggregationDistinctProjectionSegment = new AggregationDistinctProjectionSegment(0, 10, AggregationType.COUNT, "(1)", "distinctExpression");
Optional<Projection> actual = new ProjectionEngine(mock(PhysicalSchemaMetaData.class)).createProjection(Collections.emptyList(), aggregationDistinctProjectionSegment);
Optional<Projection> actual = new ProjectionEngine(mock(ShardingSphereSchema.class)).createProjection(Collections.emptyList(), aggregationDistinctProjectionSegment);
assertTrue(actual.isPresent());
assertThat(actual.get(), instanceOf(AggregationDistinctProjection.class));
}
......@@ -89,7 +89,7 @@ public final class ProjectionEngineTest {
@Test
public void assertCreateProjectionWhenProjectionSegmentInstanceOfAggregationProjectionSegment() {
AggregationProjectionSegment aggregationProjectionSegment = new AggregationProjectionSegment(0, 10, AggregationType.COUNT, "(1)");
Optional<Projection> actual = new ProjectionEngine(mock(PhysicalSchemaMetaData.class)).createProjection(Collections.emptyList(), aggregationProjectionSegment);
Optional<Projection> actual = new ProjectionEngine(mock(ShardingSphereSchema.class)).createProjection(Collections.emptyList(), aggregationProjectionSegment);
assertTrue(actual.isPresent());
assertThat(actual.get(), instanceOf(AggregationProjection.class));
}
......@@ -97,7 +97,7 @@ public final class ProjectionEngineTest {
@Test
public void assertCreateProjectionWhenProjectionSegmentInstanceOfAggregationDistinctProjectionSegmentAndAggregationTypeIsAvg() {
AggregationDistinctProjectionSegment aggregationDistinctProjectionSegment = new AggregationDistinctProjectionSegment(0, 10, AggregationType.AVG, "(1)", "distinctExpression");
Optional<Projection> actual = new ProjectionEngine(mock(PhysicalSchemaMetaData.class)).createProjection(Collections.emptyList(), aggregationDistinctProjectionSegment);
Optional<Projection> actual = new ProjectionEngine(mock(ShardingSphereSchema.class)).createProjection(Collections.emptyList(), aggregationDistinctProjectionSegment);
assertTrue(actual.isPresent());
assertThat(actual.get(), instanceOf(AggregationDistinctProjection.class));
}
......@@ -105,7 +105,7 @@ public final class ProjectionEngineTest {
@Test
public void assertCreateProjectionWhenProjectionSegmentInstanceOfAggregationProjectionSegmentAndAggregationTypeIsAvg() {
AggregationProjectionSegment aggregationProjectionSegment = new AggregationProjectionSegment(0, 10, AggregationType.AVG, "(1)");
Optional<Projection> actual = new ProjectionEngine(mock(PhysicalSchemaMetaData.class)).createProjection(Collections.emptyList(), aggregationProjectionSegment);
Optional<Projection> actual = new ProjectionEngine(mock(ShardingSphereSchema.class)).createProjection(Collections.emptyList(), aggregationProjectionSegment);
assertTrue(actual.isPresent());
assertThat(actual.get(), instanceOf(AggregationProjection.class));
}
......
......@@ -18,12 +18,12 @@
package org.apache.shardingsphere.infra.binder.segment.select.projection.engine;
import com.google.common.collect.Lists;
import org.apache.shardingsphere.infra.binder.segment.select.projection.ProjectionsContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.binder.segment.select.groupby.GroupByContext;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByContext;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByItem;
import org.apache.shardingsphere.infra.binder.segment.select.projection.ProjectionsContext;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sql.parser.sql.common.constant.OrderDirection;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ColumnProjectionSegment;
......@@ -41,7 +41,6 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dml.Ora
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.dml.PostgreSQLSelectStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sql92.dml.SQL92SelectStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dml.SQLServerSelectStatement;
import org.junit.Before;
import org.junit.Test;
import java.util.Collection;
......@@ -51,34 +50,29 @@ import java.util.LinkedList;
import static org.junit.Assert.assertNotNull;
public final class ProjectionsContextEngineTest {
private PhysicalSchemaMetaData schemaMetaData;
@Before
public void setUp() {
schemaMetaData = new PhysicalSchemaMetaData(Collections.emptyMap());
}
private final ShardingSphereSchema schema = new ShardingSphereSchema(Collections.emptyMap());
@Test
public void assertProjectionsContextCreatedProperlyForMySQL() {
assertProjectionsContextCreatedProperly(new MySQLSelectStatement());
}
@Test
public void assertProjectionsContextCreatedProperlyForOracle() {
assertProjectionsContextCreatedProperly(new OracleSelectStatement());
}
@Test
public void assertProjectionsContextCreatedProperlyForPostgreSQL() {
assertProjectionsContextCreatedProperly(new PostgreSQLSelectStatement());
}
@Test
public void assertProjectionsContextCreatedProperlyForSQL92() {
assertProjectionsContextCreatedProperly(new SQL92SelectStatement());
}
@Test
public void assertProjectionsContextCreatedProperlyForSQLServer() {
assertProjectionsContextCreatedProperly(new SQLServerSelectStatement());
......@@ -87,34 +81,34 @@ public final class ProjectionsContextEngineTest {
private void assertProjectionsContextCreatedProperly(final SelectStatement selectStatement) {
ProjectionsContextEngine projectionsContextEngine = new ProjectionsContextEngine(null);
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SelectStatementContext selectStatementContext = new SelectStatementContext(schemaMetaData, new LinkedList<>(), selectStatement);
SelectStatementContext selectStatementContext = new SelectStatementContext(schema, new LinkedList<>(), selectStatement);
Collection<SimpleTableSegment> tables = selectStatementContext.getSimpleTableSegments();
ProjectionsSegment projectionsSegment = selectStatement.getProjections();
ProjectionsContext actual = projectionsContextEngine
.createProjectionsContext(tables, projectionsSegment, new GroupByContext(Collections.emptyList(), 0), new OrderByContext(Collections.emptyList(), false));
assertNotNull(actual);
}
@Test
public void assertProjectionsContextCreatedProperlyWhenProjectionPresentForMySQL() {
assertProjectionsContextCreatedProperlyWhenProjectionPresent(new MySQLSelectStatement());
}
@Test
public void assertProjectionsContextCreatedProperlyWhenProjectionPresentForOracle() {
assertProjectionsContextCreatedProperlyWhenProjectionPresent(new OracleSelectStatement());
}
@Test
public void assertProjectionsContextCreatedProperlyWhenProjectionPresentForPostgreSQL() {
assertProjectionsContextCreatedProperlyWhenProjectionPresent(new PostgreSQLSelectStatement());
}
@Test
public void assertProjectionsContextCreatedProperlyWhenProjectionPresentForSQL92() {
assertProjectionsContextCreatedProperlyWhenProjectionPresent(new SQL92SelectStatement());
}
@Test
public void assertProjectionsContextCreatedProperlyWhenProjectionPresentForSQLServer() {
assertProjectionsContextCreatedProperlyWhenProjectionPresent(new SQLServerSelectStatement());
......@@ -127,33 +121,33 @@ public final class ProjectionsContextEngineTest {
OwnerSegment owner = new OwnerSegment(0, 10, new IdentifierValue("name"));
shorthandProjectionSegment.setOwner(owner);
projectionsSegment.getProjections().addAll(Collections.singleton(shorthandProjectionSegment));
SelectStatementContext selectStatementContext = new SelectStatementContext(schemaMetaData, new LinkedList<>(), selectStatement);
SelectStatementContext selectStatementContext = new SelectStatementContext(schema, new LinkedList<>(), selectStatement);
Collection<SimpleTableSegment> tables = selectStatementContext.getSimpleTableSegments();
ProjectionsContext actual = new ProjectionsContextEngine(schemaMetaData)
ProjectionsContext actual = new ProjectionsContextEngine(schema)
.createProjectionsContext(tables, projectionsSegment, new GroupByContext(Collections.emptyList(), 0), new OrderByContext(Collections.emptyList(), false));
assertNotNull(actual);
}
@Test
public void createProjectionsContextWhenOrderByContextOrderItemsPresentForMySQL() {
createProjectionsContextWhenOrderByContextOrderItemsPresent(new MySQLSelectStatement());
}
@Test
public void createProjectionsContextWhenOrderByContextOrderItemsPresentForOracle() {
createProjectionsContextWhenOrderByContextOrderItemsPresent(new OracleSelectStatement());
}
@Test
public void createProjectionsContextWhenOrderByContextOrderItemsPresentForPostgreSQL() {
createProjectionsContextWhenOrderByContextOrderItemsPresent(new PostgreSQLSelectStatement());
}
@Test
public void createProjectionsContextWhenOrderByContextOrderItemsPresentForSQL92() {
createProjectionsContextWhenOrderByContextOrderItemsPresent(new SQL92SelectStatement());
}
@Test
public void createProjectionsContextWhenOrderByContextOrderItemsPresentForSQLServer() {
createProjectionsContextWhenOrderByContextOrderItemsPresent(new SQLServerSelectStatement());
......@@ -168,33 +162,33 @@ public final class ProjectionsContextEngineTest {
projectionsSegment.getProjections().addAll(Collections.singleton(shorthandProjectionSegment));
OrderByItem orderByItem = new OrderByItem(new IndexOrderByItemSegment(0, 1, 0, OrderDirection.ASC));
OrderByContext orderByContext = new OrderByContext(Collections.singletonList(orderByItem), true);
SelectStatementContext selectStatementContext = new SelectStatementContext(schemaMetaData, new LinkedList<>(), selectStatement);
SelectStatementContext selectStatementContext = new SelectStatementContext(schema, new LinkedList<>(), selectStatement);
Collection<SimpleTableSegment> tables = selectStatementContext.getSimpleTableSegments();
ProjectionsContext actual = new ProjectionsContextEngine(schemaMetaData)
ProjectionsContext actual = new ProjectionsContextEngine(schema)
.createProjectionsContext(tables, projectionsSegment, new GroupByContext(Collections.emptyList(), 0), orderByContext);
assertNotNull(actual);
}
@Test
public void assertCreateProjectionsContextWithoutIndexOrderByItemSegmentForMySQL() {
assertCreateProjectionsContextWithoutIndexOrderByItemSegment(new MySQLSelectStatement());
}
@Test
public void assertCreateProjectionsContextWithoutIndexOrderByItemSegmentForOracle() {
assertCreateProjectionsContextWithoutIndexOrderByItemSegment(new OracleSelectStatement());
}
@Test
public void assertCreateProjectionsContextWithoutIndexOrderByItemSegmentForPostgreSQL() {
assertCreateProjectionsContextWithoutIndexOrderByItemSegment(new PostgreSQLSelectStatement());
}
@Test
public void assertCreateProjectionsContextWithoutIndexOrderByItemSegmentForSQL92() {
assertCreateProjectionsContextWithoutIndexOrderByItemSegment(new SQL92SelectStatement());
}
@Test
public void assertCreateProjectionsContextWithoutIndexOrderByItemSegmentForSQLServer() {
assertCreateProjectionsContextWithoutIndexOrderByItemSegment(new SQLServerSelectStatement());
......@@ -209,33 +203,33 @@ public final class ProjectionsContextEngineTest {
projectionsSegment.getProjections().addAll(Collections.singleton(shorthandProjectionSegment));
OrderByItem orderByItem = new OrderByItem(new ExpressionOrderByItemSegment(0, 1, "", OrderDirection.ASC));
OrderByContext orderByContext = new OrderByContext(Collections.singletonList(orderByItem), true);
SelectStatementContext selectStatementContext = new SelectStatementContext(schemaMetaData, new LinkedList<>(), selectStatement);
SelectStatementContext selectStatementContext = new SelectStatementContext(schema, new LinkedList<>(), selectStatement);
Collection<SimpleTableSegment> tables = selectStatementContext.getSimpleTableSegments();
ProjectionsContext actual = new ProjectionsContextEngine(schemaMetaData)
ProjectionsContext actual = new ProjectionsContextEngine(schema)
.createProjectionsContext(tables, projectionsSegment, new GroupByContext(Collections.emptyList(), 0), orderByContext);
assertNotNull(actual);
}
@Test
public void assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerAbsentForMySQL() {
assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerAbsent(new MySQLSelectStatement());
}
@Test
public void assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerAbsentForOracle() {
assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerAbsent(new OracleSelectStatement());
}
@Test
public void assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerAbsentForPostgreSQL() {
assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerAbsent(new PostgreSQLSelectStatement());
}
@Test
public void assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerAbsentForSQL92() {
assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerAbsent(new SQL92SelectStatement());
}
@Test
public void assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerAbsentForSQLServer() {
assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerAbsent(new SQLServerSelectStatement());
......@@ -251,33 +245,33 @@ public final class ProjectionsContextEngineTest {
projectionsSegment.getProjections().addAll(Collections.singleton(shorthandProjectionSegment));
OrderByItem orderByItem = new OrderByItem(new ColumnOrderByItemSegment(new ColumnSegment(0, 0, new IdentifierValue("name")), OrderDirection.ASC));
OrderByContext orderByContext = new OrderByContext(Collections.singletonList(orderByItem), true);
SelectStatementContext selectStatementContext = new SelectStatementContext(schemaMetaData, new LinkedList<>(), selectStatement);
SelectStatementContext selectStatementContext = new SelectStatementContext(schema, new LinkedList<>(), selectStatement);
Collection<SimpleTableSegment> tables = selectStatementContext.getSimpleTableSegments();
ProjectionsContext actual = new ProjectionsContextEngine(schemaMetaData)
ProjectionsContext actual = new ProjectionsContextEngine(schema)
.createProjectionsContext(tables, projectionsSegment, new GroupByContext(Collections.emptyList(), 0), orderByContext);
assertNotNull(actual);
}
@Test
public void assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerPresentForMySQL() {
assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerPresent(new MySQLSelectStatement());
}
@Test
public void assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerPresentForOracle() {
assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerPresent(new OracleSelectStatement());
}
@Test
public void assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerPresentForPostgreSQL() {
assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerPresent(new PostgreSQLSelectStatement());
}
@Test
public void assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerPresentForSQL92() {
assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerPresent(new SQL92SelectStatement());
}
@Test
public void assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerPresentForSQLServer() {
assertCreateProjectionsContextWhenColumnOrderByItemSegmentOwnerPresent(new SQLServerSelectStatement());
......@@ -293,9 +287,9 @@ public final class ProjectionsContextEngineTest {
projectionsSegment.getProjections().addAll(Collections.singleton(shorthandProjectionSegment));
OrderByItem orderByItem = new OrderByItem(new ColumnOrderByItemSegment(new ColumnSegment(0, 0, new IdentifierValue("name")), OrderDirection.ASC));
OrderByContext orderByContext = new OrderByContext(Collections.singletonList(orderByItem), true);
SelectStatementContext selectStatementContext = new SelectStatementContext(schemaMetaData, new LinkedList<>(), selectStatement);
SelectStatementContext selectStatementContext = new SelectStatementContext(schema, new LinkedList<>(), selectStatement);
Collection<SimpleTableSegment> tables = selectStatementContext.getSimpleTableSegments();
ProjectionsContext actual = new ProjectionsContextEngine(schemaMetaData)
ProjectionsContext actual = new ProjectionsContextEngine(schema)
.createProjectionsContext(tables, projectionsSegment, new GroupByContext(Collections.emptyList(), 0), orderByContext);
assertNotNull(actual);
}
......@@ -343,9 +337,9 @@ public final class ProjectionsContextEngineTest {
projectionsSegment.getProjections().addAll(Lists.newArrayList(columnProjectionSegment, shorthandProjectionSegment));
OrderByItem orderByItem = new OrderByItem(new ColumnOrderByItemSegment(new ColumnSegment(0, 0, new IdentifierValue("name")), OrderDirection.ASC));
OrderByContext orderByContext = new OrderByContext(Collections.singleton(orderByItem), false);
SelectStatementContext selectStatementContext = new SelectStatementContext(schemaMetaData, new LinkedList<>(), selectStatement);
SelectStatementContext selectStatementContext = new SelectStatementContext(schema, new LinkedList<>(), selectStatement);
Collection<SimpleTableSegment> tables = selectStatementContext.getSimpleTableSegments();
ProjectionsContext actual = new ProjectionsContextEngine(schemaMetaData)
ProjectionsContext actual = new ProjectionsContextEngine(schema)
.createProjectionsContext(tables, projectionsSegment, new GroupByContext(Collections.emptyList(), 0), orderByContext);
assertNotNull(actual);
}
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.infra.binder.segment.table;
import com.google.common.collect.Sets;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.AliasSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
......@@ -56,7 +56,7 @@ public final class TablesContextTest {
@Test
public void assertFindTableNameWhenSingleTable() {
SimpleTableSegment tableSegment = createTableSegment("table_1", "tbl_1");
Optional<String> actual = new TablesContext(Collections.singletonList(tableSegment)).findTableName(createColumnSegment(), mock(PhysicalSchemaMetaData.class));
Optional<String> actual = new TablesContext(Collections.singletonList(tableSegment)).findTableName(createColumnSegment(), mock(ShardingSphereSchema.class));
assertTrue(actual.isPresent());
assertThat(actual.get(), is("table_1"));
}
......@@ -67,7 +67,7 @@ public final class TablesContextTest {
SimpleTableSegment tableSegment2 = createTableSegment("table_2", "tbl_2");
ColumnSegment columnSegment = createColumnSegment();
columnSegment.setOwner(new OwnerSegment(0, 10, new IdentifierValue("table_1")));
Optional<String> actual = new TablesContext(Arrays.asList(tableSegment1, tableSegment2)).findTableName(columnSegment, mock(PhysicalSchemaMetaData.class));
Optional<String> actual = new TablesContext(Arrays.asList(tableSegment1, tableSegment2)).findTableName(columnSegment, mock(ShardingSphereSchema.class));
assertTrue(actual.isPresent());
assertThat(actual.get(), is("table_1"));
}
......@@ -76,7 +76,7 @@ public final class TablesContextTest {
public void assertFindTableNameWhenColumnSegmentOwnerAbsent() {
SimpleTableSegment tableSegment1 = createTableSegment("table_1", "tbl_1");
SimpleTableSegment tableSegment2 = createTableSegment("table_2", "tbl_2");
Optional<String> actual = new TablesContext(Arrays.asList(tableSegment1, tableSegment2)).findTableName(createColumnSegment(), mock(PhysicalSchemaMetaData.class));
Optional<String> actual = new TablesContext(Arrays.asList(tableSegment1, tableSegment2)).findTableName(createColumnSegment(), mock(ShardingSphereSchema.class));
assertFalse(actual.isPresent());
}
......@@ -84,9 +84,9 @@ public final class TablesContextTest {
public void assertFindTableNameWhenColumnSegmentOwnerAbsentAndSchemaMetaDataContainsColumn() {
SimpleTableSegment tableSegment1 = createTableSegment("table_1", "tbl_1");
SimpleTableSegment tableSegment2 = createTableSegment("table_2", "tbl_2");
PhysicalSchemaMetaData schemaMetaData = mock(PhysicalSchemaMetaData.class);
when(schemaMetaData.containsColumn(anyString(), anyString())).thenReturn(true);
Optional<String> actual = new TablesContext(Arrays.asList(tableSegment1, tableSegment2)).findTableName(createColumnSegment(), schemaMetaData);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.containsColumn(anyString(), anyString())).thenReturn(true);
Optional<String> actual = new TablesContext(Arrays.asList(tableSegment1, tableSegment2)).findTableName(createColumnSegment(), schema);
assertTrue(actual.isPresent());
assertThat(actual.get(), is("table_1"));
}
......
......@@ -20,7 +20,7 @@ package org.apache.shardingsphere.infra.binder.statement;
import org.apache.shardingsphere.infra.binder.SQLStatementContextFactory;
import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.AssignmentSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.SetAssignmentSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
......@@ -52,7 +52,7 @@ public final class SQLStatementContextFactoryTest {
MySQLSelectStatement selectStatement = new MySQLSelectStatement();
selectStatement.setLimit(new LimitSegment(0, 10, null, null));
selectStatement.setProjections(projectionsSegment);
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(mock(PhysicalSchemaMetaData.class), null, selectStatement);
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(mock(ShardingSphereSchema.class), null, selectStatement);
assertNotNull(sqlStatementContext);
assertTrue(sqlStatementContext instanceof SelectStatementContext);
}
......@@ -87,14 +87,14 @@ public final class SQLStatementContextFactoryTest {
private void assertSQLStatementContextCreatedWhenSQLStatementInstanceOfInsertStatement(final InsertStatement insertStatement) {
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("tbl")));
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(mock(PhysicalSchemaMetaData.class), null, insertStatement);
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(mock(ShardingSphereSchema.class), null, insertStatement);
assertNotNull(sqlStatementContext);
assertTrue(sqlStatementContext instanceof InsertStatementContext);
}
@Test
public void assertSQLStatementContextCreatedWhenSQLStatementNotInstanceOfSelectStatementAndInsertStatement() {
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(mock(PhysicalSchemaMetaData.class), null, mock(SQLStatement.class));
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(mock(ShardingSphereSchema.class), null, mock(SQLStatement.class));
assertNotNull(sqlStatementContext);
assertTrue(sqlStatementContext instanceof CommonSQLStatementContext);
}
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.binder.statement.impl;
import com.google.common.collect.Sets;
import org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.AssignmentSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.InsertValuesSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.SetAssignmentSegment;
......@@ -90,29 +90,29 @@ public final class InsertStatementContextTest {
new ColumnSegment(0, 0, new IdentifierValue("id")), new ColumnSegment(0, 0, new IdentifierValue("name")), new ColumnSegment(0, 0, new IdentifierValue("status"))));
insertStatement.setInsertColumns(insertColumnsSegment);
setUpInsertValues(insertStatement);
InsertStatementContext actual = new InsertStatementContext(mock(PhysicalSchemaMetaData.class), Arrays.asList(1, "Tom", 2, "Jerry"), insertStatement);
InsertStatementContext actual = new InsertStatementContext(mock(ShardingSphereSchema.class), Arrays.asList(1, "Tom", 2, "Jerry"), insertStatement);
assertInsertStatementContext(actual);
}
@Test
public void assertInsertStatementContextWithoutColumnNames() {
PhysicalSchemaMetaData schemaMetaData = mock(PhysicalSchemaMetaData.class);
when(schemaMetaData.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "status"));
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "status"));
InsertStatement insertStatement = new MySQLInsertStatement();
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("tbl")));
setUpInsertValues(insertStatement);
InsertStatementContext actual = new InsertStatementContext(schemaMetaData, Arrays.asList(1, "Tom", 2, "Jerry"), insertStatement);
InsertStatementContext actual = new InsertStatementContext(schema, Arrays.asList(1, "Tom", 2, "Jerry"), insertStatement);
assertInsertStatementContext(actual);
}
@Test
public void assertGetGroupedParametersWithoutOnDuplicateParameter() {
PhysicalSchemaMetaData schemaMetaData = mock(PhysicalSchemaMetaData.class);
when(schemaMetaData.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "status"));
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "status"));
InsertStatement insertStatement = new MySQLInsertStatement();
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("tbl")));
setUpInsertValues(insertStatement);
InsertStatementContext actual = new InsertStatementContext(schemaMetaData, Arrays.asList(1, "Tom", 2, "Jerry"), insertStatement);
InsertStatementContext actual = new InsertStatementContext(schema, Arrays.asList(1, "Tom", 2, "Jerry"), insertStatement);
assertThat(actual.getGroupedParameters().size(), is(2));
assertNull(actual.getOnDuplicateKeyUpdateValueContext());
assertThat(actual.getOnDuplicateKeyUpdateParameters().size(), is(0));
......@@ -120,13 +120,13 @@ public final class InsertStatementContextTest {
@Test
public void assertGetGroupedParametersWithOnDuplicateParameters() {
PhysicalSchemaMetaData schemaMetaData = mock(PhysicalSchemaMetaData.class);
when(schemaMetaData.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "status"));
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "status"));
MySQLInsertStatement insertStatement = new MySQLInsertStatement();
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("tbl")));
setUpInsertValues(insertStatement);
setUpOnDuplicateValues(insertStatement);
InsertStatementContext actual = new InsertStatementContext(schemaMetaData, Arrays.asList(1, "Tom", 2, "Jerry", "onDuplicateKeyUpdateColumnValue"), insertStatement);
InsertStatementContext actual = new InsertStatementContext(schema, Arrays.asList(1, "Tom", 2, "Jerry", "onDuplicateKeyUpdateColumnValue"), insertStatement);
assertThat(actual.getGroupedParameters().size(), is(2));
assertThat(actual.getOnDuplicateKeyUpdateValueContext().getColumns().size(), is(2));
assertThat(actual.getOnDuplicateKeyUpdateParameters().size(), is(1));
......@@ -134,15 +134,15 @@ public final class InsertStatementContextTest {
@Test
public void assertInsertSelect() {
PhysicalSchemaMetaData schemaMetaData = mock(PhysicalSchemaMetaData.class);
when(schemaMetaData.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "status"));
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schema.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "status"));
InsertStatement insertStatement = new MySQLInsertStatement();
SelectStatement selectStatement = new MySQLSelectStatement();
selectStatement.setProjections(new ProjectionsSegment(0, 0));
SubquerySegment insertSelect = new SubquerySegment(0, 0, selectStatement);
insertStatement.setInsertSelect(insertSelect);
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("tbl")));
InsertStatementContext actual = new InsertStatementContext(schemaMetaData, Collections.singletonList("param"), insertStatement);
InsertStatementContext actual = new InsertStatementContext(schema, Collections.singletonList("param"), insertStatement);
assertThat(actual.getInsertSelectContext().getParameterCount(), is(0));
assertThat(actual.getGroupedParameters().size(), is(1));
assertThat(actual.getGroupedParameters().iterator().next(), is(Collections.emptyList()));
......@@ -214,7 +214,7 @@ public final class InsertStatementContextTest {
private void assertUseDefaultColumns(final InsertStatement insertStatement) {
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("")));
InsertStatementContext insertStatementContext = new InsertStatementContext(new PhysicalSchemaMetaData(), Collections.emptyList(), insertStatement);
InsertStatementContext insertStatementContext = new InsertStatementContext(new ShardingSphereSchema(), Collections.emptyList(), insertStatement);
assertTrue(insertStatementContext.useDefaultColumns());
}
......@@ -247,7 +247,7 @@ public final class InsertStatementContextTest {
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0, Collections.singletonList(new ColumnSegment(0, 0, new IdentifierValue("col"))));
insertStatement.setInsertColumns(insertColumnsSegment);
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("")));
InsertStatementContext insertStatementContext = new InsertStatementContext(new PhysicalSchemaMetaData(), Collections.emptyList(), insertStatement);
InsertStatementContext insertStatementContext = new InsertStatementContext(new ShardingSphereSchema(), Collections.emptyList(), insertStatement);
assertFalse(insertStatementContext.useDefaultColumns());
}
......@@ -256,7 +256,7 @@ public final class InsertStatementContextTest {
MySQLInsertStatement insertStatement = new MySQLInsertStatement();
insertStatement.setSetAssignment(new SetAssignmentSegment(0, 0, Collections.emptyList()));
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("")));
InsertStatementContext insertStatementContext = new InsertStatementContext(new PhysicalSchemaMetaData(), Collections.emptyList(), insertStatement);
InsertStatementContext insertStatementContext = new InsertStatementContext(new ShardingSphereSchema(), Collections.emptyList(), insertStatement);
assertFalse(insertStatementContext.useDefaultColumns());
}
......@@ -289,7 +289,7 @@ public final class InsertStatementContextTest {
insertStatement.getValues().add(new InsertValuesSegment(0, 0, Collections.singletonList(new LiteralExpressionSegment(0, 0, 1))));
insertStatement.getValues().add(new InsertValuesSegment(0, 0, Collections.singletonList(new LiteralExpressionSegment(0, 0, 2))));
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("")));
InsertStatementContext insertStatementContext = new InsertStatementContext(new PhysicalSchemaMetaData(), Collections.emptyList(), insertStatement);
InsertStatementContext insertStatementContext = new InsertStatementContext(new ShardingSphereSchema(), Collections.emptyList(), insertStatement);
assertThat(insertStatementContext.getValueListCount(), is(2));
}
......@@ -299,7 +299,7 @@ public final class InsertStatementContextTest {
insertStatement.setSetAssignment(new SetAssignmentSegment(0, 0, Collections.singletonList(new AssignmentSegment(0, 0,
new ColumnSegment(0, 0, new IdentifierValue("col")), new LiteralExpressionSegment(0, 0, 1)))));
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("")));
InsertStatementContext insertStatementContext = new InsertStatementContext(new PhysicalSchemaMetaData(), Collections.emptyList(), insertStatement);
InsertStatementContext insertStatementContext = new InsertStatementContext(new ShardingSphereSchema(), Collections.emptyList(), insertStatement);
assertThat(insertStatementContext.getValueListCount(), is(1));
}
......@@ -332,7 +332,7 @@ public final class InsertStatementContextTest {
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0, Collections.singletonList(new ColumnSegment(0, 0, new IdentifierValue("col"))));
insertStatement.setInsertColumns(insertColumnsSegment);
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("")));
InsertStatementContext insertStatementContext = new InsertStatementContext(new PhysicalSchemaMetaData(), Collections.emptyList(), insertStatement);
InsertStatementContext insertStatementContext = new InsertStatementContext(new ShardingSphereSchema(), Collections.emptyList(), insertStatement);
List<String> columnNames = insertStatementContext.getInsertColumnNames();
assertThat(columnNames.size(), is(1));
assertThat(columnNames.iterator().next(), is("col"));
......@@ -344,7 +344,7 @@ public final class InsertStatementContextTest {
insertStatement.setSetAssignment(new SetAssignmentSegment(0, 0, Collections.singletonList(new AssignmentSegment(0, 0,
new ColumnSegment(0, 0, new IdentifierValue("col")), new LiteralExpressionSegment(0, 0, 1)))));
insertStatement.setTable(new SimpleTableSegment(0, 0, new IdentifierValue("")));
InsertStatementContext insertStatementContext = new InsertStatementContext(new PhysicalSchemaMetaData(), Collections.emptyList(), insertStatement);
InsertStatementContext insertStatementContext = new InsertStatementContext(new ShardingSphereSchema(), Collections.emptyList(), insertStatement);
List<String> columnNames = insertStatementContext.getInsertColumnNames();
assertThat(columnNames.size(), is(1));
assertThat(columnNames.iterator().next(), is("col"));
......
......@@ -21,7 +21,7 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
/**
* ShardingSphere meta data.
......@@ -36,7 +36,7 @@ public final class ShardingSphereMetaData {
private final ShardingSphereRuleMetaData ruleMetaData;
private final PhysicalSchemaMetaData schema;
private final ShardingSphereSchema schema;
/**
* Is complete schema context.
......
......@@ -15,7 +15,9 @@
* limitations under the License.
*/
package org.apache.shardingsphere.infra.metadata.schema.model.physical;
package org.apache.shardingsphere.infra.metadata.schema;
import org.apache.shardingsphere.infra.metadata.schema.model.physical.PhysicalTableMetaData;
import java.util.ArrayList;
import java.util.Collection;
......@@ -25,18 +27,18 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* Physical schema meta data.
* ShardingSphere schema.
*/
public final class PhysicalSchemaMetaData {
public final class ShardingSphereSchema {
private final Map<String, PhysicalTableMetaData> tables;
@SuppressWarnings("CollectionWithoutInitialCapacity")
public PhysicalSchemaMetaData() {
public ShardingSphereSchema() {
tables = new ConcurrentHashMap<>();
}
public PhysicalSchemaMetaData(final Map<String, PhysicalTableMetaData> tables) {
public ShardingSphereSchema(final Map<String, PhysicalTableMetaData> tables) {
this.tables = new ConcurrentHashMap<>(tables.size(), 1);
tables.forEach((key, value) -> this.tables.put(key.toLowerCase(), value));
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册