This is an automated email from the ASF dual-hosted git repository.
tuichenchuxin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 1682dd931ca Add ColumnGeneratedReviser (#24012)
1682dd931ca is described below
commit 1682dd931ca5dd81df68427e1a5f5641580d2afa
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Feb 6 11:00:58 2023 +0800
Add ColumnGeneratedReviser (#24012)
---
.../metadata/ShardingSchemaMetaDataDecorator.java | 14 ++++--------
.../reviser/ShardingColumnGeneratedReviser.java | 25 ++++++++++------------
...ameReviser.java => ColumnGeneratedReviser.java} | 13 ++++++-----
.../reviser/column/ColumnNameReviser.java | 3 +--
4 files changed, 22 insertions(+), 33 deletions(-)
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecorator.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecorator.java
index 97fbf624f31..5811eaecf8e 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecorator.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/ShardingSchemaMetaDataDecorator.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.sharding.metadata;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.datanode.DataNode;
import
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
+import
org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnReviseEngine;
import
org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.RuleBasedSchemaMetaDataDecorator;
import
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ColumnMetaData;
import
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ConstraintMetaData;
@@ -28,10 +29,12 @@ import
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.Sch
import
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
import org.apache.shardingsphere.sharding.constant.ShardingOrder;
import
org.apache.shardingsphere.sharding.exception.metadata.InconsistentShardingTableMetaDataException;
+import
org.apache.shardingsphere.sharding.metadata.reviser.ShardingColumnGeneratedReviser;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sharding.rule.TableRule;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedList;
@@ -67,7 +70,7 @@ public final class ShardingSchemaMetaDataDecorator implements
RuleBasedSchemaMet
}
private TableMetaData createTableMetaData(final ShardingRule rule, final
TableRule tableRule, final TableMetaData tableMetaData) {
- Collection<ColumnMetaData> columnMetaDataList =
getColumnMetaDataList(tableMetaData, tableRule);
+ Collection<ColumnMetaData> columnMetaDataList = new
ColumnReviseEngine().revise(tableMetaData.getColumns(),
Collections.singleton(new ShardingColumnGeneratedReviser(tableRule)));
Collection<IndexMetaData> indexMetaDataList =
getIndexMetaDataList(tableMetaData, tableRule);
Collection<ConstraintMetaData> constraintMetaDataList =
getConstraintMetaDataList(tableMetaData, rule, tableRule);
return new TableMetaData(tableRule.getLogicTable(),
columnMetaDataList, indexMetaDataList, constraintMetaDataList);
@@ -92,15 +95,6 @@ public final class ShardingSchemaMetaDataDecorator
implements RuleBasedSchemaMet
}
}
- private Collection<ColumnMetaData> getColumnMetaDataList(final
TableMetaData tableMetaData, final TableRule tableRule) {
- Collection<ColumnMetaData> result = new LinkedList<>();
- for (ColumnMetaData each : tableMetaData.getColumns()) {
- boolean generated =
each.getName().equalsIgnoreCase(tableRule.getGenerateKeyColumn().orElse(null));
- result.add(new ColumnMetaData(each.getName(), each.getDataType(),
each.isPrimaryKey(), generated, each.isCaseSensitive(), each.isVisible(),
each.isUnsigned()));
- }
- return result;
- }
-
private Collection<IndexMetaData> getIndexMetaDataList(final TableMetaData
tableMetaData, final TableRule tableRule) {
Collection<IndexMetaData> result = new HashSet<>();
for (IndexMetaData each : tableMetaData.getIndexes()) {
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingColumnGeneratedReviser.java
similarity index 53%
copy from
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
copy to
features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingColumnGeneratedReviser.java
index bcc357319d4..9528bf1aaf3 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/reviser/ShardingColumnGeneratedReviser.java
@@ -15,26 +15,23 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column;
+package org.apache.shardingsphere.sharding.metadata.reviser;
+import lombok.RequiredArgsConstructor;
+import
org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnGeneratedReviser;
import
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ColumnMetaData;
-
-import java.util.Optional;
+import org.apache.shardingsphere.sharding.rule.TableRule;
/**
- * Column name reviser.
+ * Sharding column generated reviser.
*/
-public abstract class ColumnNameReviser implements ColumnReviser {
+@RequiredArgsConstructor
+public final class ShardingColumnGeneratedReviser extends
ColumnGeneratedReviser {
- @Override
- public final Optional<ColumnMetaData> revise(final ColumnMetaData
originalMetaData) {
- return getColumnName(originalMetaData.getName()).map(optional ->
createColumnMetaData(optional, originalMetaData));
- }
+ private final TableRule tableRule;
- private ColumnMetaData createColumnMetaData(final String name, final
ColumnMetaData metaData) {
- return new ColumnMetaData(name, metaData.getDataType(),
- metaData.isPrimaryKey(), metaData.isGenerated(),
metaData.isCaseSensitive(), metaData.isVisible(), metaData.isUnsigned());
+ @Override
+ protected boolean isGenerated(final ColumnMetaData originalMetaData) {
+ return
originalMetaData.getName().equalsIgnoreCase(tableRule.getGenerateKeyColumn().orElse(null));
}
-
- protected abstract Optional<String> getColumnName(String originalName);
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnGeneratedReviser.java
similarity index 66%
copy from
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
copy to
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnGeneratedReviser.java
index bcc357319d4..c2f09c1e588 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnGeneratedReviser.java
@@ -22,19 +22,18 @@ import
org.apache.shardingsphere.infra.metadata.database.schema.loader.model.Col
import java.util.Optional;
/**
- * Column name reviser.
+ * Column generated reviser.
*/
-public abstract class ColumnNameReviser implements ColumnReviser {
+public abstract class ColumnGeneratedReviser implements ColumnReviser {
@Override
public final Optional<ColumnMetaData> revise(final ColumnMetaData
originalMetaData) {
- return getColumnName(originalMetaData.getName()).map(optional ->
createColumnMetaData(optional, originalMetaData));
+ return Optional.of(createColumnMetaData(isGenerated(originalMetaData),
originalMetaData));
}
- private ColumnMetaData createColumnMetaData(final String name, final
ColumnMetaData metaData) {
- return new ColumnMetaData(name, metaData.getDataType(),
- metaData.isPrimaryKey(), metaData.isGenerated(),
metaData.isCaseSensitive(), metaData.isVisible(), metaData.isUnsigned());
+ private ColumnMetaData createColumnMetaData(final boolean isGenerated,
final ColumnMetaData metaData) {
+ return new ColumnMetaData(metaData.getName(), metaData.getDataType(),
metaData.isPrimaryKey(), isGenerated, metaData.isCaseSensitive(),
metaData.isVisible(), metaData.isUnsigned());
}
- protected abstract Optional<String> getColumnName(String originalName);
+ protected abstract boolean isGenerated(ColumnMetaData originalMetaData);
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
index bcc357319d4..8119a930c4c 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
@@ -32,8 +32,7 @@ public abstract class ColumnNameReviser implements
ColumnReviser {
}
private ColumnMetaData createColumnMetaData(final String name, final
ColumnMetaData metaData) {
- return new ColumnMetaData(name, metaData.getDataType(),
- metaData.isPrimaryKey(), metaData.isGenerated(),
metaData.isCaseSensitive(), metaData.isVisible(), metaData.isUnsigned());
+ return new ColumnMetaData(name, metaData.getDataType(),
metaData.isPrimaryKey(), metaData.isGenerated(), metaData.isCaseSensitive(),
metaData.isVisible(), metaData.isUnsigned());
}
protected abstract Optional<String> getColumnName(String originalName);