This is an automated email from the ASF dual-hosted git repository.

chengzhang 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 1006ba49470 Fix alter view exception when config sharding rule and 
binding table rule (#32700)
1006ba49470 is described below

commit 1006ba494702873ead9ff7af3655059613ac834d
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Tue Aug 27 18:05:22 2024 +0800

    Fix alter view exception when config sharding rule and binding table rule 
(#32700)
    
    * Fix alter view exception when config sharding rule and binding table rule
    
    * update e2e test
    
    * fix dal e2e test
    
    * remove useless static modifier
    
    * fix unit test
    
    * fix ral e2e
    
    * Update e2e config
    
    * Update e2e config
---
 .../dal/show/ShowCreateTableMergedResult.java      | 23 ++++++++++++++++++++++
 .../ddl/ShardingDDLStatementValidator.java         | 19 ++++++++++++++++++
 .../impl/ShardingAlterViewStatementValidator.java  | 19 +++++++++++-------
 .../impl/ShardingCreateViewStatementValidator.java | 23 +++-------------------
 .../ShardingAlterViewStatementValidatorTest.java   | 14 +++++++------
 .../db/mysql/show_create_table_with_view.xml}      | 10 +++++-----
 .../tbl/mysql/show_create_table_with_view.xml}     | 10 +++++-----
 .../src/test/resources/cases/dal/e2e-dal-show.xml  |  5 +++++
 .../dataset/db/alter_view_with_sharding_table.xml} | 13 ++++++------
 .../db/create_view_with_sharding_table.xml}        | 13 ++++++------
 .../db/drop_view_with_sharding_table.xml}          |  7 +++----
 .../tbl/alter_view_with_sharding_table.xml}        | 13 ++++++------
 .../tbl/create_view_with_sharding_table.xml}       | 13 ++++++------
 .../tbl/drop_view_with_sharding_table.xml}         |  7 +++----
 ...aterialized-view.xml => e2e-ddl-alter-view.xml} |  7 ++++++-
 ...terialized-view.xml => e2e-ddl-create-view.xml} |  7 ++++++-
 ...materialized-view.xml => e2e-ddl-drop-view.xml} |  6 +++++-
 .../db/select_sharding_table_statistics.xml        | 10 ++++++++++
 .../cases/rql/dataset/db/count_sharding_rule.xml   |  2 +-
 .../db/show_sharding_binging_table_rules.xml       |  2 +-
 .../dataset/db/show_sharding_table_algorithms.xml  |  1 +
 .../rql/dataset/db/show_sharding_table_nodes.xml   |  1 +
 .../rql/dataset/db/show_sharding_table_rules.xml   |  1 +
 .../cases/rql/dataset/tbl/count_sharding_rule.xml  |  2 +-
 .../tbl/show_sharding_binging_table_rules.xml      |  2 +-
 .../dataset/tbl/show_sharding_table_algorithms.xml |  1 +
 .../rql/dataset/tbl/show_sharding_table_nodes.xml  |  1 +
 .../rql/dataset/tbl/show_sharding_table_rules.xml  |  1 +
 .../env/scenario/db/jdbc/conf/mysql/rules.yaml     |  8 +++++++-
 .../env/scenario/db/jdbc/conf/opengauss/rules.yaml |  8 +++++++-
 .../scenario/db/jdbc/conf/postgresql/rules.yaml    |  8 +++++++-
 .../scenario/db/proxy/conf/mysql/database-db.yaml  |  8 +++++++-
 .../db/proxy/conf/opengauss/database-db.yaml       |  8 +++++++-
 .../db/proxy/conf/postgresql/database-db.yaml      |  8 +++++++-
 .../env/scenario/tbl/jdbc/conf/mysql/rules.yaml    |  8 +++++++-
 .../scenario/tbl/jdbc/conf/opengauss/rules.yaml    |  8 +++++++-
 .../scenario/tbl/jdbc/conf/postgresql/rules.yaml   |  8 +++++++-
 .../tbl/proxy/conf/mysql/database-tbl.yaml         |  8 +++++++-
 .../tbl/proxy/conf/opengauss/database-tbl.yaml     |  8 +++++++-
 .../tbl/proxy/conf/postgresql/database-tbl.yaml    |  8 +++++++-
 40 files changed, 235 insertions(+), 94 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 ebf27fa5c39..e7d8250644b 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
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.sharding.merge.dal.show;
 
+import com.cedarsoftware.util.CaseInsensitiveMap;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.datanode.DataNode;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
@@ -26,12 +27,17 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
 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;
+import org.apache.shardingsphere.sharding.rule.BindingTableRule;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 import org.apache.shardingsphere.sharding.rule.ShardingTable;
 
 import java.sql.SQLException;
+import java.util.Collection;
 import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * Merged result for show create table.
@@ -47,6 +53,7 @@ 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));
+        setViewCellValue(memoryResultSetRow, logicTableName, actualTableName, 
shardingRule);
         for (ShardingSphereIndex each : table.getIndexValues()) {
             String actualIndexName = 
IndexMetaDataUtils.getActualIndexName(each.getName(), actualTableName);
             memoryResultSetRow.setCell(2, 
memoryResultSetRow.getCell(2).toString().replace(actualIndexName, 
each.getName()));
@@ -63,4 +70,20 @@ public final class ShowCreateTableMergedResult extends 
LogicTablesMergedResult {
             }
         }
     }
+    
+    private void setViewCellValue(final MemoryQueryResultRow 
memoryResultSetRow, final String logicTableName, final String actualTableName, 
final ShardingRule shardingRule) {
+        Optional<ShardingTable> shardingTable = 
shardingRule.findShardingTable(logicTableName);
+        Optional<BindingTableRule> bindingTableRule = 
shardingRule.findBindingTableRule(logicTableName);
+        if (shardingTable.isPresent() && bindingTableRule.isPresent()) {
+            Collection<DataNode> actualDataNodes = 
shardingTable.get().getActualDataNodes().stream().filter(each -> 
each.getTableName().equalsIgnoreCase(actualTableName)).collect(Collectors.toList());
+            Map<String, String> logicAndActualTablesFromBindingTables = new 
CaseInsensitiveMap<>();
+            for (DataNode each : actualDataNodes) {
+                logicAndActualTablesFromBindingTables
+                        
.putAll(shardingRule.getLogicAndActualTablesFromBindingTable(each.getDataSourceName(),
 logicTableName, actualTableName, bindingTableRule.get().getAllLogicTables()));
+            }
+            for (Entry<String, String> entry : 
logicAndActualTablesFromBindingTables.entrySet()) {
+                memoryResultSetRow.setCell(2, 
memoryResultSetRow.getCell(2).toString().replaceFirst(entry.getValue(), 
entry.getKey()));
+            }
+        }
+    }
 }
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 5ebc2ea4d13..38c29db6b0a 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
@@ -27,6 +27,7 @@ import org.apache.shardingsphere.sharding.rule.ShardingRule;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 
+import java.util.Arrays;
 import java.util.Collection;
 
 /**
@@ -105,4 +106,22 @@ public abstract class ShardingDDLStatementValidator 
implements ShardingStatement
     protected boolean isSchemaContainsIndex(final ShardingSphereSchema schema, 
final IndexSegment index) {
         return schema.getAllTableNames().stream().anyMatch(each -> 
schema.getTable(each).containsIndex(index.getIndexName().getIdentifier().getValue()));
     }
+    
+    /**
+     * Judge whether sharding tables not binding with view.
+     *
+     * @param tableSegments table segments
+     * @param shardingRule sharding rule
+     * @param viewName view name
+     * @return sharding tables not binding with view or not
+     */
+    protected boolean isShardingTablesNotBindingWithView(final 
Collection<SimpleTableSegment> tableSegments, final ShardingRule shardingRule, 
final String viewName) {
+        for (SimpleTableSegment each : tableSegments) {
+            String logicTable = each.getTableName().getIdentifier().getValue();
+            if (shardingRule.isShardingTable(logicTable) && 
!shardingRule.isAllBindingTables(Arrays.asList(viewName, logicTable))) {
+                return true;
+            }
+        }
+        return false;
+    }
 }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterViewStatementValidator.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterViewStatementValidator.java
index f49bc6c6d35..58393a9b82a 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterViewStatementValidator.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterViewStatementValidator.java
@@ -23,13 +23,14 @@ import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePrecondition
 import org.apache.shardingsphere.infra.hint.HintValueContext;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.route.context.RouteContext;
+import 
org.apache.shardingsphere.sharding.exception.metadata.EngagedViewException;
 import 
org.apache.shardingsphere.sharding.exception.syntax.RenamedViewWithoutSameConfigurationException;
 import 
org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
-import org.apache.shardingsphere.sql.parser.statement.core.util.TableExtractor;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterViewStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.dml.SelectStatement;
+import org.apache.shardingsphere.sql.parser.statement.core.util.TableExtractor;
 
 import java.util.Arrays;
 import java.util.List;
@@ -45,19 +46,23 @@ public final class ShardingAlterViewStatementValidator 
extends ShardingDDLStatem
                             final List<Object> params, final 
ShardingSphereDatabase database, final ConfigurationProperties props) {
         AlterViewStatement alterViewStatement = (AlterViewStatement) 
sqlStatementContext.getSqlStatement();
         Optional<SelectStatement> selectStatement = 
alterViewStatement.getSelectStatement();
-        if (selectStatement.isPresent()) {
-            TableExtractor extractor = new TableExtractor();
-            extractor.extractTablesFromSelect(selectStatement.get());
-            validateShardingTable(shardingRule, "ALTER VIEW", 
extractor.getRewriteTables());
-        }
+        String originView = 
alterViewStatement.getView().getTableName().getIdentifier().getValue();
+        selectStatement.ifPresent(optional -> 
validateAlterViewShardingTables(shardingRule, optional, originView));
         Optional<SimpleTableSegment> renamedView = 
alterViewStatement.getRenameView();
         if (renamedView.isPresent()) {
             String targetView = 
renamedView.get().getTableName().getIdentifier().getValue();
-            String originView = 
alterViewStatement.getView().getTableName().getIdentifier().getValue();
             validateBroadcastShardingView(shardingRule, originView, 
targetView);
         }
     }
     
+    private void validateAlterViewShardingTables(final ShardingRule 
shardingRule, final SelectStatement selectStatement, final String viewName) {
+        TableExtractor extractor = new TableExtractor();
+        extractor.extractTablesFromSelect(selectStatement);
+        if (isShardingTablesNotBindingWithView(extractor.getRewriteTables(), 
shardingRule, viewName)) {
+            throw new EngagedViewException("sharding");
+        }
+    }
+    
     private void validateBroadcastShardingView(final ShardingRule 
shardingRule, final String originView, final String targetView) {
         
ShardingSpherePreconditions.checkState(!shardingRule.isShardingTable(originView)
 && !shardingRule.isShardingTable(targetView)
                 || shardingRule.isAllBindingTables(Arrays.asList(originView, 
targetView)), () -> new 
RenamedViewWithoutSameConfigurationException(originView, targetView));
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateViewStatementValidator.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateViewStatementValidator.java
index 3a6d4e4a730..b2a3bfc7dbc 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateViewStatementValidator.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingCreateViewStatementValidator.java
@@ -27,14 +27,13 @@ import 
org.apache.shardingsphere.sharding.exception.metadata.EngagedViewExceptio
 import 
org.apache.shardingsphere.sharding.exception.syntax.UnsupportedCreateViewException;
 import 
org.apache.shardingsphere.sharding.route.engine.validator.ddl.ShardingDDLStatementValidator;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
-import org.apache.shardingsphere.sql.parser.statement.core.util.TableExtractor;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.AggregationProjectionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ProjectionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateViewStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.dml.SelectStatement;
+import org.apache.shardingsphere.sql.parser.statement.core.util.TableExtractor;
 
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 
@@ -50,7 +49,8 @@ public final class ShardingCreateViewStatementValidator 
extends ShardingDDLState
         TableExtractor extractor = new TableExtractor();
         extractor.extractTablesFromSelect(((CreateViewStatement) 
sqlStatementContext.getSqlStatement()).getSelect());
         Collection<SimpleTableSegment> tableSegments = 
extractor.getRewriteTables();
-        if (isShardingTablesWithoutBinding(shardingRule, sqlStatementContext, 
tableSegments)) {
+        String viewName = ((CreateViewStatement) 
sqlStatementContext.getSqlStatement()).getView().getTableName().getIdentifier().getValue();
+        if (isShardingTablesNotBindingWithView(tableSegments, shardingRule, 
viewName)) {
             throw new EngagedViewException("sharding");
         }
     }
@@ -64,23 +64,6 @@ public final class ShardingCreateViewStatementValidator 
extends ShardingDDLState
         }
     }
     
