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 <[email protected]>
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;
}