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()));
+    }
 }