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| {"algorithm-expression":"t_product_${value}"}|
| | | | " />
</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: