You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2023/02/05 16:08:28 UTC
[shardingsphere] branch master updated: Add ConstraintReviser and IndexReviser (#24011)
This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 864a036cc75 Add ConstraintReviser and IndexReviser (#24011)
864a036cc75 is described below
commit 864a036cc75d115d5f5d487c078f570cb47ec63f
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Mon Feb 6 00:08:21 2023 +0800
Add ConstraintReviser and IndexReviser (#24011)
* Refactor EncryptSchemaMetaDataDecorator
* Add ConstraintReviser and IndexReviser
---
.../metadata/EncryptSchemaMetaDataDecorator.java | 10 ++++++---
.../metadata/reviser/EncryptColumnNameReviser.java | 2 +-
.../reviser/{ => column}/ColumnNameReviser.java | 2 +-
.../reviser/{ => column}/ColumnReviseEngine.java | 2 +-
.../reviser/{ => column}/ColumnReviser.java | 2 +-
.../ConstraintReviser.java} | 20 ++++++++---------
.../IndexReviser.java} | 20 ++++++++---------
.../metadata/SingleSchemaMetaDataDecorator.java | 8 +++----
.../metadata/reviser/SingleConstraintReviser.java | 26 +++++++++-------------
.../metadata/reviser/SingleIndexReviser.java | 24 +++++++++-----------
10 files changed, 57 insertions(+), 59 deletions(-)
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecorator.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecorator.java
index 4b0d98aa59f..6b4a38bc158 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecorator.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/EncryptSchemaMetaDataDecorator.java
@@ -22,8 +22,8 @@ import org.apache.shardingsphere.encrypt.metadata.reviser.EncryptColumnNameRevis
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.encrypt.rule.EncryptTable;
import org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
-import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.ColumnReviseEngine;
-import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.ColumnReviser;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnReviseEngine;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnReviser;
import org.apache.shardingsphere.infra.metadata.database.schema.decorator.spi.RuleBasedSchemaMetaDataDecorator;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.SchemaMetaData;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
@@ -59,10 +59,14 @@ public final class EncryptSchemaMetaDataDecorator implements RuleBasedSchemaMeta
if (!encryptTable.isPresent()) {
return tableMetaData;
}
- Collection<ColumnReviser> revisers = Collections.singleton(new EncryptColumnNameReviser(encryptTable.get()));
+ Collection<ColumnReviser> revisers = getColumnRevisers(encryptTable.get());
return new TableMetaData(tableName, new ColumnReviseEngine().revise(tableMetaData.getColumns(), revisers), tableMetaData.getIndexes(), tableMetaData.getConstrains());
}
+ private Collection<ColumnReviser> getColumnRevisers(final EncryptTable encryptTable) {
+ return Collections.singleton(new EncryptColumnNameReviser(encryptTable));
+ }
+
@Override
public int getOrder() {
return EncryptOrder.ORDER;
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/EncryptColumnNameReviser.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/EncryptColumnNameReviser.java
index ef64c068e6e..82d6e719075 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/EncryptColumnNameReviser.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/metadata/reviser/EncryptColumnNameReviser.java
@@ -18,7 +18,7 @@
package org.apache.shardingsphere.encrypt.metadata.reviser;
import org.apache.shardingsphere.encrypt.rule.EncryptTable;
-import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.ColumnNameReviser;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column.ColumnNameReviser;
import java.util.Collection;
import java.util.Optional;
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnNameReviser.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
similarity index 98%
copy from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnNameReviser.java
copy to infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
index 4dc6dc68ed7..bcc357319d4 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnNameReviser.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnNameReviser.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser;
+package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ColumnMetaData;
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviseEngine.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnReviseEngine.java
similarity index 98%
rename from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviseEngine.java
rename to infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnReviseEngine.java
index 8c033699969..0f4b7ccbbca 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviseEngine.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnReviseEngine.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser;
+package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ColumnMetaData;
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviser.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnReviser.java
similarity index 97%
copy from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviser.java
copy to infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnReviser.java
index c9cf34c508a..fdde8b4a240 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviser.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/column/ColumnReviser.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser;
+package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.column;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ColumnMetaData;
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviser.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/constraint/ConstraintReviser.java
similarity index 66%
copy from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviser.java
copy to infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/constraint/ConstraintReviser.java
index c9cf34c508a..db76ee6ae67 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviser.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/constraint/ConstraintReviser.java
@@ -15,22 +15,22 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser;
+package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.constraint;
-import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ColumnMetaData;
-
-import java.util.Optional;
+import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ConstraintMetaData;
+import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
/**
- * Column reviser.
+ * Constraint reviser.
*/
-public interface ColumnReviser {
+public interface ConstraintReviser {
/**
- * Revise column meta data.
+ * Revise constraint meta data.
*
- * @param originalMetaData original column meta data
- * @return revised column meta data
+ * @param tableMetaData table meta data
+ * @param originalMetaData original constraint meta data
+ * @return revised constraint meta data
*/
- Optional<ColumnMetaData> revise(ColumnMetaData originalMetaData);
+ ConstraintMetaData revise(TableMetaData tableMetaData, ConstraintMetaData originalMetaData);
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviser.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/index/IndexReviser.java
similarity index 68%
copy from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviser.java
copy to infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/index/IndexReviser.java
index c9cf34c508a..357318109aa 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviser.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/index/IndexReviser.java
@@ -15,22 +15,22 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser;
+package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index;
-import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ColumnMetaData;
-
-import java.util.Optional;
+import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.IndexMetaData;
+import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
/**
- * Column reviser.
+ * Index reviser.
*/
-public interface ColumnReviser {
+public interface IndexReviser {
/**
- * Revise column meta data.
+ * Revise index meta data.
*
- * @param originalMetaData original column meta data
- * @return revised column meta data
+ * @param tableMetaData table meta data
+ * @param originalMetaData original index meta data
+ * @return revised index meta data
*/
- Optional<ColumnMetaData> revise(ColumnMetaData originalMetaData);
+ IndexMetaData revise(TableMetaData tableMetaData, IndexMetaData originalMetaData);
}
diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/SingleSchemaMetaDataDecorator.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/SingleSchemaMetaDataDecorator.java
index e7e45316860..f10fc75099a 100644
--- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/SingleSchemaMetaDataDecorator.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/SingleSchemaMetaDataDecorator.java
@@ -23,8 +23,9 @@ import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.Con
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.IndexMetaData;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.SchemaMetaData;
import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
-import org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtil;
import org.apache.shardingsphere.single.constant.SingleOrder;
+import org.apache.shardingsphere.single.metadata.reviser.SingleConstraintReviser;
+import org.apache.shardingsphere.single.metadata.reviser.SingleIndexReviser;
import org.apache.shardingsphere.single.rule.SingleRule;
import java.util.Collection;
@@ -57,12 +58,11 @@ public final class SingleSchemaMetaDataDecorator implements RuleBasedSchemaMetaD
}
private Collection<IndexMetaData> getIndex(final TableMetaData tableMetaData) {
- return tableMetaData.getIndexes().stream().map(each -> new IndexMetaData(IndexMetaDataUtil.getLogicIndexName(each.getName(), tableMetaData.getName()))).collect(Collectors.toList());
+ return tableMetaData.getIndexes().stream().map(each -> new SingleIndexReviser().revise(tableMetaData, each)).collect(Collectors.toList());
}
private Collection<ConstraintMetaData> getConstraint(final TableMetaData tableMetaData) {
- return tableMetaData.getConstrains().stream().map(each -> new ConstraintMetaData(
- IndexMetaDataUtil.getLogicIndexName(each.getName(), tableMetaData.getName()), each.getReferencedTableName())).collect(Collectors.toList());
+ return tableMetaData.getConstrains().stream().map(each -> new SingleConstraintReviser().revise(tableMetaData, each)).collect(Collectors.toList());
}
@Override
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnNameReviser.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleConstraintReviser.java
similarity index 51%
rename from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnNameReviser.java
rename to kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleConstraintReviser.java
index 4dc6dc68ed7..503fa6e9569 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnNameReviser.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleConstraintReviser.java
@@ -15,26 +15,22 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser;
+package org.apache.shardingsphere.single.metadata.reviser;
-import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ColumnMetaData;
-
-import java.util.Optional;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.constraint.ConstraintReviser;
+import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ConstraintMetaData;
+import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
+import org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtil;
/**
- * Column name reviser.
+ * Single constraint reviser.
*/
-public abstract class ColumnNameReviser implements ColumnReviser {
+public final class SingleConstraintReviser implements ConstraintReviser {
@Override
- public final Optional<ColumnMetaData> revise(final ColumnMetaData originalMetaData) {
- return getColumnName(originalMetaData.getName()).map(optional -> createColumnMetaData(optional, 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());
+ public ConstraintMetaData revise(final TableMetaData tableMetaData, final ConstraintMetaData originalMetaData) {
+ return new ConstraintMetaData(
+ IndexMetaDataUtil.getLogicIndexName(originalMetaData.getName(), tableMetaData.getName()), originalMetaData.getReferencedTableName());
+
}
-
- protected abstract Optional<String> getColumnName(String originalName);
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviser.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleIndexReviser.java
similarity index 55%
rename from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviser.java
rename to kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleIndexReviser.java
index c9cf34c508a..c3f4c1c89c2 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/decorator/reviser/ColumnReviser.java
+++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/metadata/reviser/SingleIndexReviser.java
@@ -15,22 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser;
+package org.apache.shardingsphere.single.metadata.reviser;
-import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.ColumnMetaData;
-
-import java.util.Optional;
+import org.apache.shardingsphere.infra.metadata.database.schema.decorator.reviser.index.IndexReviser;
+import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.IndexMetaData;
+import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
+import org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtil;
/**
- * Column reviser.
+ * Single index reviser.
*/
-public interface ColumnReviser {
+public final class SingleIndexReviser implements IndexReviser {
- /**
- * Revise column meta data.
- *
- * @param originalMetaData original column meta data
- * @return revised column meta data
- */
- Optional<ColumnMetaData> revise(ColumnMetaData originalMetaData);
+ @Override
+ public IndexMetaData revise(final TableMetaData tableMetaData, final IndexMetaData originalMetaData) {
+ return new IndexMetaData(IndexMetaDataUtil.getLogicIndexName(originalMetaData.getName(), tableMetaData.getName()));
+ }
}