-    private boolean isShardingTablesWithoutBinding(final ShardingRule 
shardingRule, final SQLStatementContext sqlStatementContext,
-                                                   final 
Collection<SimpleTableSegment> tableSegments) {
-        for (SimpleTableSegment each : tableSegments) {
-            String logicTable = each.getTableName().getIdentifier().getValue();
-            if (shardingRule.isShardingTable(logicTable) && !isBindingTables(
-                    shardingRule, ((CreateViewStatement) 
sqlStatementContext.getSqlStatement()).getView().getTableName().getIdentifier().getValue(),
 logicTable)) {
-                return true;
-            }
-        }
-        return false;
-    }
-    
-    private boolean isBindingTables(final ShardingRule shardingRule, final 
String logicViewName, final String logicTable) {
-        Collection<String> bindTables = Arrays.asList(logicTable, 
logicViewName);
-        return shardingRule.isAllBindingTables(bindTables);
-    }
-    
     private boolean isContainsNotSupportedViewStatement(final SelectStatement 
selectStatement, final RouteContext routeContext) {
         if (routeContext.getRouteUnits().size() <= 1) {
             return false;
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterViewStatementValidatorTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterViewStatementValidatorTest.java
index 71e96415642..fea488fdbdb 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterViewStatementValidatorTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterViewStatementValidatorTest.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.infra.binder.context.statement.ddl.AlterViewSta
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import 
org.apache.shardingsphere.sharding.exception.syntax.UnsupportedShardingOperationException;
+import 
org.apache.shardingsphere.sharding.exception.metadata.EngagedViewException;
 import 
org.apache.shardingsphere.sharding.route.engine.validator.ddl.impl.ShardingAlterViewStatementValidator;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
@@ -54,6 +54,7 @@ class ShardingAlterViewStatementValidatorTest {
         MySQLSelectStatement selectStatement = new MySQLSelectStatement();
         selectStatement.setFrom(new SimpleTableSegment(new TableNameSegment(0, 
0, new IdentifierValue("t_order"))));
         MySQLAlterViewStatement sqlStatement = new MySQLAlterViewStatement();
+        sqlStatement.setView(new SimpleTableSegment(new TableNameSegment(0, 0, 
new IdentifierValue("t_order_view"))));
         sqlStatement.setSelect(selectStatement);
         SQLStatementContext sqlStatementContext = new 
AlterViewStatementContext(sqlStatement, DefaultDatabase.LOGIC_NAME);
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
@@ -66,20 +67,21 @@ class ShardingAlterViewStatementValidatorTest {
         MySQLSelectStatement selectStatement = new MySQLSelectStatement();
         selectStatement.setFrom(new SimpleTableSegment(new TableNameSegment(0, 
0, new IdentifierValue("t_order"))));
         MySQLAlterViewStatement sqlStatement = new MySQLAlterViewStatement();
+        sqlStatement.setView(new SimpleTableSegment(new TableNameSegment(0, 0, 
new IdentifierValue("t_order_view"))));
         sqlStatement.setSelect(selectStatement);
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
         SQLStatementContext sqlStatementContext = new 
AlterViewStatementContext(sqlStatement, DefaultDatabase.LOGIC_NAME);
         when(shardingRule.isShardingTable("t_order")).thenReturn(true);
-        assertThrows(UnsupportedShardingOperationException.class,
+        assertThrows(EngagedViewException.class,
                 () -> new 
ShardingAlterViewStatementValidator().preValidate(shardingRule, 
sqlStatementContext, Collections.emptyList(), database, 
mock(ConfigurationProperties.class)));
     }
     
     @Test
     void assertPreValidateAlterRenamedView() {
-        OpenGaussAlterViewStatement selectStatement = new 
OpenGaussAlterViewStatement();
-        selectStatement.setView(new SimpleTableSegment(new TableNameSegment(0, 
0, new IdentifierValue("t_order"))));
-        selectStatement.setRenameView(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_order_new"))));
-        SQLStatementContext sqlStatementContext = new 
AlterViewStatementContext(selectStatement, DefaultDatabase.LOGIC_NAME);
+        OpenGaussAlterViewStatement sqlStatement = new 
OpenGaussAlterViewStatement();
+        sqlStatement.setView(new SimpleTableSegment(new TableNameSegment(0, 0, 
new IdentifierValue("t_order_view"))));
+        sqlStatement.setRenameView(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_order_new"))));
+        SQLStatementContext sqlStatementContext = new 
AlterViewStatementContext(sqlStatement, DefaultDatabase.LOGIC_NAME);
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
         assertDoesNotThrow(() -> new 
ShardingAlterViewStatementValidator().preValidate(shardingRule, 
sqlStatementContext, Collections.emptyList(), database, 
mock(ConfigurationProperties.class)));
     }
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml 
b/test/e2e/sql/src/test/resources/cases/dal/dataset/db/mysql/show_create_table_with_view.xml
similarity index 58%
copy from 
test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
copy to 
test/e2e/sql/src/test/resources/cases/dal/dataset/db/mysql/show_create_table_with_view.xml
index 04d5267e329..bba40e3d0ed 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/dal/dataset/db/mysql/show_create_table_with_view.xml
@@ -17,10 +17,10 @@
 
 <dataset>
     <metadata>
-        <column name="rule_name" />
-        <column name="database" />
-        <column name="count" />
+        <column name="View" />
+        <column name="Create View" />
+        <column name="character_set_client" />
+        <column name="collation_connection" />
     </metadata>
-    <row values="sharding_table| tbl| 4" />
-    <row values="sharding_table_reference| tbl| 1" />
+    <row values="t_order_sharding_view, CREATE ALGORITHM=UNDEFINED 
DEFINER=`test_user`@`%` SQL SECURITY DEFINER VIEW `t_order_sharding_view` AS 
select `o`.`order_id` AS `order_id`,`o`.`user_id` AS `user_id`,`o`.`status` AS 
`status`,`o`.`merchant_id` AS `merchant_id`,`o`.`remark` AS 
`remark`,`o`.`creation_date` AS `creation_date` from (`t_order` `o` join 
`t_order_item` `i` on((`o`.`order_id` = `i`.`order_id`))), utf8mb4, 
utf8mb4_0900_ai_ci" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml 
b/test/e2e/sql/src/test/resources/cases/dal/dataset/tbl/mysql/show_create_table_with_view.xml
similarity index 58%
copy from 
test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
copy to 
test/e2e/sql/src/test/resources/cases/dal/dataset/tbl/mysql/show_create_table_with_view.xml
index 04d5267e329..bba40e3d0ed 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/dal/dataset/tbl/mysql/show_create_table_with_view.xml
@@ -17,10 +17,10 @@
 
 <dataset>
     <metadata>
-        <column name="rule_name" />
-        <column name="database" />
-        <column name="count" />
+        <column name="View" />
+        <column name="Create View" />
+        <column name="character_set_client" />
+        <column name="collation_connection" />
     </metadata>
-    <row values="sharding_table| tbl| 4" />
-    <row values="sharding_table_reference| tbl| 1" />
+    <row values="t_order_sharding_view, CREATE ALGORITHM=UNDEFINED 
DEFINER=`test_user`@`%` SQL SECURITY DEFINER VIEW `t_order_sharding_view` AS 
select `o`.`order_id` AS `order_id`,`o`.`user_id` AS `user_id`,`o`.`status` AS 
`status`,`o`.`merchant_id` AS `merchant_id`,`o`.`remark` AS 
`remark`,`o`.`creation_date` AS `creation_date` from (`t_order` `o` join 
`t_order_item` `i` on((`o`.`order_id` = `i`.`order_id`))), utf8mb4, 
utf8mb4_0900_ai_ci" />
 </dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/dal/e2e-dal-show.xml 
b/test/e2e/sql/src/test/resources/cases/dal/e2e-dal-show.xml
index 5e3eb50f4b2..7b23e2159c3 100644
--- a/test/e2e/sql/src/test/resources/cases/dal/e2e-dal-show.xml
+++ b/test/e2e/sql/src/test/resources/cases/dal/e2e-dal-show.xml
@@ -20,6 +20,11 @@
     <test-case sql="SHOW DATABASES" db-types="MySQL" 
scenario-types="dbtbl_with_readwrite_splitting,readwrite_splitting,dbtbl_with_readwrite_splitting_and_encrypt,sharding_and_encrypt,encrypt_and_readwrite_splitting"
 adapters="proxy">
         <assertion expected-data-file="show_databases.xml" />
     </test-case>
+    <test-case sql="CREATE VIEW t_order_sharding_view AS SELECT o.* FROM 
t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id" 
db-types="MySQL" scenario-types="db,tbl">
+        <assertion expected-data-file="show_create_table_with_view.xml">
+            <assertion-sql sql="SHOW CREATE TABLE t_order_sharding_view" />
+        </assertion>
+    </test-case>
     <test-case db-types="MySQL" scenario-types="passthrough" adapters="proxy" 
sql="SELECT @@activate_all_roles_on_login, @@admin_address, @@admin_port, 
@@admin_ssl_ca, @@admin_ssl_capath, @@admin_ssl_cert, @@admin_ssl_cipher, 
@@admin_ssl_crl, @@admin_ssl_crlpath, @@admin_ssl_key, 
@@admin_tls_ciphersuites, @@admin_tls_version, @@authentication_policy, 
@@auto_generate_certs, @@auto_increment_increment, @@auto_increment_offset, 
@@autocommit, @@automatic_sp_privileges, @@avoid_temporal_upgra [...]
         <assertion expected-data-file="select_system_variables.xml" />
     </test-case>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml 
b/test/e2e/sql/src/test/resources/cases/ddl/dataset/db/alter_view_with_sharding_table.xml
similarity index 69%
copy from 
test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
copy to 
test/e2e/sql/src/test/resources/cases/ddl/dataset/db/alter_view_with_sharding_table.xml
index 04d5267e329..cbb87728e53 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/ddl/dataset/db/alter_view_with_sharding_table.xml
@@ -16,11 +16,12 @@
   -->
 
 <dataset>
-    <metadata>
-        <column name="rule_name" />
-        <column name="database" />
-        <column name="count" />
+    <metadata table-name="t_order_sharding_view" 
data-nodes="db_${0..9}.t_order_sharding_view">
+        <column name="item_id" type="bigint" />
+        <column name="order_id" type="bigint" />
+        <column name="user_id" type="int" />
+        <column name="product_id" type="int" />
+        <column name="quantity" type="int" />
+        <column name="creation_date" type="date" />
     </metadata>
-    <row values="sharding_table| tbl| 4" />
-    <row values="sharding_table_reference| tbl| 1" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml 
b/test/e2e/sql/src/test/resources/cases/ddl/dataset/db/create_view_with_sharding_table.xml
similarity index 68%
copy from 
test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
copy to 
test/e2e/sql/src/test/resources/cases/ddl/dataset/db/create_view_with_sharding_table.xml
index 04d5267e329..0de0706ef24 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/ddl/dataset/db/create_view_with_sharding_table.xml
@@ -16,11 +16,12 @@
   -->
 
 <dataset>
-    <metadata>
-        <column name="rule_name" />
-        <column name="database" />
-        <column name="count" />
+    <metadata table-name="t_order_sharding_view" 
data-nodes="db_${0..9}.t_order_sharding_view">
+        <column name="order_id" type="bigint" />
+        <column name="user_id" type="int" />
+        <column name="status" type="varchar" />
+        <column name="merchant_id" type="int" />
+        <column name="remark" type="varchar" />
+        <column name="creation_date" type="date" />
     </metadata>
-    <row values="sharding_table| tbl| 4" />
-    <row values="sharding_table_reference| tbl| 1" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
 
b/test/e2e/sql/src/test/resources/cases/ddl/dataset/db/drop_view_with_sharding_table.xml
similarity index 82%
copy from 
test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
copy to 
test/e2e/sql/src/test/resources/cases/ddl/dataset/db/drop_view_with_sharding_table.xml
index 91b803fbb24..b6036e5413f 100644
--- 
a/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/ddl/dataset/db/drop_view_with_sharding_table.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Licensed to the Apache Software Foundation (ASF) under one or more
   ~ contributor license agreements.  See the NOTICE file distributed with
@@ -16,6 +15,6 @@
   ~ limitations under the License.
   -->
 
-<e2e-test-cases>
-    <test-case sql="REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_boxmv" 
db-types="PostgreSQL" />
-</e2e-test-cases>
+<dataset>
+    <metadata table-name="t_order_sharding_view" 
data-nodes="db_${0..9}.t_order_sharding_view" />
+</dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml 
b/test/e2e/sql/src/test/resources/cases/ddl/dataset/tbl/alter_view_with_sharding_table.xml
similarity index 69%
copy from 
test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
copy to 
test/e2e/sql/src/test/resources/cases/ddl/dataset/tbl/alter_view_with_sharding_table.xml
index 04d5267e329..ac08236b116 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/ddl/dataset/tbl/alter_view_with_sharding_table.xml
@@ -16,11 +16,12 @@
   -->
 
 <dataset>
-    <metadata>
-        <column name="rule_name" />
-        <column name="database" />
-        <column name="count" />
+    <metadata table-name="t_order_sharding_view" 
data-nodes="tbl.t_order_sharding_view_${0..9}">
+        <column name="item_id" type="bigint" />
+        <column name="order_id" type="bigint" />
+        <column name="user_id" type="int" />
+        <column name="product_id" type="int" />
+        <column name="quantity" type="int" />
+        <column name="creation_date" type="date" />
     </metadata>
-    <row values="sharding_table| tbl| 4" />
-    <row values="sharding_table_reference| tbl| 1" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml 
b/test/e2e/sql/src/test/resources/cases/ddl/dataset/tbl/create_view_with_sharding_table.xml
similarity index 68%
copy from 
test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
copy to 
test/e2e/sql/src/test/resources/cases/ddl/dataset/tbl/create_view_with_sharding_table.xml
index 04d5267e329..d42946214f5 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/ddl/dataset/tbl/create_view_with_sharding_table.xml
@@ -16,11 +16,12 @@
   -->
 
 <dataset>
-    <metadata>
-        <column name="rule_name" />
-        <column name="database" />
-        <column name="count" />
+    <metadata table-name="t_order_sharding_view" 
data-nodes="tbl.t_order_sharding_view_${0..9}">
+        <column name="order_id" type="bigint" />
+        <column name="user_id" type="int" />
+        <column name="status" type="varchar" />
+        <column name="merchant_id" type="int" />
+        <column name="remark" type="varchar" />
+        <column name="creation_date" type="date" />
     </metadata>
-    <row values="sharding_table| tbl| 4" />
-    <row values="sharding_table_reference| tbl| 1" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
 
b/test/e2e/sql/src/test/resources/cases/ddl/dataset/tbl/drop_view_with_sharding_table.xml
similarity index 82%
copy from 
test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
copy to 
test/e2e/sql/src/test/resources/cases/ddl/dataset/tbl/drop_view_with_sharding_table.xml
index 91b803fbb24..4d87e753f25 100644
--- 
a/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/ddl/dataset/tbl/drop_view_with_sharding_table.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Licensed to the Apache Software Foundation (ASF) under one or more
   ~ contributor license agreements.  See the NOTICE file distributed with
@@ -16,6 +15,6 @@
   ~ limitations under the License.
   -->
 
-<e2e-test-cases>
-    <test-case sql="REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_boxmv" 
db-types="PostgreSQL" />
-</e2e-test-cases>
+<dataset>
+    <metadata table-name="t_order_sharding_view" 
data-nodes="tbl.t_order_sharding_view_${0..9}" />
+</dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
 b/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-alter-view.xml
similarity index 62%
copy from 
test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
copy to test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-alter-view.xml
index 91b803fbb24..e5f319feb89 100644
--- 
a/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
+++ b/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-alter-view.xml
@@ -17,5 +17,10 @@
   -->
 
 <e2e-test-cases>
-    <test-case sql="REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_boxmv" 
db-types="PostgreSQL" />
+    <test-case sql="ALTER VIEW t_order_sharding_view AS SELECT i.* FROM 
t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id" 
scenario-types="db,tbl" db-types="MySQL">
+        <assertion expected-data-file="alter_view_with_sharding_table.xml">
+            <initial-sql sql="CREATE VIEW t_order_sharding_view AS SELECT o.* 
FROM t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id" 
affected-table="t_order_sharding_view" />
+            <destroy-sql sql="DROP VIEW t_order_sharding_view" />
+        </assertion>
+    </test-case>
 </e2e-test-cases>
diff --git 
a/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
 b/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-create-view.xml
similarity index 67%
copy from 
test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
copy to test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-create-view.xml
index 91b803fbb24..7530bdfc794 100644
--- 
a/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
+++ b/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-create-view.xml
@@ -17,5 +17,10 @@
   -->
 
 <e2e-test-cases>
-    <test-case sql="REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_boxmv" 
db-types="PostgreSQL" />
+    <test-case sql="CREATE VIEW t_order_sharding_view AS SELECT o.* FROM 
t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id" 
scenario-types="db,tbl" db-types="MySQL">
+        <assertion expected-data-file="create_view_with_sharding_table.xml">
+            <initial-sql affected-table="t_order_sharding_view" />
+            <destroy-sql sql="DROP VIEW t_order_sharding_view" />
+        </assertion>
+    </test-case>
 </e2e-test-cases>
diff --git 
a/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
 b/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-drop-view.xml
similarity index 69%
rename from 
test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
rename to test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-drop-view.xml
index 91b803fbb24..a317fe21ba1 100644
--- 
a/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-refresh-materialized-view.xml
+++ b/test/e2e/sql/src/test/resources/cases/ddl/e2e-ddl-drop-view.xml
@@ -17,5 +17,9 @@
   -->
 
 <e2e-test-cases>
-    <test-case sql="REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_boxmv" 
db-types="PostgreSQL" />
+    <test-case sql="DROP VIEW t_order_sharding_view" scenario-types="db,tbl" 
db-types="MySQL">
+        <assertion expected-data-file="drop_view_with_sharding_table.xml">
+            <initial-sql sql="CREATE VIEW t_order_sharding_view AS SELECT o.* 
FROM t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id" 
affected-table="t_order_sharding_view" />
+        </assertion>
+    </test-case>
 </e2e-test-cases>
diff --git 
a/test/e2e/sql/src/test/resources/cases/dql/dataset/db/select_sharding_table_statistics.xml
 
b/test/e2e/sql/src/test/resources/cases/dql/dataset/db/select_sharding_table_statistics.xml
index 9dac2090b4e..216a3dfad25 100644
--- 
a/test/e2e/sql/src/test/resources/cases/dql/dataset/db/select_sharding_table_statistics.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/dql/dataset/db/select_sharding_table_statistics.xml
@@ -45,6 +45,16 @@
     <row values=" | db |         t_order_item |         ds_7 |         
t_order_item | |     " />
     <row values=" | db |         t_order_item |         ds_8 |         
t_order_item | |     " />
     <row values=" | db |         t_order_item |         ds_9 |         
t_order_item | |     " />
+    <row values=" | db |         t_order_sharding_view |         ds_0 |        
 t_order_sharding_view | |     " />
+    <row values=" | db |         t_order_sharding_view |         ds_1 |        
 t_order_sharding_view | |     " />
+    <row values=" | db |         t_order_sharding_view |         ds_2 |        
 t_order_sharding_view | |     " />
+    <row values=" | db |         t_order_sharding_view |         ds_3 |        
 t_order_sharding_view | |     " />
+    <row values=" | db |         t_order_sharding_view |         ds_4 |        
 t_order_sharding_view | |     " />
+    <row values=" | db |         t_order_sharding_view |         ds_5 |        
 t_order_sharding_view | |     " />
+    <row values=" | db |         t_order_sharding_view |         ds_6 |        
 t_order_sharding_view | |     " />
+    <row values=" | db |         t_order_sharding_view |         ds_7 |        
 t_order_sharding_view | |     " />
+    <row values=" | db |         t_order_sharding_view |         ds_8 |        
 t_order_sharding_view | |     " />
+    <row values=" | db |         t_order_sharding_view |         ds_9 |        
 t_order_sharding_view | |     " />
     <row values=" | db |         t_order_details|         ds_0 |         
t_order_details| |     " />
     <row values=" | db |         t_order_details|         ds_1 |         
t_order_details| |     " />
     <row values=" | db |         t_order_details|         ds_2 |         
t_order_details| |     " />
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/count_sharding_rule.xml 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/count_sharding_rule.xml
index c09d7e70509..30295780d7c 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/count_sharding_rule.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/count_sharding_rule.xml
@@ -21,6 +21,6 @@
         <column name="database" />
         <column name="count" />
     </metadata>
-    <row values="sharding_table| db| 3" />
+    <row values="sharding_table| db| 4" />
     <row values="sharding_table_reference| db| 1" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_binging_table_rules.xml
 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_binging_table_rules.xml
index 70d1e8c6054..74d06fc6e8b 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_binging_table_rules.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_binging_table_rules.xml
@@ -20,5 +20,5 @@
         <column name="name" />
         <column name="sharding_table_reference" />
     </metadata>
-    <row values="ref_0| t_order,t_order_item,t_order_details" />
+    <row values="ref_0| 
t_order,t_order_item,t_order_sharding_view,t_order_details" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_table_algorithms.xml
 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_table_algorithms.xml
index f1f51483c18..0cb6bb9aa32 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_table_algorithms.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_table_algorithms.xml
@@ -22,5 +22,6 @@
     </metadata>
     <row values="table| t_order" />
     <row values="table| t_order_item" />
+    <row values="table| t_order_sharding_view" />
     <row values="table| t_order_details" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_table_nodes.xml
 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_table_nodes.xml
index 16a3a915dc3..bad2dc4dd16 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_table_nodes.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_table_nodes.xml
@@ -22,5 +22,6 @@
     </metadata>
     <row values="t_order| ds_0.t_order, ds_1.t_order, ds_2.t_order, 
ds_3.t_order, ds_4.t_order, ds_5.t_order, ds_6.t_order, ds_7.t_order, 
ds_8.t_order, ds_9.t_order" />
     <row values="t_order_item| ds_0.t_order_item, ds_1.t_order_item, 
ds_2.t_order_item, ds_3.t_order_item, ds_4.t_order_item, ds_5.t_order_item, 
ds_6.t_order_item, ds_7.t_order_item, ds_8.t_order_item, ds_9.t_order_item" />
+    <row values="t_order_sharding_view| ds_0.t_order_sharding_view, 
ds_1.t_order_sharding_view, ds_2.t_order_sharding_view, 
ds_3.t_order_sharding_view, ds_4.t_order_sharding_view, 
ds_5.t_order_sharding_view, ds_6.t_order_sharding_view, 
ds_7.t_order_sharding_view, ds_8.t_order_sharding_view, 
ds_9.t_order_sharding_view" />
     <row values="t_order_details| ds_0.t_order_details, ds_1.t_order_details, 
ds_2.t_order_details, ds_3.t_order_details, ds_4.t_order_details, 
ds_5.t_order_details, ds_6.t_order_details, ds_7.t_order_details, 
ds_8.t_order_details, ds_9.t_order_details" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_table_rules.xml
 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_table_rules.xml
index b1ea8f6ec84..9287a1c4a15 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_table_rules.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/show_sharding_table_rules.xml
@@ -36,5 +36,6 @@
     </metadata>
     <row values="t_order| ds_${0..9}.t_order| | STANDARD| user_id| 
IT.STANDARD.FIXTURE| | | | | | | | | | " />
     <row values="t_order_item| ds_${0..9}.t_order_item| | STANDARD| user_id| 
IT.STANDARD.FIXTURE| | | | | | item_id| IT.AUTO_INCREMENT.FIXTURE| | 
IT.AUDITOR.FIXTURE| true" />
+    <row values="t_order_sharding_view| ds_${0..9}.t_order_sharding_view| | 
STANDARD| user_id| IT.STANDARD.FIXTURE| | | | | | | | | | " />
     <row values="t_order_details| ds_${0..9}.t_order_details| | STANDARD| 
user_id| IT.STANDARD.FIXTURE| | | | | | | | | " />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
index 04d5267e329..3e277ed146c 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/count_sharding_rule.xml
@@ -21,6 +21,6 @@
         <column name="database" />
         <column name="count" />
     </metadata>
-    <row values="sharding_table| tbl| 4" />
+    <row values="sharding_table| tbl| 5" />
     <row values="sharding_table_reference| tbl| 1" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_binging_table_rules.xml
 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_binging_table_rules.xml
index 70d1e8c6054..74d06fc6e8b 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_binging_table_rules.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_binging_table_rules.xml
@@ -20,5 +20,5 @@
         <column name="name" />
         <column name="sharding_table_reference" />
     </metadata>
-    <row values="ref_0| t_order,t_order_item,t_order_details" />
+    <row values="ref_0| 
t_order,t_order_item,t_order_sharding_view,t_order_details" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_table_algorithms.xml
 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_table_algorithms.xml
index f1f51483c18..0cb6bb9aa32 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_table_algorithms.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_table_algorithms.xml
@@ -22,5 +22,6 @@
     </metadata>
     <row values="table| t_order" />
     <row values="table| t_order_item" />
+    <row values="table| t_order_sharding_view" />
     <row values="table| t_order_details" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_table_nodes.xml
 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_table_nodes.xml
index 9f8b509b795..149b80b64f1 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_table_nodes.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_table_nodes.xml
@@ -22,6 +22,7 @@
     </metadata>
     <row values="t_order| tbl.t_order_0, tbl.t_order_1, tbl.t_order_2, 
tbl.t_order_3, tbl.t_order_4, tbl.t_order_5, tbl.t_order_6, tbl.t_order_7, 
tbl.t_order_8, tbl.t_order_9" />
     <row values="t_order_item| tbl.t_order_item_0, tbl.t_order_item_1, 
tbl.t_order_item_2, tbl.t_order_item_3, tbl.t_order_item_4, tbl.t_order_item_5, 
tbl.t_order_item_6, tbl.t_order_item_7, tbl.t_order_item_8, tbl.t_order_item_9" 
/>
+    <row values="t_order_sharding_view| tbl.t_order_sharding_view_0, 
tbl.t_order_sharding_view_1, tbl.t_order_sharding_view_2, 
tbl.t_order_sharding_view_3, tbl.t_order_sharding_view_4, 
tbl.t_order_sharding_view_5, tbl.t_order_sharding_view_6, 
tbl.t_order_sharding_view_7, tbl.t_order_sharding_view_8, 
tbl.t_order_sharding_view_9" />
     <row values="t_order_details| tbl.t_order_details_0, 
tbl.t_order_details_1, tbl.t_order_details_2, tbl.t_order_details_3, 
tbl.t_order_details_4, tbl.t_order_details_5, tbl.t_order_details_6, 
tbl.t_order_details_7, tbl.t_order_details_8, tbl.t_order_details_9" />
     <row values="t_product| tbl.t_product_0, tbl.t_product_1, tbl.t_product_2, 
tbl.t_product_3, tbl.t_product_4, tbl.t_product_5, tbl.t_product_6, 
tbl.t_product_7, tbl.t_product_8, tbl.t_product_9" />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_table_rules.xml
 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_table_rules.xml
index 15983e717ad..1698f034418 100644
--- 
a/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_table_rules.xml
+++ 
b/test/e2e/sql/src/test/resources/cases/rql/dataset/tbl/show_sharding_table_rules.xml
@@ -36,6 +36,7 @@
     </metadata>
     <row values="t_order| tbl.t_order_${0..9}| | | | | | STANDARD| order_id| 
IT.STANDARD.FIXTURE| | | | | | " />
     <row values="t_order_item| tbl.t_order_item_${0..9}| | | | | | STANDARD| 
order_id| IT.STANDARD.FIXTURE| | item_id| IT.AUTO_INCREMENT.FIXTURE| | 
IT.AUDITOR.FIXTURE| true" />
+    <row values="t_order_sharding_view| tbl.t_order_sharding_view_${0..9}| | | 
| | | STANDARD| order_id| IT.STANDARD.FIXTURE| | | | | | " />
     <row values="t_order_details| tbl.t_order_details_${0..9}| | | | | | 
STANDARD| order_id| IT.STANDARD.FIXTURE| | | | | | " />
     <row values="t_product | tbl.t_product_${0..9}| | | | | | HINT| | 
HINT_INLINE| {&quot;algorithm-expression&quot;:&quot;t_product_${value}&quot;}| 
| | | | " />
 </dataset>
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/db/jdbc/conf/mysql/rules.yaml 
b/test/e2e/sql/src/test/resources/env/scenario/db/jdbc/conf/mysql/rules.yaml
index 31bd7683e5b..d47e29cf118 100644
--- a/test/e2e/sql/src/test/resources/env/scenario/db/jdbc/conf/mysql/rules.yaml
+++ b/test/e2e/sql/src/test/resources/env/scenario/db/jdbc/conf/mysql/rules.yaml
@@ -144,6 +144,12 @@ rules:
           auditorNames:
             - auditor_constant
           allowHintDisable: true
+      t_order_sharding_view:
+        actualDataNodes: ds_${0..9}.t_order_sharding_view
+        databaseStrategy:
+          standard:
+            shardingColumn: user_id
+            shardingAlgorithmName: it_standard_fixture
       t_order_details:
         actualDataNodes: ds_${0..9}.t_order_details
         databaseStrategy:
@@ -151,7 +157,7 @@ rules:
             shardingColumn: user_id
             shardingAlgorithmName: it_standard_fixture
     bindingTables:
-      - ref_0:t_order,t_order_item,t_order_details
+      - ref_0:t_order,t_order_item,t_order_sharding_view,t_order_details
     shardingAlgorithms:
       it_standard_fixture:
         type: IT.STANDARD.FIXTURE
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/db/jdbc/conf/opengauss/rules.yaml
 
b/test/e2e/sql/src/test/resources/env/scenario/db/jdbc/conf/opengauss/rules.yaml
index a1b9b0f9130..376eb6438d8 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/db/jdbc/conf/opengauss/rules.yaml
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/db/jdbc/conf/opengauss/rules.yaml
@@ -144,6 +144,12 @@ rules:
           auditorNames:
             - auditor_constant
           allowHintDisable: true
+      t_order_sharding_view:
+        actualDataNodes: ds_${0..9}.t_order_sharding_view
+        databaseStrategy:
+          standard:
+            shardingColumn: user_id
+            shardingAlgorithmName: it_standard_fixture
       t_order_details:
         actualDataNodes: ds_${0..9}.t_order_details
         databaseStrategy:
@@ -151,7 +157,7 @@ rules:
             shardingColumn: user_id
             shardingAlgorithmName: it_standard_fixture
     bindingTables:
-      - ref_0:t_order,t_order_item,t_order_details
+      - ref_0:t_order,t_order_item,t_order_sharding_view,t_order_details
     shardingAlgorithms:
       it_standard_fixture:
         type: IT.STANDARD.FIXTURE
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/db/jdbc/conf/postgresql/rules.yaml
 
b/test/e2e/sql/src/test/resources/env/scenario/db/jdbc/conf/postgresql/rules.yaml
index c12ee616e75..e1bcda22c88 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/db/jdbc/conf/postgresql/rules.yaml
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/db/jdbc/conf/postgresql/rules.yaml
@@ -144,6 +144,12 @@ rules:
           auditorNames:
             - auditor_constant
           allowHintDisable: true
+      t_order_sharding_view:
+        actualDataNodes: ds_${0..9}.t_order_sharding_view
+        databaseStrategy:
+          standard:
+            shardingColumn: user_id
+            shardingAlgorithmName: it_standard_fixture
       t_order_details:
         actualDataNodes: ds_${0..9}.t_order_details
         databaseStrategy:
@@ -151,7 +157,7 @@ rules:
             shardingColumn: user_id
             shardingAlgorithmName: it_standard_fixture
     bindingTables:
-      - ref_0:t_order,t_order_item,t_order_details
+      - ref_0:t_order,t_order_item,t_order_sharding_view,t_order_details
     shardingAlgorithms:
       it_standard_fixture:
         type: IT.STANDARD.FIXTURE
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/mysql/database-db.yaml
 
b/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/mysql/database-db.yaml
index 168704b0dbf..86fbb6952af 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/mysql/database-db.yaml
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/mysql/database-db.yaml
@@ -134,6 +134,12 @@ rules:
         auditorNames:
           - auditor_constant
         allowHintDisable: true
+    t_order_sharding_view:
+      actualDataNodes: ds_${0..9}.t_order_sharding_view
+      databaseStrategy:
+        standard:
+          shardingColumn: user_id
+          shardingAlgorithmName: it_standard_fixture
     t_order_details:
       actualDataNodes: ds_${0..9}.t_order_details
       databaseStrategy:
@@ -141,7 +147,7 @@ rules:
           shardingColumn: user_id
           shardingAlgorithmName: it_standard_fixture
   bindingTables:
-    - ref_0:t_order,t_order_item,t_order_details
+    - ref_0:t_order,t_order_item,t_order_sharding_view,t_order_details
   shardingAlgorithms:
     it_standard_fixture:
       type: IT.STANDARD.FIXTURE
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/opengauss/database-db.yaml
 
b/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/opengauss/database-db.yaml
index 804ee23c6a7..820fdc62ccd 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/opengauss/database-db.yaml
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/opengauss/database-db.yaml
@@ -134,6 +134,12 @@ rules:
         auditorNames:
           - auditor_constant
         allowHintDisable: true
+    t_order_sharding_view:
+      actualDataNodes: ds_${0..9}.t_order_sharding_view
+      databaseStrategy:
+        standard:
+          shardingColumn: user_id
+          shardingAlgorithmName: it_standard_fixture
     t_order_details:
       actualDataNodes: ds_${0..9}.t_order_details
       databaseStrategy:
@@ -141,7 +147,7 @@ rules:
           shardingColumn: user_id
           shardingAlgorithmName: it_standard_fixture
   bindingTables:
-    - ref_0:t_order,t_order_item,t_order_details
+    - ref_0:t_order,t_order_item,t_order_sharding_view,t_order_details
   shardingAlgorithms:
     it_standard_fixture:
       type: IT.STANDARD.FIXTURE
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/postgresql/database-db.yaml
 
b/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/postgresql/database-db.yaml
index 3e6c4fa3f20..3277681a4bf 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/postgresql/database-db.yaml
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/postgresql/database-db.yaml
@@ -134,6 +134,12 @@ rules:
         auditorNames:
           - auditor_constant
         allowHintDisable: true
+    t_order_sharding_view:
+      actualDataNodes: ds_${0..9}.t_order_sharding_view
+      databaseStrategy:
+        standard:
+          shardingColumn: user_id
+          shardingAlgorithmName: it_standard_fixture
     t_order_details:
       actualDataNodes: ds_${0..9}.t_order_details
       databaseStrategy:
@@ -141,7 +147,7 @@ rules:
           shardingColumn: user_id
           shardingAlgorithmName: it_standard_fixture
   bindingTables:
-    - ref_0:t_order,t_order_item,t_order_details
+    - ref_0:t_order,t_order_item,t_order_sharding_view,t_order_details
   shardingAlgorithms:
     it_standard_fixture:
       type: IT.STANDARD.FIXTURE
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/jdbc/conf/mysql/rules.yaml 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/jdbc/conf/mysql/rules.yaml
index a144a2da34e..d3820fd5583 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/jdbc/conf/mysql/rules.yaml
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/jdbc/conf/mysql/rules.yaml
@@ -54,6 +54,12 @@ rules:
           auditorNames:
             - auditor_constant
           allowHintDisable: true
+      t_order_sharding_view:
+        actualDataNodes: tbl.t_order_sharding_view_${0..9}
+        tableStrategy:
+          standard:
+            shardingColumn: order_id
+            shardingAlgorithmName: it_standard_fixture
       t_order_details:
         actualDataNodes: tbl.t_order_details_${0..9}
         tableStrategy:
@@ -66,7 +72,7 @@ rules:
           hint:
             shardingAlgorithmName: t_product_hint_inline
     bindingTables:
-      - ref_0:t_order,t_order_item,t_order_details
+      - ref_0:t_order,t_order_item,t_order_sharding_view,t_order_details
 
     shardingAlgorithms:
       it_standard_fixture:
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/jdbc/conf/opengauss/rules.yaml
 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/jdbc/conf/opengauss/rules.yaml
index b8b9949d4fb..36374fe3337 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/jdbc/conf/opengauss/rules.yaml
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/jdbc/conf/opengauss/rules.yaml
@@ -54,6 +54,12 @@ rules:
           auditorNames:
             - auditor_constant
           allowHintDisable: true
+      t_order_sharding_view:
+        actualDataNodes: tbl.t_order_sharding_view_${0..9}
+        tableStrategy:
+          standard:
+            shardingColumn: order_id
+            shardingAlgorithmName: it_standard_fixture
       t_order_details:
         actualDataNodes: tbl.t_order_details_${0..9}
         tableStrategy:
@@ -66,7 +72,7 @@ rules:
           hint:
             shardingAlgorithmName: t_product_hint_inline
     bindingTables:
-      - ref_0:t_order,t_order_item,t_order_details
+      - ref_0:t_order,t_order_item,t_order_sharding_view,t_order_details
 
     shardingAlgorithms:
       it_standard_fixture:
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/jdbc/conf/postgresql/rules.yaml
 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/jdbc/conf/postgresql/rules.yaml
index 3baca880c5b..22f290a5fdb 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/jdbc/conf/postgresql/rules.yaml
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/jdbc/conf/postgresql/rules.yaml
@@ -54,6 +54,12 @@ rules:
           auditorNames:
             - auditor_constant
           allowHintDisable: true
+      t_order_sharding_view:
+        actualDataNodes: tbl.t_order_sharding_view_${0..9}
+        tableStrategy:
+          standard:
+            shardingColumn: order_id
+            shardingAlgorithmName: it_standard_fixture
       t_order_details:
         actualDataNodes: tbl.t_order_details_${0..9}
         tableStrategy:
@@ -66,7 +72,7 @@ rules:
           hint:
             shardingAlgorithmName: t_product_hint_inline
     bindingTables:
-      - ref_0:t_order,t_order_item,t_order_details
+      - ref_0:t_order,t_order_item,t_order_sharding_view,t_order_details
 
     shardingAlgorithms:
       it_standard_fixture:
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/proxy/conf/mysql/database-tbl.yaml
 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/proxy/conf/mysql/database-tbl.yaml
index 1245c9e851c..a3544197b48 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/proxy/conf/mysql/database-tbl.yaml
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/proxy/conf/mysql/database-tbl.yaml
@@ -53,6 +53,12 @@ rules:
         auditorNames:
           - auditor_constant
         allowHintDisable: true
+    t_order_sharding_view:
+      actualDataNodes: tbl.t_order_sharding_view_${0..9}
+      tableStrategy:
+        standard:
+          shardingColumn: order_id
+          shardingAlgorithmName: it_standard_fixture
     t_order_details:
       actualDataNodes: tbl.t_order_details_${0..9}
       tableStrategy:
@@ -65,7 +71,7 @@ rules:
         hint:
           shardingAlgorithmName: t_product_hint_inline
   bindingTables:
-    - ref_0:t_order,t_order_item,t_order_details
+    - ref_0:t_order,t_order_item,t_order_sharding_view,t_order_details
 
   shardingAlgorithms:
     it_standard_fixture:
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/proxy/conf/opengauss/database-tbl.yaml
 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/proxy/conf/opengauss/database-tbl.yaml
index ef1a910cf6c..2112b4893e8 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/proxy/conf/opengauss/database-tbl.yaml
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/proxy/conf/opengauss/database-tbl.yaml
@@ -53,6 +53,12 @@ rules:
         auditorNames:
           - auditor_constant
         allowHintDisable: true
+    t_order_sharding_view:
+      actualDataNodes: tbl.t_order_sharding_view_${0..9}
+      tableStrategy:
+        standard:
+          shardingColumn: order_id
+          shardingAlgorithmName: it_standard_fixture
     t_order_details:
       actualDataNodes: tbl.t_order_details_${0..9}
       tableStrategy:
@@ -65,7 +71,7 @@ rules:
         hint:
           shardingAlgorithmName: t_product_hint_inline
   bindingTables:
-    - ref_0:t_order,t_order_item,t_order_details
+    - ref_0:t_order,t_order_item,t_order_sharding_view,t_order_details
 
   shardingAlgorithms:
     it_standard_fixture:
diff --git 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/proxy/conf/postgresql/database-tbl.yaml
 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/proxy/conf/postgresql/database-tbl.yaml
index 633fde5fc05..f756a32690d 100644
--- 
a/test/e2e/sql/src/test/resources/env/scenario/tbl/proxy/conf/postgresql/database-tbl.yaml
+++ 
b/test/e2e/sql/src/test/resources/env/scenario/tbl/proxy/conf/postgresql/database-tbl.yaml
@@ -53,6 +53,12 @@ rules:
         auditorNames:
           - auditor_constant
         allowHintDisable: true
+    t_order_sharding_view:
+      actualDataNodes: tbl.t_order_sharding_view_${0..9}
+      tableStrategy:
+        standard:
+          shardingColumn: order_id
+          shardingAlgorithmName: it_standard_fixture
     t_order_details:
       actualDataNodes: tbl.t_order_details_${0..9}
       tableStrategy:
@@ -65,7 +71,7 @@ rules:
         hint:
           shardingAlgorithmName: t_product_hint_inline
   bindingTables:
-    - ref_0:t_order,t_order_item,t_order_details
+    - ref_0:t_order,t_order_item,t_order_sharding_view,t_order_details
 
   shardingAlgorithms:
     it_standard_fixture:

Reply via email to