You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2023/04/28 00:17:55 UTC
[shardingsphere] branch master updated: Add public getColumns, getIndexes, getConstraints to avoid call of inner map field in ShardingSphereTable (#25357)
This is an automated email from the ASF dual-hosted git repository.
panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 0ec2b770f59 Add public getColumns, getIndexes, getConstraints to avoid call of inner map field in ShardingSphereTable (#25357)
0ec2b770f59 is described below
commit 0ec2b770f593dd01ec607c0dad95825733f20d91
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Fri Apr 28 08:17:38 2023 +0800
Add public getColumns, getIndexes, getConstraints to avoid call of inner map field in ShardingSphereTable (#25357)
---
.../dal/show/ShowCreateTableMergedResult.java | 18 ++--
.../dql/groupby/GroupByMemoryMergedResult.java | 6 +-
.../sharding/merge/dql/orderby/OrderByValue.java | 11 +--
.../sharding/rewrite/token/pojo/IndexToken.java | 2 +-
.../ddl/ShardingDDLStatementValidator.java | 2 +-
.../impl/ShardingDropIndexStatementValidator.java | 4 +-
.../dql/groupby/GroupByMemoryMergedResultTest.java | 2 +-
.../ShardingTableBroadcastRoutingEngineTest.java | 4 +-
.../ShardingAlterIndexStatementValidatorTest.java | 19 +---
.../ShardingDropIndexStatementValidatorTest.java | 29 ++----
.../keygen/engine/GeneratedKeyContextEngine.java | 7 +-
.../ShardingSphereTableDataCollectorUtils.java | 2 +-
.../schema/model/ShardingSphereSchema.java | 4 +-
.../database/schema/model/ShardingSphereTable.java | 102 +++++++++++++++++++--
.../database/schema/util/IndexMetaDataUtils.java | 2 +-
.../yaml/schema/swapper/YamlTableSwapper.java | 12 +--
.../yaml/schema/swapper/YamlSchemaSwapperTest.java | 7 +-
.../index/AlterIndexStatementSchemaRefresher.java | 10 +-
.../index/CreateIndexStatementSchemaRefresher.java | 6 +-
.../index/DropIndexStatementSchemaRefresher.java | 6 +-
.../ShardingSphereDataScheduleCollector.java | 2 +-
.../execute/ShardingSphereDataCollectorTest.java | 10 +-
.../data/ShardingSphereDataPersistService.java | 2 +-
.../ShardingSphereTableRowDataPersistService.java | 2 +-
.../DatabaseMetaDataPersistServiceTest.java | 6 +-
.../schema/TableMetaDataPersistServiceTest.java | 5 +-
.../optimizer/util/SQLFederationDataTypeUtils.java | 2 +-
.../mode/manager/ContextManager.java | 6 +-
.../mode/manager/ContextManagerTest.java | 4 +-
.../ral/queryable/ShowTableMetaDataExecutor.java | 2 +-
.../header/query/MySQLQueryHeaderBuilder.java | 2 +-
.../prepare/MySQLComStmtPrepareExecutor.java | 2 +-
...ySQLComStmtPrepareParameterMarkerExtractor.java | 15 +--
.../prepare/MySQLComStmtPrepareExecutorTest.java | 6 +-
...ComStmtPrepareParameterMarkerExtractorTest.java | 14 +--
.../describe/PostgreSQLComDescribeExecutor.java | 24 ++---
.../cases/alterresource/AddResourceTestCase.java | 4 +-
.../cases/alterresource/CloseResourceTestCase.java | 4 +-
.../src/test/resources/env/common/command.xml | 4 +-
.../actual/init-sql/opengauss/01-actual-init.sql | 8 +-
.../data/actual/init-sql/mysql/01-actual-init.sql | 8 +-
.../data/actual/init-sql/mysql/01-actual-init.sql | 6 +-
.../rewrite/engine/scenario/MixSQLRewriterIT.java | 16 ++--
.../engine/scenario/ShardingSQLRewriterIT.java | 15 +--
44 files changed, 226 insertions(+), 198 deletions(-)
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowCreateTableMergedResult.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowCreateTableMergedResult.java
index 4e554fab9f7..45a503e8481 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowCreateTableMergedResult.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dal/show/ShowCreateTableMergedResult.java
@@ -22,6 +22,7 @@ import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
import org.apache.shardingsphere.infra.merge.result.impl.memory.MemoryQueryResultRow;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereConstraint;
+import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtils;
@@ -30,7 +31,6 @@ import org.apache.shardingsphere.sharding.rule.TableRule;
import java.sql.SQLException;
import java.util.List;
-import java.util.Map.Entry;
import java.util.Optional;
/**
@@ -47,19 +47,19 @@ public final class ShowCreateTableMergedResult extends LogicTablesMergedResult {
protected void setCellValue(final MemoryQueryResultRow memoryResultSetRow, final String logicTableName, final String actualTableName,
final ShardingSphereTable table, final ShardingRule shardingRule) {
memoryResultSetRow.setCell(2, memoryResultSetRow.getCell(2).toString().replaceFirst(actualTableName, logicTableName));
- for (String each : table.getIndexes().keySet()) {
- String actualIndexName = IndexMetaDataUtils.getActualIndexName(each, actualTableName);
- memoryResultSetRow.setCell(2, memoryResultSetRow.getCell(2).toString().replace(actualIndexName, each));
+ for (ShardingSphereIndex each : table.getIndexes()) {
+ String actualIndexName = IndexMetaDataUtils.getActualIndexName(each.getName(), actualTableName);
+ memoryResultSetRow.setCell(2, memoryResultSetRow.getCell(2).toString().replace(actualIndexName, each.getName()));
}
- for (Entry<String, ShardingSphereConstraint> entry : table.getConstraints().entrySet()) {
- String actualIndexName = IndexMetaDataUtils.getActualIndexName(entry.getKey(), actualTableName);
- memoryResultSetRow.setCell(2, memoryResultSetRow.getCell(2).toString().replace(actualIndexName, entry.getKey()));
- Optional<TableRule> tableRule = shardingRule.findTableRule(entry.getValue().getReferencedTableName());
+ for (ShardingSphereConstraint each : table.getConstraints()) {
+ String actualIndexName = IndexMetaDataUtils.getActualIndexName(each.getName(), actualTableName);
+ memoryResultSetRow.setCell(2, memoryResultSetRow.getCell(2).toString().replace(actualIndexName, each.getName()));
+ Optional<TableRule> tableRule = shardingRule.findTableRule(each.getReferencedTableName());
if (!tableRule.isPresent()) {
continue;
}
for (DataNode dataNode : tableRule.get().getActualDataNodes()) {
- memoryResultSetRow.setCell(2, memoryResultSetRow.getCell(2).toString().replace(dataNode.getTableName(), entry.getValue().getReferencedTableName()));
+ memoryResultSetRow.setCell(2, memoryResultSetRow.getCell(2).toString().replace(dataNode.getTableName(), each.getReferencedTableName()));
}
}
}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResult.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResult.java
index 9836c97e236..cc501691388 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResult.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResult.java
@@ -26,7 +26,6 @@ import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementConte
import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
import org.apache.shardingsphere.infra.merge.result.impl.memory.MemoryMergedResult;
import org.apache.shardingsphere.infra.merge.result.impl.memory.MemoryQueryResultRow;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
@@ -133,10 +132,9 @@ public final class GroupByMemoryMergedResult extends MemoryMergedResult<Sharding
for (SimpleTableSegment each : selectStatementContext.getAllTables()) {
String tableName = each.getTableName().getIdentifier().getValue();
ShardingSphereTable table = schema.getTable(tableName);
- Map<String, ShardingSphereColumn> columns = table.getColumns();
String columnName = queryResult.getMetaData().getColumnName(columnIndex);
- if (columns.containsKey(columnName)) {
- return columns.get(columnName).isCaseSensitive();
+ if (table.containsColumn(columnName)) {
+ return table.getColumn(columnName).isCaseSensitive();
}
}
return false;
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByValue.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByValue.java
index 550943f7966..7c1b5b1eed9 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByValue.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByValue.java
@@ -21,7 +21,6 @@ import lombok.Getter;
import org.apache.shardingsphere.infra.binder.segment.select.orderby.OrderByItem;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
@@ -36,7 +35,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
/**
* Order by value.
@@ -74,18 +72,17 @@ public final class OrderByValue implements Comparable<OrderByValue> {
for (SimpleTableSegment each : selectStatementContext.getAllTables()) {
String tableName = each.getTableName().getIdentifier().getValue();
ShardingSphereTable table = schema.getTable(tableName);
- Map<String, ShardingSphereColumn> columns = table.getColumns();
OrderByItemSegment orderByItemSegment = eachOrderByItem.getSegment();
if (orderByItemSegment instanceof ColumnOrderByItemSegment) {
String columnName = ((ColumnOrderByItemSegment) orderByItemSegment).getColumn().getIdentifier().getValue();
- if (columns.containsKey(columnName)) {
- return columns.get(columnName).isCaseSensitive();
+ if (table.containsColumn(columnName)) {
+ return table.getColumn(columnName).isCaseSensitive();
}
} else if (orderByItemSegment instanceof IndexOrderByItemSegment) {
int columnIndex = ((IndexOrderByItemSegment) orderByItemSegment).getColumnIndex();
String columnName = queryResult.getMetaData().getColumnName(columnIndex);
- if (columns.containsKey(columnName)) {
- return columns.get(columnName).isCaseSensitive();
+ if (table.containsColumn(columnName)) {
+ return table.getColumn(columnName).isCaseSensitive();
}
} else {
return false;
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
index e18880695a9..64088f713fc 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
@@ -77,7 +77,7 @@ public final class IndexToken extends SQLToken implements Substitutable, RouteUn
private Optional<String> findLogicTableNameFromMetaData(final String logicIndexName) {
for (String each : schema.getAllTableNames()) {
- if (schema.getTable(each).getIndexes().containsKey(logicIndexName)) {
+ if (schema.getTable(each).containsIndex(logicIndexName)) {
return Optional.of(each);
}
}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDDLStatementValidator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDDLStatementValidator.java
index 520330b7ba8..69c7541611f 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDDLStatementValidator.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDDLStatementValidator.java
@@ -107,6 +107,6 @@ public abstract class ShardingDDLStatementValidator<T extends DDLStatement> impl
* @return whether schema contains index or not
*/
protected boolean isSchemaContainsIndex(final ShardingSphereSchema schema, final IndexSegment index) {
- return schema.getAllTableNames().stream().anyMatch(each -> schema.getTable(each).getIndexes().containsKey(index.getIndexName().getIdentifier().getValue()));
+ return schema.getAllTableNames().stream().anyMatch(each -> schema.getTable(each).containsIndex(index.getIndexName().getIdentifier().getValue()));
}
}
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingDropIndexStatementValidator.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingDropIndexStatementValidator.java
index 976d405afd5..213f425b4e9 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingDropIndexStatementValidator.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingDropIndexStatementValidator.java
@@ -24,8 +24,8 @@ import org.apache.shardingsphere.infra.hint.HintValueContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.route.context.RouteContext;
-import org.apache.shardingsphere.sharding.exception.metadata.IndexNotExistedException;
import org.apache.shardingsphere.sharding.exception.connection.ShardingDDLRouteException;
+import org.apache.shardingsphere.sharding.exception.metadata.IndexNotExistedException;
import org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
@@ -71,7 +71,7 @@ public final class ShardingDropIndexStatementValidator extends ShardingDDLStatem
ShardingSphereSchema schema = each.getOwner().map(optional -> optional.getIdentifier().getValue())
.map(database::getSchema).orElseGet(() -> database.getSchema(defaultSchemaName));
logicTableName =
- schema.getAllTableNames().stream().filter(tableName -> schema.getTable(tableName).getIndexes().containsKey(each.getIndexName().getIdentifier().getValue())).findFirst();
+ schema.getAllTableNames().stream().filter(tableName -> schema.getTable(tableName).containsIndex(each.getIndexName().getIdentifier().getValue())).findFirst();
logicTableName.ifPresent(optional -> validateDropIndexRouteUnit(shardingRule, routeContext, indexSegments, optional));
}
}
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java
index 22ed9673b3d..733ac30e92a 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java
@@ -205,7 +205,7 @@ class GroupByMemoryMergedResultTest {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
ShardingSphereTable table = mock(ShardingSphereTable.class);
when(schema.getTable("t_order")).thenReturn(table);
- when(table.getColumns()).thenReturn(Collections.emptyMap());
+ when(table.getColumns()).thenReturn(Collections.emptyList());
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.getSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(schema);
when(database.getSchemas()).thenReturn(Collections.singletonMap(DefaultDatabase.LOGIC_NAME, schema));
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRoutingEngineTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRoutingEngineTest.java
index 088dcdc10a2..8de6bcf31ca 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRoutingEngineTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRoutingEngineTest.java
@@ -94,7 +94,7 @@ class ShardingTableBroadcastRoutingEngineTest {
void assertRouteForDropIndexStatement() {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
when(schema.getAllTableNames()).thenReturn(Collections.singleton("t_order"));
- when(schema.getTable(anyString()).getIndexes().containsKey(anyString())).thenReturn(true);
+ when(schema.getTable(anyString()).containsIndex(anyString())).thenReturn(true);
IndexSegment segment = mock(IndexSegment.class, RETURNS_DEEP_STUBS);
when(segment.getIndexName().getIdentifier().getValue()).thenReturn("t_order");
when(segment.getOwner()).thenReturn(Optional.empty());
@@ -119,7 +119,7 @@ class ShardingTableBroadcastRoutingEngineTest {
@Test
void assertRouteForDropIndexStatementDoNotFoundTables() {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
- when(schema.getTable(anyString()).getIndexes().containsKey(anyString())).thenReturn(false);
+ when(schema.getTable(anyString()).containsIndex(anyString())).thenReturn(false);
IndexSegment segment = mock(IndexSegment.class, RETURNS_DEEP_STUBS);
when(segment.getIndexName().getIdentifier().getValue()).thenReturn("t_order");
SQLStatementContext<DropIndexStatement> sqlStatementContext = mock(DropIndexStatementContext.class, RETURNS_DEEP_STUBS);
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterIndexStatementValidatorTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterIndexStatementValidatorTest.java
index 7f6ccf29e7f..6a2283388b4 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterIndexStatementValidatorTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterIndexStatementValidatorTest.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import org.apache.shardingsphere.infra.binder.statement.ddl.AlterIndexStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import org.apache.shardingsphere.sharding.exception.metadata.DuplicatedIndexException;
import org.apache.shardingsphere.sharding.exception.metadata.IndexNotExistedException;
@@ -37,8 +36,6 @@ import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.mock;
@@ -59,12 +56,10 @@ class ShardingAlterIndexStatementValidatorTest {
sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
sqlStatement.setRenameIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
ShardingSphereTable table = mock(ShardingSphereTable.class);
- Map<String, ShardingSphereIndex> indexes = mock(HashMap.class);
- when(table.getIndexes()).thenReturn(indexes);
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
- when(indexes.containsKey("t_order_index")).thenReturn(true);
- when(indexes.containsKey("t_order_index_new")).thenReturn(false);
+ when(table.containsIndex("t_order_index")).thenReturn(true);
+ when(table.containsIndex("t_order_index_new")).thenReturn(false);
new ShardingAlterIndexStatementValidator().preValidate(shardingRule, new AlterIndexStatementContext(sqlStatement), Collections.emptyList(), database, mock(ConfigurationProperties.class));
}
@@ -74,11 +69,9 @@ class ShardingAlterIndexStatementValidatorTest {
sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
sqlStatement.setRenameIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
ShardingSphereTable table = mock(ShardingSphereTable.class);
- Map<String, ShardingSphereIndex> indexes = mock(HashMap.class);
- when(table.getIndexes()).thenReturn(indexes);
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
- when(indexes.containsKey("t_order_index")).thenReturn(false);
+ when(table.containsIndex("t_order_index")).thenReturn(false);
assertThrows(IndexNotExistedException.class,
() -> new ShardingAlterIndexStatementValidator().preValidate(
shardingRule, new AlterIndexStatementContext(sqlStatement), Collections.emptyList(), database, mock(ConfigurationProperties.class)));
@@ -90,12 +83,10 @@ class ShardingAlterIndexStatementValidatorTest {
sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
sqlStatement.setRenameIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
ShardingSphereTable table = mock(ShardingSphereTable.class);
- Map<String, ShardingSphereIndex> indexes = mock(HashMap.class);
- when(table.getIndexes()).thenReturn(indexes);
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
- when(indexes.containsKey("t_order_index")).thenReturn(true);
- when(indexes.containsKey("t_order_index_new")).thenReturn(true);
+ when(table.containsIndex("t_order_index")).thenReturn(true);
+ when(table.containsIndex("t_order_index_new")).thenReturn(true);
assertThrows(DuplicatedIndexException.class,
() -> new ShardingAlterIndexStatementValidator().preValidate(
shardingRule, new AlterIndexStatementContext(sqlStatement), Collections.emptyList(), database, mock(ConfigurationProperties.class)));
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropIndexStatementValidatorTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropIndexStatementValidatorTest.java
index d93a3d0b6bd..cce168bde59 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropIndexStatementValidatorTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropIndexStatementValidatorTest.java
@@ -21,7 +21,6 @@ import org.apache.shardingsphere.infra.binder.statement.ddl.DropIndexStatementCo
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.hint.HintValueContext;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
@@ -44,9 +43,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.LinkedList;
-import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.mock;
@@ -70,12 +67,10 @@ class ShardingDropIndexStatementValidatorTest {
sqlStatement.getIndexes().add(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
sqlStatement.getIndexes().add(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
ShardingSphereTable table = mock(ShardingSphereTable.class);
- Map<String, ShardingSphereIndex> indexes = mock(HashMap.class);
- when(table.getIndexes()).thenReturn(indexes);
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
- when(indexes.containsKey("t_order_index")).thenReturn(true);
- when(indexes.containsKey("t_order_index_new")).thenReturn(true);
+ when(table.containsIndex("t_order_index")).thenReturn(true);
+ when(table.containsIndex("t_order_index_new")).thenReturn(true);
new ShardingDropIndexStatementValidator().preValidate(shardingRule, new DropIndexStatementContext(sqlStatement), Collections.emptyList(), database, mock(ConfigurationProperties.class));
}
@@ -85,11 +80,9 @@ class ShardingDropIndexStatementValidatorTest {
sqlStatement.getIndexes().add(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
sqlStatement.getIndexes().add(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
ShardingSphereTable table = mock(ShardingSphereTable.class);
- Map<String, ShardingSphereIndex> indexes = mock(HashMap.class);
- when(table.getIndexes()).thenReturn(indexes);
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
- when(indexes.containsKey("t_order_index")).thenReturn(false);
+ when(table.containsIndex("t_order_index")).thenReturn(false);
assertThrows(IndexNotExistedException.class,
() -> new ShardingDropIndexStatementValidator().preValidate(
shardingRule, new DropIndexStatementContext(sqlStatement), Collections.emptyList(), database, mock(ConfigurationProperties.class)));
@@ -101,11 +94,9 @@ class ShardingDropIndexStatementValidatorTest {
sqlStatement.getIndexes().add(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
sqlStatement.getIndexes().add(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
ShardingSphereTable table = mock(ShardingSphereTable.class);
- Map<String, ShardingSphereIndex> indexes = mock(HashMap.class);
- when(table.getIndexes()).thenReturn(indexes);
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
- when(indexes.containsKey("t_order_index")).thenReturn(true);
+ when(table.containsIndex("t_order_index")).thenReturn(true);
when(shardingRule.isShardingTable("t_order")).thenReturn(true);
when(shardingRule.getTableRule("t_order")).thenReturn(new TableRule(Arrays.asList("ds_0", "ds_1"), "t_order"));
Collection<RouteUnit> routeUnits = new LinkedList<>();
@@ -122,11 +113,9 @@ class ShardingDropIndexStatementValidatorTest {
sqlStatement.getIndexes().add(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
sqlStatement.getIndexes().add(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
ShardingSphereTable table = mock(ShardingSphereTable.class);
- Map<String, ShardingSphereIndex> indexes = mock(HashMap.class);
- when(table.getIndexes()).thenReturn(indexes);
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
- when(indexes.containsKey("t_order_index")).thenReturn(true);
+ when(table.containsIndex("t_order_index")).thenReturn(true);
when(shardingRule.isShardingTable("t_order")).thenReturn(true);
when(shardingRule.getTableRule("t_order")).thenReturn(new TableRule(Arrays.asList("ds_0", "ds_1"), "t_order"));
Collection<RouteUnit> routeUnits = new LinkedList<>();
@@ -142,11 +131,9 @@ class ShardingDropIndexStatementValidatorTest {
sqlStatement.getIndexes().add(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_config_index"))));
sqlStatement.getIndexes().add(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_config_index_new"))));
ShardingSphereTable table = mock(ShardingSphereTable.class);
- Map<String, ShardingSphereIndex> indexes = mock(HashMap.class);
- when(table.getIndexes()).thenReturn(indexes);
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_config"));
when(database.getSchema("public").getTable("t_config")).thenReturn(table);
- when(indexes.containsKey("t_config_index")).thenReturn(true);
+ when(table.containsIndex("t_config_index")).thenReturn(true);
when(shardingRule.isBroadcastTable("t_config")).thenReturn(true);
when(shardingRule.getTableRule("t_config")).thenReturn(new TableRule(Arrays.asList("ds_0", "ds_1"), "t_config"));
Collection<RouteUnit> routeUnits = new LinkedList<>();
@@ -163,11 +150,9 @@ class ShardingDropIndexStatementValidatorTest {
sqlStatement.getIndexes().add(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_config_index"))));
sqlStatement.getIndexes().add(new IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("t_config_index_new"))));
ShardingSphereTable table = mock(ShardingSphereTable.class);
- Map<String, ShardingSphereIndex> indexes = mock(HashMap.class);
- when(table.getIndexes()).thenReturn(indexes);
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_config"));
when(database.getSchema("public").getTable("t_config")).thenReturn(table);
- when(indexes.containsKey("t_config_index")).thenReturn(true);
+ when(table.containsIndex("t_config_index")).thenReturn(true);
when(shardingRule.isBroadcastTable("t_config")).thenReturn(true);
when(shardingRule.getTableRule("t_config")).thenReturn(new TableRule(Arrays.asList("ds_0", "ds_1"), "t_config"));
Collection<RouteUnit> routeUnits = new LinkedList<>();
diff --git a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/insert/keygen/engine/GeneratedKeyContextEngine.java b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/insert/keygen/engine/GeneratedKeyContextEngine.java
index e76465c13ab..dcef13c9cdf 100644
--- a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/insert/keygen/engine/GeneratedKeyContextEngine.java
+++ b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/insert/keygen/engine/GeneratedKeyContextEngine.java
@@ -31,7 +31,6 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.InsertStatem
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
-import java.util.Map.Entry;
import java.util.Optional;
/**
@@ -63,9 +62,9 @@ public final class GeneratedKeyContextEngine {
if (!schema.containsTable(tableName)) {
return Optional.empty();
}
- for (Entry<String, ShardingSphereColumn> entry : schema.getTable(tableName).getColumns().entrySet()) {
- if (entry.getValue().isGenerated()) {
- return Optional.of(entry.getKey());
+ for (ShardingSphereColumn each : schema.getTable(tableName).getColumns()) {
+ if (each.isGenerated()) {
+ return Optional.of(each.getName());
}
}
return Optional.empty();
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/collector/ShardingSphereTableDataCollectorUtils.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/collector/ShardingSphereTableDataCollectorUtils.java
index 409e38a5c36..fe8d9d476ac 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/collector/ShardingSphereTableDataCollectorUtils.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/collector/ShardingSphereTableDataCollectorUtils.java
@@ -82,7 +82,7 @@ public final class ShardingSphereTableDataCollectorUtils {
private static List<Object> getRow(final ShardingSphereTable table, final ResultSet resultSet, final Collection<String> selectedColumnNames) throws SQLException {
List<Object> result = new LinkedList<>();
- for (ShardingSphereColumn each : table.getColumns().values()) {
+ for (ShardingSphereColumn each : table.getColumns()) {
if (selectedColumnNames.contains(each.getName())) {
result.add(convertIfNecessary(resultSet.getObject(each.getName()), each.getDataType()));
} else {
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchema.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchema.java
index d374ae108e2..69e4c416e4d 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchema.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchema.java
@@ -154,7 +154,7 @@ public final class ShardingSphereSchema {
* @return contains column name or not
*/
public boolean containsColumn(final String tableName, final String columnName) {
- return containsTable(tableName) && getTable(tableName).getColumns().containsKey(columnName.toLowerCase());
+ return containsTable(tableName) && getTable(tableName).containsColumn(columnName);
}
/**
@@ -165,7 +165,7 @@ public final class ShardingSphereSchema {
* @return whether contains index name or not
*/
public boolean containsIndex(final String tableName, final String indexName) {
- return containsTable(tableName) && getTable(tableName).getIndexes().containsKey(indexName.toLowerCase());
+ return containsTable(tableName) && getTable(tableName).containsIndex(indexName);
}
/**
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTable.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTable.java
index 23ea4235f5a..28dfd15c748 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTable.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTable.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.infra.metadata.database.schema.model;
import lombok.EqualsAndHashCode;
import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import lombok.ToString;
import java.util.ArrayList;
@@ -32,7 +31,6 @@ import java.util.Map;
/**
* ShardingSphere table.
*/
-@RequiredArgsConstructor
@Getter
@EqualsAndHashCode
@ToString
@@ -59,12 +57,12 @@ public final class ShardingSphereTable {
public ShardingSphereTable(final String name, final Collection<ShardingSphereColumn> columns,
final Collection<ShardingSphereIndex> indexes, final Collection<ShardingSphereConstraint> constraints) {
this.name = name;
- this.columns = getColumns(columns);
- this.indexes = getIndexes(indexes);
- this.constraints = getConstraints(constraints);
+ this.columns = createColumns(columns);
+ this.indexes = createIndexes(indexes);
+ this.constraints = createConstraints(constraints);
}
- private Map<String, ShardingSphereColumn> getColumns(final Collection<ShardingSphereColumn> columns) {
+ private Map<String, ShardingSphereColumn> createColumns(final Collection<ShardingSphereColumn> columns) {
Map<String, ShardingSphereColumn> result = new LinkedHashMap<>(columns.size(), 1);
for (ShardingSphereColumn each : columns) {
String lowerColumnName = each.getName().toLowerCase();
@@ -80,7 +78,7 @@ public final class ShardingSphereTable {
return result;
}
- private Map<String, ShardingSphereIndex> getIndexes(final Collection<ShardingSphereIndex> indexes) {
+ private Map<String, ShardingSphereIndex> createIndexes(final Collection<ShardingSphereIndex> indexes) {
Map<String, ShardingSphereIndex> result = new LinkedHashMap<>(indexes.size(), 1);
for (ShardingSphereIndex each : indexes) {
result.put(each.getName().toLowerCase(), each);
@@ -88,7 +86,7 @@ public final class ShardingSphereTable {
return result;
}
- private Map<String, ShardingSphereConstraint> getConstraints(final Collection<ShardingSphereConstraint> constraints) {
+ private Map<String, ShardingSphereConstraint> createConstraints(final Collection<ShardingSphereConstraint> constraints) {
Map<String, ShardingSphereConstraint> result = new LinkedHashMap<>(constraints.size(), 1);
for (ShardingSphereConstraint each : constraints) {
result.put(each.getName().toLowerCase(), each);
@@ -97,12 +95,96 @@ public final class ShardingSphereTable {
}
/**
- * Get table meta data via column name.
+ * Put column meta data.
+ *
+ * @param column column meta data
+ */
+ public void putColumn(final ShardingSphereColumn column) {
+ columns.put(column.getName().toLowerCase(), column);
+ }
+
+ /**
+ * Get column meta data via column name.
*
* @param columnName column name
- * @return table meta data
+ * @return column meta data
*/
public ShardingSphereColumn getColumn(final String columnName) {
return columns.get(columnName.toLowerCase());
}
+
+ /**
+ * Get column meta data collection.
+ *
+ * @return column meta data collection
+ */
+ public Collection<ShardingSphereColumn> getColumns() {
+ return columns.values();
+ }
+
+ /**
+ * Judge whether contains column or not.
+ *
+ * @param columnName column name
+ * @return whether contains column or not
+ */
+ public boolean containsColumn(final String columnName) {
+ return null != columnName && columns.containsKey(columnName.toLowerCase());
+ }
+
+ /**
+ * Put index meta data.
+ *
+ * @param index index meta data
+ */
+ public void putIndex(final ShardingSphereIndex index) {
+ indexes.put(index.getName().toLowerCase(), index);
+ }
+
+ /**
+ * Remove index meta data via index name.
+ *
+ * @param indexName index name
+ */
+ public void removeIndex(final String indexName) {
+ indexes.remove(indexName.toLowerCase());
+ }
+
+ /**
+ * Get index meta data via index name.
+ *
+ * @param indexName index name
+ * @return index meta data
+ */
+ public ShardingSphereIndex getIndex(final String indexName) {
+ return indexes.get(indexName.toLowerCase());
+ }
+
+ /**
+ * Get index meta data collection.
+ *
+ * @return index meta data collection
+ */
+ public Collection<ShardingSphereIndex> getIndexes() {
+ return indexes.values();
+ }
+
+ /**
+ * Judge whether contains index or not.
+ *
+ * @param indexName index name
+ * @return whether contains index or not
+ */
+ public boolean containsIndex(final String indexName) {
+ return null != indexName && indexes.containsKey(indexName.toLowerCase());
+ }
+
+ /**
+ * Get constraint meta data collection.
+ *
+ * @return constraint meta data collection
+ */
+ public Collection<ShardingSphereConstraint> getConstraints() {
+ return constraints.values();
+ }
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtils.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtils.java
index bd26197ceab..d91ba1177f0 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtils.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtils.java
@@ -100,7 +100,7 @@ public final class IndexMetaDataUtils {
private static Optional<String> findLogicTableNameFromMetaData(final ShardingSphereSchema schema, final String logicIndexName) {
for (String each : schema.getAllTableNames()) {
- if (schema.getTable(each).getIndexes().containsKey(logicIndexName)) {
+ if (schema.getTable(each).containsIndex(logicIndexName)) {
return Optional.of(each);
}
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/schema/swapper/YamlTableSwapper.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/schema/swapper/YamlTableSwapper.java
index 530bdcd316b..29f975b1696 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/schema/swapper/YamlTableSwapper.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/schema/swapper/YamlTableSwapper.java
@@ -77,8 +77,8 @@ public final class YamlTableSwapper implements YamlConfigurationSwapper<YamlShar
return new ShardingSphereColumn(column.getName(), column.getDataType(), column.isPrimaryKey(), column.isGenerated(), column.isCaseSensitive(), column.isVisible(), column.isUnsigned());
}
- private Map<String, YamlShardingSphereConstraint> swapYamlConstraints(final Map<String, ShardingSphereConstraint> constrains) {
- return constrains.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, entry -> swapYamlConstraint(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
+ private Map<String, YamlShardingSphereConstraint> swapYamlConstraints(final Collection<ShardingSphereConstraint> constrains) {
+ return constrains.stream().collect(Collectors.toMap(key -> key.getName().toLowerCase(), this::swapYamlConstraint, (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
}
private YamlShardingSphereConstraint swapYamlConstraint(final ShardingSphereConstraint constraint) {
@@ -88,8 +88,8 @@ public final class YamlTableSwapper implements YamlConfigurationSwapper<YamlShar
return result;
}
- private Map<String, YamlShardingSphereIndex> swapYamlIndexes(final Map<String, ShardingSphereIndex> indexes) {
- return indexes.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, entry -> swapYamlIndex(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
+ private Map<String, YamlShardingSphereIndex> swapYamlIndexes(final Collection<ShardingSphereIndex> indexes) {
+ return indexes.stream().collect(Collectors.toMap(key -> key.getName().toLowerCase(), this::swapYamlIndex, (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
}
private YamlShardingSphereIndex swapYamlIndex(final ShardingSphereIndex index) {
@@ -98,8 +98,8 @@ public final class YamlTableSwapper implements YamlConfigurationSwapper<YamlShar
return result;
}
- private Map<String, YamlShardingSphereColumn> swapYamlColumns(final Map<String, ShardingSphereColumn> columns) {
- return columns.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, entry -> swapYamlColumn(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
+ private Map<String, YamlShardingSphereColumn> swapYamlColumns(final Collection<ShardingSphereColumn> columns) {
+ return columns.stream().collect(Collectors.toMap(key -> key.getName().toLowerCase(), this::swapYamlColumn, (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
}
private YamlShardingSphereColumn swapYamlColumn(final ShardingSphereColumn column) {
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/yaml/schema/swapper/YamlSchemaSwapperTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/yaml/schema/swapper/YamlSchemaSwapperTest.java
index ab301d05137..31d078a401a 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/yaml/schema/swapper/YamlSchemaSwapperTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/yaml/schema/swapper/YamlSchemaSwapperTest.java
@@ -83,7 +83,8 @@ class YamlSchemaSwapperTest {
assertThat(actualSchema.getAllTableNames(), is(Collections.singleton("t_order")));
ShardingSphereTable actualTable = actualSchema.getTable("t_order");
assertColumn(actualTable);
- assertThat(actualTable.getIndexes().keySet(), is(Collections.singleton("primary")));
+ assertThat(actualTable.getIndexes().size(), is(1));
+ assertThat(actualTable.getIndexes().iterator().next().getName(), is("PRIMARY"));
assertThat(actualSchema.getAllColumnNames("t_order").size(), is(2));
assertTrue(actualSchema.containsColumn("t_order", "id"));
assertTrue(actualSchema.containsColumn("t_order", "name"));
@@ -91,8 +92,8 @@ class YamlSchemaSwapperTest {
private void assertColumn(final ShardingSphereTable table) {
assertThat(table.getColumns().size(), is(2));
- assertThat(table.getColumns().get("id"), is(new ShardingSphereColumn("id", 0, true, false, false, true, false)));
- assertThat(table.getColumns().get("name"), is(new ShardingSphereColumn("name", 10, false, true, true, false, true)));
+ assertThat(table.getColumn("id"), is(new ShardingSphereColumn("id", 0, true, false, false, true, false)));
+ assertThat(table.getColumn("name"), is(new ShardingSphereColumn("name", 10, false, true, true, false, true)));
}
@Test
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/AlterIndexStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/AlterIndexStatementSchemaRefresher.java
index 6e1d438678d..df662d43ab4 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/AlterIndexStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/AlterIndexStatementSchemaRefresher.java
@@ -31,7 +31,6 @@ import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterIndexS
import org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.AlterIndexStatementHandler;
import java.util.Collection;
-import java.util.LinkedHashMap;
import java.util.Optional;
/**
@@ -53,9 +52,9 @@ public final class AlterIndexStatementSchemaRefresher implements MetaDataRefresh
ShardingSphereTable table = database.getSchema(actualSchemaName).getTable(logicTableName.get());
Preconditions.checkNotNull(table, "Can not get the table '%s' meta data!", logicTableName.get());
ShardingSphereTable newTable = newShardingSphereTable(table);
- newTable.getIndexes().remove(indexName);
+ newTable.removeIndex(indexName);
String renameIndexName = renameIndex.get().getIndexName().getIdentifier().getValue();
- newTable.getIndexes().put(renameIndexName, new ShardingSphereIndex(renameIndexName));
+ newTable.putIndex(new ShardingSphereIndex(renameIndexName));
AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), actualSchemaName);
alterSchemaMetaDataPOJO.getAlteredTables().add(newTable);
modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
@@ -63,12 +62,11 @@ public final class AlterIndexStatementSchemaRefresher implements MetaDataRefresh
}
private Optional<String> findLogicTableName(final ShardingSphereSchema schema, final String indexName) {
- return schema.getAllTableNames().stream().filter(each -> schema.getTable(each).getIndexes().containsKey(indexName)).findFirst();
+ return schema.getAllTableNames().stream().filter(each -> schema.getTable(each).containsIndex(indexName)).findFirst();
}
private ShardingSphereTable newShardingSphereTable(final ShardingSphereTable table) {
- ShardingSphereTable result = new ShardingSphereTable(table.getName(), new LinkedHashMap<>(table.getColumns()),
- new LinkedHashMap<>(table.getIndexes()), new LinkedHashMap<>(table.getConstraints()));
+ ShardingSphereTable result = new ShardingSphereTable(table.getName(), table.getColumns(), table.getIndexes(), table.getConstraints());
result.getColumnNames().addAll(table.getColumnNames());
result.getVisibleColumns().addAll(table.getVisibleColumns());
result.getPrimaryKeyColumns().addAll(table.getPrimaryKeyColumns());
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/CreateIndexStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/CreateIndexStatementSchemaRefresher.java
index 8cc59ffee52..04fd4f3dffa 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/CreateIndexStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/CreateIndexStatementSchemaRefresher.java
@@ -29,7 +29,6 @@ import org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDa
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateIndexStatement;
import java.util.Collection;
-import java.util.LinkedHashMap;
/**
* Schema refresher for create index statement.
@@ -46,15 +45,14 @@ public final class CreateIndexStatementSchemaRefresher implements MetaDataRefres
}
String tableName = sqlStatement.getTable().getTableName().getIdentifier().getValue();
ShardingSphereTable table = newShardingSphereTable(database.getSchema(schemaName).getTable(tableName));
- table.getIndexes().put(indexName, new ShardingSphereIndex(indexName));
+ table.putIndex(new ShardingSphereIndex(indexName));
AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), schemaName);
alterSchemaMetaDataPOJO.getAlteredTables().add(table);
modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
}
private ShardingSphereTable newShardingSphereTable(final ShardingSphereTable table) {
- ShardingSphereTable result = new ShardingSphereTable(table.getName(), new LinkedHashMap<>(table.getColumns()),
- new LinkedHashMap<>(table.getIndexes()), new LinkedHashMap<>(table.getConstraints()));
+ ShardingSphereTable result = new ShardingSphereTable(table.getName(), table.getColumns(), table.getIndexes(), table.getConstraints());
result.getColumnNames().addAll(table.getColumnNames());
result.getVisibleColumns().addAll(table.getVisibleColumns());
result.getPrimaryKeyColumns().addAll(table.getPrimaryKeyColumns());
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/DropIndexStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/DropIndexStatementSchemaRefresher.java
index 3d79bf43539..16da2baf801 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/DropIndexStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/index/DropIndexStatementSchemaRefresher.java
@@ -32,7 +32,6 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.DropIndexSta
import java.util.Collection;
import java.util.Collections;
-import java.util.LinkedHashMap;
import java.util.Optional;
/**
@@ -51,7 +50,7 @@ public final class DropIndexStatementSchemaRefresher implements MetaDataRefreshe
}
AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO = new AlterSchemaMetaDataPOJO(database.getName(), actualSchemaName);
ShardingSphereTable table = newShardingSphereTable(database.getSchema(actualSchemaName).getTable(logicTableName.get()));
- table.getIndexes().remove(each.getIndexName().getIdentifier().getValue());
+ table.removeIndex(each.getIndexName().getIdentifier().getValue());
alterSchemaMetaDataPOJO.getAlteredTables().add(table);
modeContextManager.alterSchemaMetaData(alterSchemaMetaDataPOJO);
}
@@ -67,8 +66,7 @@ public final class DropIndexStatementSchemaRefresher implements MetaDataRefreshe
}
private ShardingSphereTable newShardingSphereTable(final ShardingSphereTable table) {
- ShardingSphereTable result = new ShardingSphereTable(table.getName(), new LinkedHashMap<>(table.getColumns()),
- new LinkedHashMap<>(table.getIndexes()), new LinkedHashMap<>(table.getConstraints()));
+ ShardingSphereTable result = new ShardingSphereTable(table.getName(), table.getColumns(), table.getIndexes(), table.getConstraints());
result.getColumnNames().addAll(table.getColumnNames());
result.getVisibleColumns().addAll(table.getVisibleColumns());
result.getPrimaryKeyColumns().addAll(table.getPrimaryKeyColumns());
diff --git a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/execute/ShardingSphereDataScheduleCollector.java b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/execute/ShardingSphereDataScheduleCollector.java
index 27cc0fdc8ef..8027c438b45 100644
--- a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/execute/ShardingSphereDataScheduleCollector.java
+++ b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/execute/ShardingSphereDataScheduleCollector.java
@@ -148,7 +148,7 @@ public final class ShardingSphereDataScheduleCollector {
ShardingSphereSchemaDataAlteredEvent result = new ShardingSphereSchemaDataAlteredEvent(databaseName, schemaName, tableData.getName());
Map<String, ShardingSphereRowData> tableDataMap = tableData.getRows().stream().collect(Collectors.toMap(ShardingSphereRowData::getUniqueKey, Function.identity()));
Map<String, ShardingSphereRowData> changedTableDataMap = changedTableData.getRows().stream().collect(Collectors.toMap(ShardingSphereRowData::getUniqueKey, Function.identity()));
- YamlShardingSphereRowDataSwapper swapper = new YamlShardingSphereRowDataSwapper(new ArrayList<>(table.getColumns().values()));
+ YamlShardingSphereRowDataSwapper swapper = new YamlShardingSphereRowDataSwapper(new ArrayList<>(table.getColumns()));
for (Entry<String, ShardingSphereRowData> entry : changedTableDataMap.entrySet()) {
if (!tableDataMap.containsKey(entry.getKey())) {
result.getAddedRows().add(swapper.swapToYamlConfiguration(entry.getValue()));
diff --git a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/execute/ShardingSphereDataCollectorTest.java b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/execute/ShardingSphereDataCollectorTest.java
index e08a8fe5901..91247e31a86 100644
--- a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/execute/ShardingSphereDataCollectorTest.java
+++ b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/execute/ShardingSphereDataCollectorTest.java
@@ -32,9 +32,9 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
import org.junit.jupiter.api.Test;
import java.sql.Types;
+import java.util.Collection;
import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.util.LinkedList;
import java.util.Properties;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
@@ -81,9 +81,9 @@ class ShardingSphereDataCollectorTest {
when(schema.getTable("test_table")).thenReturn(table);
when(schema.containsTable("test_table")).thenReturn(true);
when(table.getName()).thenReturn("test_table");
- Map<String, ShardingSphereColumn> columns = new LinkedHashMap<>();
- columns.put("column1", new ShardingSphereColumn("column1", Types.INTEGER, false, false, false, true, false));
- columns.put("column2", new ShardingSphereColumn("column2", Types.INTEGER, false, false, false, true, false));
+ Collection<ShardingSphereColumn> columns = new LinkedList<>();
+ columns.add(new ShardingSphereColumn("column1", Types.INTEGER, false, false, false, true, false));
+ columns.add(new ShardingSphereColumn("column2", Types.INTEGER, false, false, false, true, false));
when(table.getColumns()).thenReturn(columns);
return result;
}
diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/data/ShardingSphereDataPersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/data/ShardingSphereDataPersistService.java
index 91044d8ad96..eb4d206d575 100644
--- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/data/ShardingSphereDataPersistService.java
+++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/data/ShardingSphereDataPersistService.java
@@ -115,7 +115,7 @@ public final class ShardingSphereDataPersistService {
private void persistTableData(final String databaseName, final String schemaName, final ShardingSphereSchemaData schemaData, final Map<String, ShardingSphereDatabase> databases) {
schemaData.getTableData().values().forEach(each -> {
YamlShardingSphereRowDataSwapper swapper =
- new YamlShardingSphereRowDataSwapper(new ArrayList<>(databases.get(databaseName.toLowerCase()).getSchema(schemaName).getTable(each.getName()).getColumns().values()));
+ new YamlShardingSphereRowDataSwapper(new ArrayList<>(databases.get(databaseName.toLowerCase()).getSchema(schemaName).getTable(each.getName()).getColumns()));
persistTableData(databaseName, schemaName, each.getName(), each.getRows().stream().map(swapper::swapToYamlConfiguration).collect(Collectors.toList()));
});
}
diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/ShardingSphereTableRowDataPersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/ShardingSphereTableRowDataPersistService.java
index 0af4580c64a..851795ac414 100644
--- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/ShardingSphereTableRowDataPersistService.java
+++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/schema/ShardingSphereTableRowDataPersistService.java
@@ -80,7 +80,7 @@ public final class ShardingSphereTableRowDataPersistService {
*/
public ShardingSphereTableData load(final String databaseName, final String schemaName, final String tableName, final ShardingSphereTable table) {
ShardingSphereTableData result = new ShardingSphereTableData(tableName);
- YamlShardingSphereRowDataSwapper swapper = new YamlShardingSphereRowDataSwapper(new ArrayList<>(table.getColumns().values()));
+ YamlShardingSphereRowDataSwapper swapper = new YamlShardingSphereRowDataSwapper(new ArrayList<>(table.getColumns()));
for (String each : repository.getChildrenKeys(ShardingSphereDataNode.getTablePath(databaseName, schemaName, tableName))) {
String yamlRow = repository.getDirectly(ShardingSphereDataNode.getTableRowPath(databaseName, schemaName, tableName, each));
if (!Strings.isNullOrEmpty(yamlRow)) {
diff --git a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/DatabaseMetaDataPersistServiceTest.java b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/DatabaseMetaDataPersistServiceTest.java
index bce6084a26f..5b99aa7d2f1 100644
--- a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/DatabaseMetaDataPersistServiceTest.java
+++ b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/DatabaseMetaDataPersistServiceTest.java
@@ -126,9 +126,11 @@ class DatabaseMetaDataPersistServiceTest {
assertThat(schema.size(), is(1));
assertTrue(databaseMetaDataPersistService.loadSchemas("test").isEmpty());
assertThat(schema.get("foo_schema").getAllTableNames(), is(Collections.singleton("t_order")));
- assertThat(schema.get("foo_schema").getTable("t_order").getIndexes().keySet(), is(Collections.singleton("primary")));
+ assertThat(schema.get("foo_schema").getTable("t_order").getIndexes().size(), is(1));
+ assertThat(schema.get("foo_schema").getTable("t_order").getIndexes().iterator().next().getName(), is("PRIMARY"));
assertThat(schema.get("foo_schema").getAllColumnNames("t_order").size(), is(1));
- assertThat(schema.get("foo_schema").getTable("t_order").getColumns().keySet(), is(Collections.singleton("id")));
+ assertThat(schema.get("foo_schema").getTable("t_order").getColumns().size(), is(1));
+ assertThat(schema.get("foo_schema").getTable("t_order").getColumns().iterator().next().getName(), is("id"));
}
@SneakyThrows({IOException.class, URISyntaxException.class})
diff --git a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/schema/TableMetaDataPersistServiceTest.java b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/schema/TableMetaDataPersistServiceTest.java
index 9803f031ae6..03ee83c5f9a 100644
--- a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/schema/TableMetaDataPersistServiceTest.java
+++ b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/service/schema/TableMetaDataPersistServiceTest.java
@@ -58,9 +58,10 @@ class TableMetaDataPersistServiceTest {
when(repository.getDirectly("/metadata/foo_db/schemas/foo_schema/tables/t_order")).thenReturn(readYAML());
Map<String, ShardingSphereTable> tables = tableMetaDataPersistService.load("foo_db", "foo_schema");
assertThat(tables.size(), is(1));
- assertThat(tables.get("t_order").getIndexes().keySet(), is(Collections.singleton("primary")));
+ assertThat(tables.get("t_order").getIndexes().size(), is(1));
+ assertThat(tables.get("t_order").getIndexes().iterator().next().getName(), is("PRIMARY"));
assertThat(tables.get("t_order").getColumns().size(), is(1));
- assertThat(tables.get("t_order").getColumns().keySet(), is(Collections.singleton("id")));
+ assertThat(tables.get("t_order").getColumns().iterator().next().getName(), is("id"));
}
@Test
diff --git a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/util/SQLFederationDataTypeUtils.java b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/util/SQLFederationDataTypeUtils.java
index 35f6e81ef3b..8997437589d 100644
--- a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/util/SQLFederationDataTypeUtils.java
+++ b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/util/SQLFederationDataTypeUtils.java
@@ -47,7 +47,7 @@ public final class SQLFederationDataTypeUtils {
*/
public static RelDataType createRelDataType(final ShardingSphereTable table, final DatabaseType protocolType, final RelDataTypeFactory typeFactory) {
Builder fieldInfoBuilder = typeFactory.builder();
- for (ShardingSphereColumn each : table.getColumns().values()) {
+ for (ShardingSphereColumn each : table.getColumns()) {
fieldInfoBuilder.add(each.getName(), getRelDataType(protocolType, each, typeFactory));
}
return fieldInfoBuilder.build();
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index e169c26e33e..e6d761fe031 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -47,15 +47,15 @@ import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
import org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
import org.apache.shardingsphere.infra.rule.identifier.type.MutableDataNodeRule;
import org.apache.shardingsphere.infra.rule.identifier.type.ResourceHeldRule;
-import org.apache.shardingsphere.infra.state.cluster.ClusterStateContext;
import org.apache.shardingsphere.infra.state.cluster.ClusterState;
+import org.apache.shardingsphere.infra.state.cluster.ClusterStateContext;
import org.apache.shardingsphere.infra.yaml.data.pojo.YamlShardingSphereRowData;
import org.apache.shardingsphere.infra.yaml.data.swapper.YamlShardingSphereRowDataSwapper;
import org.apache.shardingsphere.metadata.MetaDataFactory;
+import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.mode.manager.switcher.ResourceSwitchManager;
import org.apache.shardingsphere.mode.manager.switcher.SwitchingResource;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import javax.sql.DataSource;
import java.sql.SQLException;
@@ -658,7 +658,7 @@ public final class ContextManager implements AutoCloseable {
return;
}
ShardingSphereTableData tableData = metaDataContexts.getShardingSphereData().getDatabase(databaseName).getSchema(schemaName).getTable(tableName);
- List<ShardingSphereColumn> columns = new ArrayList<>(metaDataContexts.getMetaData().getDatabase(databaseName).getSchema(schemaName).getTable(tableName).getColumns().values());
+ List<ShardingSphereColumn> columns = new ArrayList<>(metaDataContexts.getMetaData().getDatabase(databaseName).getSchema(schemaName).getTable(tableName).getColumns());
tableData.getRows().add(new YamlShardingSphereRowDataSwapper(columns).swapToObject(yamlRowData));
}
diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
index 8e60a0fed2e..a1619edb9ba 100644
--- a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
+++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
@@ -36,9 +36,9 @@ import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
import org.apache.shardingsphere.infra.rule.identifier.type.MutableDataNodeRule;
import org.apache.shardingsphere.infra.state.cluster.ClusterState;
+import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.metadata.persist.service.DatabaseMetaDataPersistService;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource;
import org.apache.shardingsphere.test.util.PropertiesBuilder;
import org.apache.shardingsphere.test.util.PropertiesBuilder.Property;
@@ -167,7 +167,7 @@ class ContextManagerTest {
contextManager.alterSchema("foo_db", "foo_schema", toBeChangedTable, null);
ShardingSphereTable table = contextManager.getMetaDataContexts().getMetaData().getDatabase("foo_db").getSchema("foo_schema").getTables().get("foo_tbl");
assertThat(table.getColumns().size(), is(1));
- assertTrue(table.getColumns().containsKey("foo_col"));
+ assertTrue(table.containsColumn("foo_col"));
}
@Test
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutor.java
index 4c17c7d96cf..d68752f9f54 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutor.java
@@ -68,7 +68,7 @@ public final class ShowTableMetaDataExecutor implements ConnectionSessionRequire
private Collection<LocalDataQueryResultRow> buildTableRows(final String databaseName, final ShardingSphereSchema schema, final String tableName) {
Collection<LocalDataQueryResultRow> result = new LinkedList<>();
Collection<LocalDataQueryResultRow> columnRows = schema.getAllColumnNames(tableName).stream().map(each -> buildRow(databaseName, tableName, "COLUMN", each)).collect(Collectors.toList());
- Collection<LocalDataQueryResultRow> indexRows = schema.getTable(tableName).getIndexes().values().stream().map(ShardingSphereIndex::getName)
+ Collection<LocalDataQueryResultRow> indexRows = schema.getTable(tableName).getIndexes().stream().map(ShardingSphereIndex::getName)
.map(each -> buildRow(databaseName, tableName, "INDEX", each)).collect(Collectors.toList());
result.addAll(columnRows);
result.addAll(indexRows);
diff --git a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilder.java b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilder.java
index 1bd72432721..12bf6ea60cd 100644
--- a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilder.java
+++ b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/response/header/query/MySQLQueryHeaderBuilder.java
@@ -47,7 +47,7 @@ public final class MySQLQueryHeaderBuilder implements QueryHeaderBuilder {
tableName = getLogicTableName(database, actualTableName);
ShardingSphereSchema schema = database.getSchema(schemaName);
primaryKey = null != schema
- && Optional.ofNullable(schema.getTable(tableName)).map(optional -> optional.getColumns().get(columnName.toLowerCase())).map(ShardingSphereColumn::isPrimaryKey).orElse(false);
+ && Optional.ofNullable(schema.getTable(tableName)).map(optional -> optional.getColumn(columnName)).map(ShardingSphereColumn::isPrimaryKey).orElse(false);
}
int columnType = queryResultMetaData.getColumnType(columnIndex);
String columnTypeName = queryResultMetaData.getColumnTypeName(columnIndex);
diff --git a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
index d1f81eb2c9c..695e2aa6017 100644
--- a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
+++ b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
@@ -148,7 +148,7 @@ public final class MySQLComStmtPrepareExecutor implements CommandExecutor {
for (Projection each : projections) {
// TODO Calculate column definition flag for other projection types
if (each instanceof ColumnProjection) {
- result.add(Optional.ofNullable(columnToTableMap.get(each.getExpression())).map(schema::getTable).map(table -> table.getColumns().get(((ColumnProjection) each).getName()))
+ result.add(Optional.ofNullable(columnToTableMap.get(each.getExpression())).map(schema::getTable).map(table -> table.getColumn(((ColumnProjection) each).getName()))
.map(column -> createMySQLColumnDefinition41Packet(characterSet, calculateColumnDefinitionFlag(column), MySQLBinaryColumnType.valueOfJDBCType(column.getDataType())))
.orElseGet(() -> createMySQLColumnDefinition41Packet(characterSet, 0, MySQLBinaryColumnType.MYSQL_TYPE_VAR_STRING)));
} else {
diff --git a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareParameterMarkerExtractor.java b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareParameterMarkerExtractor.java
index 8672a15f181..1c3b440930f 100644
--- a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareParameterMarkerExtractor.java
+++ b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareParameterMarkerExtractor.java
@@ -29,13 +29,11 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.Parameter
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
-import java.util.TreeMap;
import java.util.stream.Collectors;
/**
@@ -59,8 +57,6 @@ public final class MySQLComStmtPrepareParameterMarkerExtractor {
private static Map<ParameterMarkerSegment, ShardingSphereColumn> findColumnsOfParameterMarkersForInsert(final InsertStatement insertStatement, final ShardingSphereSchema schema) {
ShardingSphereTable table = schema.getTable(insertStatement.getTable().getTableName().getIdentifier().getValue());
List<String> columnNamesOfInsert = getColumnNamesOfInsertStatement(insertStatement, table);
- Map<String, ShardingSphereColumn> columnsOfTable = table.getColumns();
- Map<String, ShardingSphereColumn> caseInsensitiveColumnsOfTable = convertToCaseInsensitiveColumnsOfTable(columnsOfTable);
Map<ParameterMarkerSegment, ShardingSphereColumn> result = new LinkedHashMap<>(insertStatement.getParameterMarkerSegments().size(), 1);
for (InsertValuesSegment each : insertStatement.getValues()) {
ListIterator<ExpressionSegment> listIterator = each.getValues().listIterator();
@@ -70,7 +66,7 @@ public final class MySQLComStmtPrepareParameterMarkerExtractor {
continue;
}
String columnName = columnNamesOfInsert.get(columnIndex);
- ShardingSphereColumn column = columnsOfTable.getOrDefault(columnName, caseInsensitiveColumnsOfTable.get(columnName));
+ ShardingSphereColumn column = table.getColumn(columnName);
if (null != column) {
result.put((ParameterMarkerSegment) value, column);
}
@@ -80,13 +76,6 @@ public final class MySQLComStmtPrepareParameterMarkerExtractor {
}
private static List<String> getColumnNamesOfInsertStatement(final InsertStatement insertStatement, final ShardingSphereTable table) {
- return insertStatement.getColumns().isEmpty() ? new ArrayList<>(table.getColumns().keySet())
- : insertStatement.getColumns().stream().map(each -> each.getIdentifier().getValue()).collect(Collectors.toList());
- }
-
- private static Map<String, ShardingSphereColumn> convertToCaseInsensitiveColumnsOfTable(final Map<String, ShardingSphereColumn> columns) {
- Map<String, ShardingSphereColumn> result = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
- result.putAll(columns);
- return result;
+ return insertStatement.getColumns().isEmpty() ? table.getColumnNames() : insertStatement.getColumns().stream().map(each -> each.getIdentifier().getValue()).collect(Collectors.toList());
}
}
diff --git a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
index 22429220368..545b2d5cede 100644
--- a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
+++ b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
@@ -230,9 +230,9 @@ class MySQLComStmtPrepareExecutorTest {
.thenReturn(new SQLParserRule(new SQLParserRuleConfiguration(false, cacheOption, cacheOption)));
when(result.getMetaDataContexts().getMetaData().getDatabase(connectionSession.getDatabaseName()).getProtocolType()).thenReturn(new MySQLDatabaseType());
ShardingSphereTable table = new ShardingSphereTable();
- table.getColumns().put("id", new ShardingSphereColumn("id", Types.BIGINT, true, false, false, false, true));
- table.getColumns().put("name", new ShardingSphereColumn("name", Types.VARCHAR, false, false, false, false, false));
- table.getColumns().put("age", new ShardingSphereColumn("age", Types.SMALLINT, false, false, false, false, true));
+ table.putColumn(new ShardingSphereColumn("id", Types.BIGINT, true, false, false, false, true));
+ table.putColumn(new ShardingSphereColumn("name", Types.VARCHAR, false, false, false, false, false));
+ table.putColumn(new ShardingSphereColumn("age", Types.SMALLINT, false, false, false, false, true));
ShardingSphereSchema schema = new ShardingSphereSchema();
schema.getTables().put("user", table);
ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db", new MySQLDatabaseType(), new ShardingSphereResourceMetaData("foo_db", Collections.emptyMap()),
diff --git a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareParameterMarkerExtractorTest.java b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareParameterMarkerExtractorTest.java
index 7a10c74276b..d4562a9fe0c 100644
--- a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareParameterMarkerExtractorTest.java
+++ b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareParameterMarkerExtractorTest.java
@@ -44,17 +44,17 @@ class MySQLComStmtPrepareParameterMarkerExtractorTest {
ShardingSphereSchema schema = prepareSchema();
Map<ParameterMarkerSegment, ShardingSphereColumn> actual = MySQLComStmtPrepareParameterMarkerExtractor.findColumnsOfParameterMarkers(sqlStatement, schema);
List<ParameterMarkerSegment> parameterMarkerSegments = new ArrayList<>(((AbstractSQLStatement) sqlStatement).getParameterMarkerSegments());
- assertThat(actual.get(parameterMarkerSegments.get(0)), is(schema.getTable("user").getColumns().get("name")));
- assertThat(actual.get(parameterMarkerSegments.get(1)), is(schema.getTable("user").getColumns().get("age")));
- assertThat(actual.get(parameterMarkerSegments.get(2)), is(schema.getTable("user").getColumns().get("id")));
- assertThat(actual.get(parameterMarkerSegments.get(3)), is(schema.getTable("user").getColumns().get("age")));
+ assertThat(actual.get(parameterMarkerSegments.get(0)), is(schema.getTable("user").getColumn("name")));
+ assertThat(actual.get(parameterMarkerSegments.get(1)), is(schema.getTable("user").getColumn("age")));
+ assertThat(actual.get(parameterMarkerSegments.get(2)), is(schema.getTable("user").getColumn("id")));
+ assertThat(actual.get(parameterMarkerSegments.get(3)), is(schema.getTable("user").getColumn("age")));
}
private ShardingSphereSchema prepareSchema() {
ShardingSphereTable table = new ShardingSphereTable();
- table.getColumns().put("id", new ShardingSphereColumn("id", Types.BIGINT, true, false, false, false, true));
- table.getColumns().put("name", new ShardingSphereColumn("name", Types.VARCHAR, false, false, false, false, false));
- table.getColumns().put("age", new ShardingSphereColumn("age", Types.SMALLINT, false, false, false, false, true));
+ table.putColumn(new ShardingSphereColumn("id", Types.BIGINT, true, false, false, false, true));
+ table.putColumn(new ShardingSphereColumn("name", Types.VARCHAR, false, false, false, false, false));
+ table.putColumn(new ShardingSphereColumn("age", Types.SMALLINT, false, false, false, false, true));
ShardingSphereSchema result = new ShardingSphereSchema();
result.getTables().put("user", table);
return result;
diff --git a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
index e730b8475fd..7c572ea70f1 100644
--- a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
+++ b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
@@ -71,9 +71,7 @@ import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
-import java.util.Map;
import java.util.Optional;
-import java.util.TreeMap;
import java.util.stream.Collectors;
/**
@@ -134,9 +132,7 @@ public final class PostgreSQLComDescribeExecutor implements CommandExecutor {
String logicTableName = insertStatement.getTable().getTableName().getIdentifier().getValue();
ShardingSphereTable table = getTableFromMetaData(connectionSession.getDatabaseName(), insertStatement, logicTableName);
List<String> columnNamesOfInsert = getColumnNamesOfInsertStatement(insertStatement, table);
- Map<String, ShardingSphereColumn> columnsOfTable = table.getColumns();
- Map<String, ShardingSphereColumn> caseInsensitiveColumnsOfTable = convertToCaseInsensitiveColumnsOfTable(columnsOfTable);
- preparedStatement.setRowDescription(returningSegment.<PostgreSQLPacket>map(returning -> describeReturning(returning, columnsOfTable, caseInsensitiveColumnsOfTable))
+ preparedStatement.setRowDescription(returningSegment.<PostgreSQLPacket>map(returning -> describeReturning(returning, table))
.orElseGet(PostgreSQLNoDataPacket::getInstance));
int parameterMarkerIndex = 0;
for (InsertValuesSegment each : insertStatement.getValues()) {
@@ -151,7 +147,7 @@ public final class PostgreSQLComDescribeExecutor implements CommandExecutor {
continue;
}
String columnName = columnNamesOfInsert.get(columnIndex);
- ShardingSphereColumn column = columnsOfTable.getOrDefault(columnName, caseInsensitiveColumnsOfTable.get(columnName));
+ ShardingSphereColumn column = table.getColumn(columnName);
ShardingSpherePreconditions.checkState(null != column, () -> new ColumnNotFoundException(logicTableName, columnName));
preparedStatement.getParameterTypes().set(parameterMarkerIndex++, PostgreSQLColumnType.valueOfJDBCType(column.getDataType()));
}
@@ -177,28 +173,20 @@ public final class PostgreSQLComDescribeExecutor implements CommandExecutor {
}
private static List<String> getColumnNamesOfInsertStatement(final InsertStatement insertStatement, final ShardingSphereTable table) {
- return insertStatement.getColumns().isEmpty() ? new ArrayList<>(table.getColumns().keySet())
- : insertStatement.getColumns().stream().map(each -> each.getIdentifier().getValue()).collect(Collectors.toList());
+ return insertStatement.getColumns().isEmpty() ? table.getColumnNames() : insertStatement.getColumns().stream().map(each -> each.getIdentifier().getValue()).collect(Collectors.toList());
}
- private Map<String, ShardingSphereColumn> convertToCaseInsensitiveColumnsOfTable(final Map<String, ShardingSphereColumn> columns) {
- Map<String, ShardingSphereColumn> result = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
- result.putAll(columns);
- return result;
- }
-
- private PostgreSQLRowDescriptionPacket describeReturning(final ReturningSegment returningSegment, final Map<String, ShardingSphereColumn> columnsOfTable,
- final Map<String, ShardingSphereColumn> caseInsensitiveColumnsOfTable) {
+ private PostgreSQLRowDescriptionPacket describeReturning(final ReturningSegment returningSegment, final ShardingSphereTable table) {
Collection<PostgreSQLColumnDescription> result = new LinkedList<>();
for (ProjectionSegment each : returningSegment.getProjections().getProjections()) {
if (each instanceof ShorthandProjectionSegment) {
- columnsOfTable.values().stream().map(column -> new PostgreSQLColumnDescription(column.getName(), 0, column.getDataType(), estimateColumnLength(column.getDataType()), ""))
+ table.getColumns().stream().map(column -> new PostgreSQLColumnDescription(column.getName(), 0, column.getDataType(), estimateColumnLength(column.getDataType()), ""))
.forEach(result::add);
}
if (each instanceof ColumnProjectionSegment) {
ColumnProjectionSegment segment = (ColumnProjectionSegment) each;
String columnName = segment.getColumn().getIdentifier().getValue();
- ShardingSphereColumn column = columnsOfTable.getOrDefault(columnName, caseInsensitiveColumnsOfTable.getOrDefault(columnName, generateDefaultColumn(segment)));
+ ShardingSphereColumn column = table.containsColumn(columnName) ? table.getColumn(columnName) : generateDefaultColumn(segment);
String alias = segment.getAlias().orElseGet(column::getName);
result.add(new PostgreSQLColumnDescription(alias, 0, column.getDataType(), estimateColumnLength(column.getDataType()), ""));
}
diff --git a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
index ec2914ae9ad..930a1db275b 100644
--- a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
+++ b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/AddResourceTestCase.java
@@ -71,7 +71,7 @@ public final class AddResourceTestCase extends BaseTransactionTestCase {
try (Connection connection = getDataSource().getConnection()) {
connection.setAutoCommit(false);
assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 0);
- executeWithLog(connection, "insert into account(id, BALANCE, TRANSACTION_ID) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6, 6);");
+ executeWithLog(connection, "insert into account(id, balance, transaction_id) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6, 6);");
assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 6);
connection.rollback();
assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 0);
@@ -82,7 +82,7 @@ public final class AddResourceTestCase extends BaseTransactionTestCase {
try (Connection connection = getDataSource().getConnection()) {
connection.setAutoCommit(false);
assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 0);
- executeWithLog(connection, "insert into account(id, BALANCE, TRANSACTION_ID) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6, 6);");
+ executeWithLog(connection, "insert into account(id, balance, transaction_id) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6, 6);");
assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 6);
connection.commit();
assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 6);
diff --git a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
index 1413c1212c7..a008e8ab5d0 100644
--- a/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
+++ b/test/e2e/operation/transaction/src/test/java/org/apache/shardingsphere/test/e2e/transaction/cases/alterresource/CloseResourceTestCase.java
@@ -62,7 +62,7 @@ public final class CloseResourceTestCase extends BaseTransactionTestCase {
try (Connection connection = getDataSource().getConnection()) {
connection.setAutoCommit(false);
assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 0);
- executeWithLog(connection, "insert into account(id, BALANCE, TRANSACTION_ID) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6, 6);");
+ executeWithLog(connection, "insert into account(id, balance, transaction_id) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6, 6);");
assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 6);
connection.rollback();
assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 0);
@@ -73,7 +73,7 @@ public final class CloseResourceTestCase extends BaseTransactionTestCase {
try (Connection connection = getDataSource().getConnection()) {
connection.setAutoCommit(false);
assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 0);
- executeWithLog(connection, "insert into account(id, BALANCE, TRANSACTION_ID) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6, 6);");
+ executeWithLog(connection, "insert into account(id, balance, transaction_id) values(1, 1, 1),(2, 2, 2),(3, 3, 3),(4, 4, 4),(5, 5, 5),(6, 6, 6);");
assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 6);
connection.commit();
assertTableRowCount(connection, TransactionTestConstants.ACCOUNT, 6);
diff --git a/test/e2e/operation/transaction/src/test/resources/env/common/command.xml b/test/e2e/operation/transaction/src/test/resources/env/common/command.xml
index c73555a57d8..81c6e2b42b8 100644
--- a/test/e2e/operation/transaction/src/test/resources/env/common/command.xml
+++ b/test/e2e/operation/transaction/src/test/resources/env/common/command.xml
@@ -98,8 +98,8 @@
<create-account-table>
CREATE TABLE account
(
- ID BIGINT, BALANCE FLOAT,
- TRANSACTION_ID INT
+ id BIGINT, balance FLOAT,
+ transaction_id INT
)
</create-account-table>
diff --git a/test/e2e/operation/transaction/src/test/resources/env/scenario/cursor/data/actual/init-sql/opengauss/01-actual-init.sql b/test/e2e/operation/transaction/src/test/resources/env/scenario/cursor/data/actual/init-sql/opengauss/01-actual-init.sql
index c75f4716582..4b7bc981143 100644
--- a/test/e2e/operation/transaction/src/test/resources/env/scenario/cursor/data/actual/init-sql/opengauss/01-actual-init.sql
+++ b/test/e2e/operation/transaction/src/test/resources/env/scenario/cursor/data/actual/init-sql/opengauss/01-actual-init.sql
@@ -47,8 +47,8 @@ CREATE TABLE "t_order_item_0" ("item_id" INT PRIMARY KEY, "order_id" int NOT NUL
CREATE TABLE "t_order_item_1" ("item_id" INT PRIMARY KEY, "order_id" int NOT NULL, "user_id" int NOT NULL, "status" varchar(50) DEFAULT NULL);
CREATE OR REPLACE VIEW t_order_view_0 AS SELECT * FROM t_order_0;
CREATE OR REPLACE VIEW t_order_view_1 AS SELECT * FROM t_order_1;
-CREATE TABLE "account_0"("ID" BIGINT, "BALANCE" FLOAT, "TRANSACTION_ID" INT);
-CREATE TABLE "account_1"("ID" BIGINT, "BALANCE" FLOAT, "TRANSACTION_ID" INT);
+CREATE TABLE "account_0"("id" BIGINT, "balance" FLOAT, "transaction_id" INT);
+CREATE TABLE "account_1"("id" BIGINT, "balance" FLOAT, "transaction_id" INT);
CREATE TABLE "t_address" ("address_id" INT PRIMARY KEY, "code" VARCHAR(36) DEFAULT NULL, "address" VARCHAR(36) DEFAULT NULL, "city_id" INT, "province_id" INT, "country_id" INT);
CREATE TABLE "t_country" ("country_id" INT PRIMARY KEY, "country_name" VARCHAR, "continent_name" VARCHAR, "creation_date" DATE NOT NULL);
CREATE TABLE "t_province" ("province_id" INT PRIMARY KEY, "country_id" INT, "province_name" VARCHAR, "creation_date" DATE NOT NULL);
@@ -86,8 +86,8 @@ CREATE TABLE "t_order_item_0" ("item_id" INT PRIMARY KEY, "order_id" int NOT NUL
CREATE TABLE "t_order_item_1" ("item_id" INT PRIMARY KEY, "order_id" int NOT NULL, "user_id" int NOT NULL, "status" varchar(50) DEFAULT NULL);
CREATE OR REPLACE VIEW t_order_view_0 AS SELECT * FROM t_order_0;
CREATE OR REPLACE VIEW t_order_view_1 AS SELECT * FROM t_order_1;
-CREATE TABLE "account_0"("ID" BIGINT, "BALANCE" FLOAT, "TRANSACTION_ID" INT);
-CREATE TABLE "account_1"("ID" BIGINT, "BALANCE" FLOAT, "TRANSACTION_ID" INT);
+CREATE TABLE "account_0"("id" BIGINT, "balance" FLOAT, "transaction_id" INT);
+CREATE TABLE "account_1"("id" BIGINT, "balance" FLOAT, "transaction_id" INT);
CREATE TABLE "t_address" ("address_id" INT PRIMARY KEY, "code" VARCHAR(36) DEFAULT NULL, "address" VARCHAR(36) DEFAULT NULL, "city_id" INT, "province_id" INT, "country_id" INT);
CREATE TABLE "t_country" ("country_id" INT PRIMARY KEY, "country_name" VARCHAR, "continent_name" VARCHAR, "creation_date" DATE NOT NULL);
CREATE TABLE "t_province" ("province_id" INT PRIMARY KEY, "country_id" INT, "province_name" VARCHAR, "creation_date" DATE NOT NULL);
diff --git a/test/e2e/operation/transaction/src/test/resources/env/scenario/default/data/actual/init-sql/mysql/01-actual-init.sql b/test/e2e/operation/transaction/src/test/resources/env/scenario/default/data/actual/init-sql/mysql/01-actual-init.sql
index e6ae91a2977..14979a7062f 100644
--- a/test/e2e/operation/transaction/src/test/resources/env/scenario/default/data/actual/init-sql/mysql/01-actual-init.sql
+++ b/test/e2e/operation/transaction/src/test/resources/env/scenario/default/data/actual/init-sql/mysql/01-actual-init.sql
@@ -30,14 +30,14 @@ CREATE TABLE transaction_it_0.`t_order_0` (`order_id` INT PRIMARY KEY, `user_id`
CREATE TABLE transaction_it_0.`t_order_1` (`order_id` INT PRIMARY KEY, `user_id` INT NOT NULL, `status` VARCHAR(45) NULL);
CREATE TABLE transaction_it_0.`t_order_item_0` (`item_id` INT PRIMARY KEY, `order_id` int NOT NULL, `user_id` int NOT NULL, `status` varchar(50) DEFAULT NULL);
CREATE TABLE transaction_it_0.`t_order_item_1` (`item_id` INT PRIMARY KEY, `order_id` int NOT NULL, `user_id` int NOT NULL, `status` varchar(50) DEFAULT NULL);
-CREATE TABLE transaction_it_0.`account_0`(`ID` BIGINT, `BALANCE` FLOAT, `TRANSACTION_ID` INT);
-CREATE TABLE transaction_it_0.`account_1`(`ID` BIGINT, `BALANCE` FLOAT, `TRANSACTION_ID` INT);
+CREATE TABLE transaction_it_0.`account_0`(`id` BIGINT, `balance` FLOAT, `transaction_id` INT);
+CREATE TABLE transaction_it_0.`account_1`(`id` BIGINT, `balance` FLOAT, `transaction_id` INT);
CREATE TABLE transaction_it_0.`t_address` (`id` INT PRIMARY KEY, `code` VARCHAR(36) DEFAULT NULL, `address` VARCHAR(36) DEFAULT NULL);
CREATE TABLE transaction_it_1.`t_order_0` (`order_id` INT PRIMARY KEY, `user_id` INT NOT NULL, `status` VARCHAR(45) NULL);
CREATE TABLE transaction_it_1.`t_order_1` (`order_id` INT PRIMARY KEY, `user_id` INT NOT NULL, `status` VARCHAR(45) NULL);
CREATE TABLE transaction_it_1.`t_order_item_0` (`item_id` INT PRIMARY KEY, `order_id` int NOT NULL, `user_id` int NOT NULL, `status` varchar(50) DEFAULT NULL);
CREATE TABLE transaction_it_1.`t_order_item_1` (`item_id` INT PRIMARY KEY, `order_id` int NOT NULL, `user_id` int NOT NULL, `status` varchar(50) DEFAULT NULL);
-CREATE TABLE transaction_it_1.`account_0`(`ID` BIGINT, `BALANCE` FLOAT, `TRANSACTION_ID` INT);
-CREATE TABLE transaction_it_1.`account_1`(`ID` BIGINT, `BALANCE` FLOAT, `TRANSACTION_ID` INT);
+CREATE TABLE transaction_it_1.`account_0`(`id` BIGINT, `balance` FLOAT, `transaction_id` INT);
+CREATE TABLE transaction_it_1.`account_1`(`id` BIGINT, `balance` FLOAT, `transaction_id` INT);
CREATE TABLE transaction_it_1.`t_address` (`id` INT PRIMARY KEY, `code` VARCHAR(36) DEFAULT NULL, `address` VARCHAR(36) DEFAULT NULL);
diff --git a/test/e2e/operation/transaction/src/test/resources/env/scenario/readwrite-splitting/data/actual/init-sql/mysql/01-actual-init.sql b/test/e2e/operation/transaction/src/test/resources/env/scenario/readwrite-splitting/data/actual/init-sql/mysql/01-actual-init.sql
index 38344a363ed..2bba89ddf06 100644
--- a/test/e2e/operation/transaction/src/test/resources/env/scenario/readwrite-splitting/data/actual/init-sql/mysql/01-actual-init.sql
+++ b/test/e2e/operation/transaction/src/test/resources/env/scenario/readwrite-splitting/data/actual/init-sql/mysql/01-actual-init.sql
@@ -28,15 +28,15 @@ CREATE DATABASE read_ds_1;
CREATE TABLE write_ds.`t_order` (`order_id` INT PRIMARY KEY, `user_id` INT NOT NULL, `status` VARCHAR(45) NULL);
CREATE TABLE write_ds.`t_order_item` (`item_id` INT PRIMARY KEY, `order_id` int NOT NULL, `user_id` int NOT NULL, `status` varchar(50) DEFAULT NULL);
-CREATE TABLE write_ds.`account`(`ID` BIGINT, `BALANCE` FLOAT, `TRANSACTION_ID` INT);
+CREATE TABLE write_ds.`account`(`id` BIGINT, `balance` FLOAT, `transaction_id` INT);
CREATE TABLE write_ds.`t_address` (`id` INT PRIMARY KEY, `code` VARCHAR(36) DEFAULT NULL, `address` VARCHAR(36) DEFAULT NULL);
CREATE TABLE read_ds_0.`t_order` (`order_id` INT PRIMARY KEY, `user_id` INT NOT NULL, `status` VARCHAR(45) NULL);
CREATE TABLE read_ds_0.`t_order_item` (`item_id` INT PRIMARY KEY, `order_id` int NOT NULL, `user_id` int NOT NULL, `status` varchar(50) DEFAULT NULL);
-CREATE TABLE read_ds_0.`account`(`ID` BIGINT, `BALANCE` FLOAT, `TRANSACTION_ID` INT);
+CREATE TABLE read_ds_0.`account`(`id` BIGINT, `balance` FLOAT, `transaction_id` INT);
CREATE TABLE read_ds_0.`t_address` (`id` INT PRIMARY KEY, `code` VARCHAR(36) DEFAULT NULL, `address` VARCHAR(36) DEFAULT NULL);
CREATE TABLE read_ds_1.`t_order` (`order_id` INT PRIMARY KEY, `user_id` INT NOT NULL, `status` VARCHAR(45) NULL);
CREATE TABLE read_ds_1.`t_order_item` (`item_id` INT PRIMARY KEY, `order_id` int NOT NULL, `user_id` int NOT NULL, `status` varchar(50) DEFAULT NULL);
-CREATE TABLE read_ds_1.`account`(`ID` BIGINT, `BALANCE` FLOAT, `TRANSACTION_ID` INT);
+CREATE TABLE read_ds_1.`account`(`id` BIGINT, `balance` FLOAT, `transaction_id` INT);
CREATE TABLE read_ds_1.`t_address` (`id` INT PRIMARY KEY, `code` VARCHAR(36) DEFAULT NULL, `address` VARCHAR(36) DEFAULT NULL);
diff --git a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/MixSQLRewriterIT.java b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/MixSQLRewriterIT.java
index e4bf022cd58..2993ea70b19 100644
--- a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/MixSQLRewriterIT.java
+++ b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/MixSQLRewriterIT.java
@@ -38,7 +38,7 @@ import java.sql.Types;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.LinkedHashMap;
+import java.util.LinkedList;
import java.util.Map;
import static org.mockito.Mockito.mock;
@@ -60,7 +60,7 @@ class MixSQLRewriterIT extends SQLRewriterIT {
when(result.getAllTableNames()).thenReturn(Arrays.asList("t_account", "t_account_bak", "t_account_detail"));
ShardingSphereTable accountTable = mock(ShardingSphereTable.class);
when(accountTable.getColumns()).thenReturn(createColumns());
- when(accountTable.getIndexes()).thenReturn(Collections.singletonMap("index_name", new ShardingSphereIndex("index_name")));
+ when(accountTable.getIndexes()).thenReturn(Collections.singletonList(new ShardingSphereIndex("index_name")));
when(result.containsTable("t_account")).thenReturn(true);
when(result.getTable("t_account")).thenReturn(accountTable);
ShardingSphereTable accountBakTable = mock(ShardingSphereTable.class);
@@ -83,12 +83,12 @@ class MixSQLRewriterIT extends SQLRewriterIT {
protected void mockDataSource(final Map<String, DataSource> dataSources) {
}
- private Map<String, ShardingSphereColumn> createColumns() {
- Map<String, ShardingSphereColumn> result = new LinkedHashMap<>(4, 1);
- result.put("account_id", new ShardingSphereColumn("account_id", Types.INTEGER, true, true, false, true, false));
- result.put("password", mock(ShardingSphereColumn.class));
- result.put("amount", mock(ShardingSphereColumn.class));
- result.put("status", mock(ShardingSphereColumn.class));
+ private Collection<ShardingSphereColumn> createColumns() {
+ Collection<ShardingSphereColumn> result = new LinkedList<>();
+ result.add(new ShardingSphereColumn("account_id", Types.INTEGER, true, true, false, true, false));
+ result.add(mock(ShardingSphereColumn.class));
+ result.add(mock(ShardingSphereColumn.class));
+ result.add(mock(ShardingSphereColumn.class));
return result;
}
}
diff --git a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/ShardingSQLRewriterIT.java b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/ShardingSQLRewriterIT.java
index 4d2085deb8b..963018ba8b1 100644
--- a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/ShardingSQLRewriterIT.java
+++ b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/scenario/ShardingSQLRewriterIT.java
@@ -41,7 +41,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.LinkedHashMap;
+import java.util.LinkedList;
import java.util.Map;
import java.util.Optional;
@@ -73,7 +73,8 @@ class ShardingSQLRewriterIT extends SQLRewriterIT {
when(result.getAllTableNames()).thenReturn(Arrays.asList("t_account", "t_account_detail"));
ShardingSphereTable accountTableMetaData = mock(ShardingSphereTable.class);
when(accountTableMetaData.getColumns()).thenReturn(createColumnMetaDataMap());
- when(accountTableMetaData.getIndexes()).thenReturn(Collections.singletonMap("status_idx_exist", new ShardingSphereIndex("status_idx_exist")));
+ when(accountTableMetaData.getIndexes()).thenReturn(Collections.singletonList(new ShardingSphereIndex("status_idx_exist")));
+ when(accountTableMetaData.containsIndex("status_idx_exist")).thenReturn(true);
when(accountTableMetaData.getPrimaryKeyColumns()).thenReturn(Collections.singletonList("account_id"));
when(result.containsTable("t_account")).thenReturn(true);
when(result.getTable("t_account")).thenReturn(accountTableMetaData);
@@ -88,11 +89,11 @@ class ShardingSQLRewriterIT extends SQLRewriterIT {
return Collections.singletonMap(schemaName, result);
}
- private Map<String, ShardingSphereColumn> createColumnMetaDataMap() {
- Map<String, ShardingSphereColumn> result = new LinkedHashMap<>(3, 1);
- result.put("account_id", new ShardingSphereColumn("account_id", Types.INTEGER, true, true, false, true, false));
- result.put("amount", mock(ShardingSphereColumn.class));
- result.put("status", mock(ShardingSphereColumn.class));
+ private Collection<ShardingSphereColumn> createColumnMetaDataMap() {
+ Collection<ShardingSphereColumn> result = new LinkedList<>();
+ result.add(new ShardingSphereColumn("account_id", Types.INTEGER, true, true, false, true, false));
+ result.add(mock(ShardingSphereColumn.class));
+ result.add(mock(ShardingSphereColumn.class));
return result;
}