This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 62b0c506f51 Change query optimize rule to Enumerable convention
(#19591)
62b0c506f51 is described below
commit 62b0c506f516071b03f920251286bf0e9407780d
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Jul 27 14:38:02 2022 +0800
Change query optimize rule to Enumerable convention (#19591)
* Change query optimize rule to Enumerable conversion
* optimize unit test
---
.../planner/QueryOptimizePlannerFactory.java | 13 +-
.../optimizer/ShardingSphereOptimizerTest.java | 137 ++++++++++-----------
.../common/constant/DistSQLScriptConstants.java | 28 ++---
.../queryable/ConvertYamlConfigurationHandler.java | 18 +--
.../jaxb/cases/domain/SQLParserTestCases.java | 2 +-
5 files changed, 98 insertions(+), 100 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/planner/QueryOptimizePlannerFactory.java
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/planner/QueryOptimizePlannerFactory.java
index d6a09aade16..ca6680517d9 100644
---
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/planner/QueryOptimizePlannerFactory.java
+++
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/planner/QueryOptimizePlannerFactory.java
@@ -19,11 +19,12 @@ package
org.apache.shardingsphere.infra.federation.optimizer.planner;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
+import org.apache.calcite.adapter.enumerable.EnumerableRules;
import org.apache.calcite.plan.ConventionTraitDef;
import org.apache.calcite.plan.RelOptPlanner;
-import org.apache.calcite.plan.RelOptUtil;
import org.apache.calcite.plan.volcano.VolcanoPlanner;
import org.apache.calcite.rel.RelCollationTraitDef;
+import org.apache.calcite.rel.rules.CoreRules;
/**
* Query optimize planner factory.
@@ -45,6 +46,14 @@ public final class QueryOptimizePlannerFactory {
private static void setUpRules(final RelOptPlanner planner) {
planner.addRelTraitDef(ConventionTraitDef.INSTANCE);
planner.addRelTraitDef(RelCollationTraitDef.INSTANCE);
- RelOptUtil.registerDefaultRules(planner, false, true);
+ planner.addRule(CoreRules.FILTER_TO_CALC);
+ planner.addRule(CoreRules.PROJECT_TO_CALC);
+ planner.addRule(CoreRules.FILTER_INTO_JOIN);
+ planner.addRule(EnumerableRules.ENUMERABLE_CALC_RULE);
+ planner.addRule(EnumerableRules.ENUMERABLE_SORT_RULE);
+ planner.addRule(EnumerableRules.ENUMERABLE_JOIN_RULE);
+ planner.addRule(EnumerableRules.ENUMERABLE_TABLE_SCAN_RULE);
+ planner.addRule(EnumerableRules.ENUMERABLE_AGGREGATE_RULE);
+ planner.addRule(EnumerableRules.ENUMERABLE_FILTER_RULE);
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/test/java/org/apache/shardingsphere/infra/federation/optimizer/ShardingSphereOptimizerTest.java
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/test/java/org/apache/shardingsphere/infra/federation/optimizer/ShardingSphereOptimizerTest.java
index 4eae873b130..7728aa2a11a 100644
---
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/test/java/org/apache/shardingsphere/infra/federation/optimizer/ShardingSphereOptimizerTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/test/java/org/apache/shardingsphere/infra/federation/optimizer/ShardingSphereOptimizerTest.java
@@ -133,17 +133,13 @@ public final class ShardingSphereOptimizerTest {
ShardingSphereSQLParserEngine sqlParserEngine =
sqlParserRule.getSQLParserEngine(DatabaseTypeEngine.getTrunkDatabaseTypeName(new
H2DatabaseType()));
SQLStatement sqlStatement =
sqlParserEngine.parse(SELECT_CROSS_JOIN_CONDITION, false);
String actual = optimizer.optimize(databaseName, schemaName,
sqlStatement).explain();
- String expected =
-
"EnumerableCalc(expr#0..4=[{inputs}],proj#0..1=[{exprs}],user_id1=[$t3])"
- + "EnumerableInterpreter"
- + "
BindableJoin(condition=[=($2,$4)],joinType=[inner])"
- + "
BindableProject(order_id=[$0],user_id=[$1],user_id0=[CAST($1):VARCHAR])"
- + "
BindableTableScan(table=[[federate_jdbc,t_order_federate]],projects=[[0,1]])"
- + " EnumerableBindable"
- + "
EnumerableCalc(expr#0=[{inputs}],expr#1=[CAST($t0):VARCHAR],proj#0..1=[{exprs}])"
- + " EnumerableInterpreter"
- + "
BindableTableScan(table=[[federate_jdbc,t_user_info]],filters=[[=(CAST($0):INTEGER,13)]],projects=[[0]])";
- assertThat(actual.replaceAll("\\s*", ""),
is(expected.replaceAll("\\s*", "")));
+ String expected = "EnumerableCalc(expr#0..4=[{inputs}],
expr#5=[CAST($t3):INTEGER], expr#6=[13], expr#7=[=($t5, $t6)],
proj#0..1=[{exprs}], user_id1=[$t3], $condition=[$t7])\n"
+ + " EnumerableHashJoin(condition=[=($2, $4)],
joinType=[inner])\n"
+ + " EnumerableCalc(expr#0..2=[{inputs}],
expr#3=[CAST($t1):VARCHAR], proj#0..1=[{exprs}], user_id0=[$t3])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_order_federate]])\n"
+ + " EnumerableCalc(expr#0..1=[{inputs}],
expr#2=[CAST($t0):VARCHAR], user_id=[$t0], user_id0=[$t2])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_user_info]])\n";
+ assertThat(actual, is(expected));
}
@Test
@@ -151,10 +147,9 @@ public final class ShardingSphereOptimizerTest {
ShardingSphereSQLParserEngine sqlParserEngine =
sqlParserRule.getSQLParserEngine(DatabaseTypeEngine.getTrunkDatabaseTypeName(new
H2DatabaseType()));
SQLStatement sqlStatement =
sqlParserEngine.parse(SELECT_WHERE_ALL_FIELDS, false);
String actual = optimizer.optimize(databaseName, schemaName,
sqlStatement).explain();
- String expected =
- "EnumerableInterpreter"
- + "
BindableTableScan(table=[[federate_jdbc,t_user_info]],filters=[[=(CAST($0):INTEGER,12)]])";
- assertThat(actual.replaceAll("\\s*", ""),
is(expected.replaceAll("\\s*", "")));
+ String expected = "EnumerableCalc(expr#0..1=[{inputs}],
expr#2=[CAST($t0):INTEGER], expr#3=[12], expr#4=[=($t2, $t3)],
proj#0..1=[{exprs}], $condition=[$t4])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_user_info]])\n";
+ assertThat(actual, is(expected));
}
@Test
@@ -162,10 +157,9 @@ public final class ShardingSphereOptimizerTest {
ShardingSphereSQLParserEngine sqlParserEngine =
sqlParserRule.getSQLParserEngine(DatabaseTypeEngine.getTrunkDatabaseTypeName(new
H2DatabaseType()));
SQLStatement sqlStatement =
sqlParserEngine.parse(SELECT_WHERE_SINGLE_FIELD, false);
String actual = optimizer.optimize(databaseName, schemaName,
sqlStatement).explain();
- String expected =
- "EnumerableInterpreter"
- + "
BindableTableScan(table=[[federate_jdbc,t_user_info]],filters=[[=(CAST($0):INTEGER,12)]],projects=[[0]])";
- assertThat(actual.replaceAll("\\s*", ""),
is(expected.replaceAll("\\s*", "")));
+ String expected = "EnumerableCalc(expr#0..1=[{inputs}],
expr#2=[CAST($t0):INTEGER], expr#3=[12], expr#4=[=($t2, $t3)], user_id=[$t0],
$condition=[$t4])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_user_info]])\n";
+ assertThat(actual, is(expected));
}
@Test
@@ -173,12 +167,12 @@ public final class ShardingSphereOptimizerTest {
ShardingSphereSQLParserEngine sqlParserEngine =
sqlParserRule.getSQLParserEngine(DatabaseTypeEngine.getTrunkDatabaseTypeName(new
H2DatabaseType()));
SQLStatement sqlStatement = sqlParserEngine.parse(SELECT_CROSS_WHERE,
false);
String actual = optimizer.optimize(databaseName, schemaName,
sqlStatement).explain();
- String expected =
- "EnumerableInterpreter"
- +
"BindableJoin(condition=[=(CAST($1):VARCHAR,CAST($2):VARCHAR)],joinType=[inner])"
- + "
BindableTableScan(table=[[federate_jdbc,t_order_federate]],projects=[[0,1]])"
- + "
BindableTableScan(table=[[federate_jdbc,t_user_info]],projects=[[0]])";
- assertThat(actual.replaceAll("\\s*", ""),
is(expected.replaceAll("\\s*", "")));
+ String expected =
"EnumerableNestedLoopJoin(condition=[=(CAST($1):VARCHAR, CAST($2):VARCHAR)],
joinType=[inner])\n"
+ + " EnumerableCalc(expr#0..2=[{inputs}],
proj#0..1=[{exprs}])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_order_federate]])\n"
+ + " EnumerableCalc(expr#0..1=[{inputs}], user_id=[$t0])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_user_info]])\n";
+ assertThat(actual, is(expected));
}
@Test
@@ -186,18 +180,13 @@ public final class ShardingSphereOptimizerTest {
ShardingSphereSQLParserEngine sqlParserEngine =
sqlParserRule.getSQLParserEngine(DatabaseTypeEngine.getTrunkDatabaseTypeName(new
H2DatabaseType()));
SQLStatement sqlStatement = sqlParserEngine.parse(SELECT_CROSS_JOIN,
false);
String actual = optimizer.optimize(databaseName, schemaName,
sqlStatement).explain();
- String expected =
-
"EnumerableCalc(expr#0..4=[{inputs}],proj#0..1=[{exprs}],user_id0=[$t3])"
- +
"EnumerableMergeJoin(condition=[=($2,$4)],joinType=[inner])"
- + " EnumerableSort(sort0=[$2],dir0=[ASC])"
- + " EnumerableInterpreter"
- + "
BindableProject(order_id=[$0],user_id=[$1],user_id0=[CAST($1):VARCHAR])"
- + "
BindableTableScan(table=[[federate_jdbc,t_order_federate]],projects=[[0,1]])"
- + " EnumerableSort(sort0=[$1],dir0=[ASC])"
- + " EnumerableInterpreter"
- + "
BindableProject(user_id=[$0],user_id0=[CAST($0):VARCHAR])"
- + "
BindableTableScan(table=[[federate_jdbc,t_user_info]],projects=[[0]])";
- assertThat(actual.replaceAll("\\s*", ""),
is(expected.replaceAll("\\s*", "")));
+ String expected = "EnumerableCalc(expr#0..4=[{inputs}],
proj#0..1=[{exprs}], user_id0=[$t3])\n"
+ + " EnumerableHashJoin(condition=[=($2, $4)],
joinType=[inner])\n"
+ + " EnumerableCalc(expr#0..2=[{inputs}],
expr#3=[CAST($t1):VARCHAR], proj#0..1=[{exprs}], user_id0=[$t3])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_order_federate]])\n"
+ + " EnumerableCalc(expr#0..1=[{inputs}],
expr#2=[CAST($t0):VARCHAR], user_id=[$t0], user_id0=[$t2])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_user_info]])\n";
+ assertThat(actual, is(expected));
}
@Test
@@ -205,12 +194,12 @@ public final class ShardingSphereOptimizerTest {
ShardingSphereSQLParserEngine sqlParserEngine =
sqlParserRule.getSQLParserEngine(DatabaseTypeEngine.getTrunkDatabaseTypeName(new
H2DatabaseType()));
SQLStatement sqlStatement =
sqlParserEngine.parse(SELECT_CROSS_WHERE_CONDITION, false);
String actual = optimizer.optimize(databaseName, schemaName,
sqlStatement).explain();
- String expected =
- "EnumerableInterpreter"
- + "
BindableJoin(condition=[=(CAST($1):VARCHAR,CAST($2):VARCHAR)],joinType=[inner])"
- + "
BindableTableScan(table=[[federate_jdbc,t_order_federate]],projects=[[0,1]])"
- + "
BindableTableScan(table=[[federate_jdbc,t_user_info]],filters=[[=(CAST($0):INTEGER,13)]],projects=[[0]])";
- assertThat(actual.replaceAll("\\s*", ""),
is(expected.replaceAll("\\s*", "")));
+ String expected =
"EnumerableNestedLoopJoin(condition=[=(CAST($1):VARCHAR, CAST($2):VARCHAR)],
joinType=[inner])\n"
+ + " EnumerableCalc(expr#0..2=[{inputs}],
proj#0..1=[{exprs}])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_order_federate]])\n"
+ + " EnumerableCalc(expr#0..1=[{inputs}],
expr#2=[CAST($t0):INTEGER], expr#3=[13], expr#4=[=($t2, $t3)], user_id=[$t0],
$condition=[$t4])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_user_info]])\n";
+ assertThat(actual, is(expected));
}
@Test
@@ -218,10 +207,9 @@ public final class ShardingSphereOptimizerTest {
ShardingSphereSQLParserEngine sqlParserEngine =
sqlParserRule.getSQLParserEngine(DatabaseTypeEngine.getTrunkDatabaseTypeName(new
H2DatabaseType()));
SQLStatement sqlStatement =
sqlParserEngine.parse(SELECT_SUBQUERY_FROM, false);
String actual = optimizer.optimize(databaseName, schemaName,
sqlStatement).explain();
- String expected =
- "EnumerableInterpreter"
- + "
BindableTableScan(table=[[federate_jdbc,t_user_info]],filters=[[>(CAST($0):INTEGER,1)]])";
- assertThat(actual.replaceAll("\\s*", ""),
is(expected.replaceAll("\\s*", "")));
+ String expected = "EnumerableCalc(expr#0..1=[{inputs}],
expr#2=[CAST($t0):INTEGER], expr#3=[1], expr#4=[>($t2, $t3)],
proj#0..1=[{exprs}], $condition=[$t4])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_user_info]])\n";
+ assertThat(actual, is(expected));
}
@Test
@@ -229,15 +217,14 @@ public final class ShardingSphereOptimizerTest {
ShardingSphereSQLParserEngine sqlParserEngine =
sqlParserRule.getSQLParserEngine(DatabaseTypeEngine.getTrunkDatabaseTypeName(new
H2DatabaseType()));
SQLStatement sqlStatement =
sqlParserEngine.parse(SELECT_SUBQUERY_WHERE_EXIST, false);
String actual = optimizer.optimize(databaseName, schemaName,
sqlStatement).explain();
- String expected =
- "EnumerableInterpreter"
- + "BindableProject(order_id=[$0],user_id=[$1])"
- + "
BindableJoin(condition=[=($2,$3)],joinType=[semi])"
- + "
BindableProject(order_id=[$0],user_id=[$1],user_id0=[CAST($1):VARCHAR])"
- + "
BindableTableScan(table=[[federate_jdbc,t_order_federate]],projects=[[0,1]])"
- + "
BindableProject(user_id0=[CAST($0):VARCHAR],$f0=[true])"
- + "
BindableTableScan(table=[[federate_jdbc,t_user_info]],filters=[[ISNOTNULL(CAST($0):VARCHAR)]],projects=[[0]])";
- assertThat(actual.replaceAll("\\s*", ""),
is(expected.replaceAll("\\s*", "")));
+ String expected = "EnumerableCalc(expr#0..4=[{inputs}], expr#5=[IS NOT
NULL($t4)], proj#0..1=[{exprs}], $condition=[$t5])\n"
+ + " EnumerableHashJoin(condition=[=($2, $3)],
joinType=[left])\n"
+ + " EnumerableCalc(expr#0..2=[{inputs}],
expr#3=[CAST($t1):VARCHAR], proj#0..1=[{exprs}], user_id0=[$t3])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_order_federate]])\n"
+ + " EnumerableAggregate(group=[{0}], agg#0=[MIN($1)])\n"
+ + " EnumerableCalc(expr#0..1=[{inputs}],
expr#2=[CAST($t0):VARCHAR], expr#3=[true], expr#4=[IS NOT NULL($t2)],
user_id0=[$t2], $f0=[$t3], $condition=[$t4])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_user_info]])\n";
+ assertThat(actual, is(expected));
}
@Test
@@ -245,12 +232,14 @@ public final class ShardingSphereOptimizerTest {
ShardingSphereSQLParserEngine sqlParserEngine =
sqlParserRule.getSQLParserEngine(DatabaseTypeEngine.getTrunkDatabaseTypeName(new
H2DatabaseType()));
SQLStatement sqlStatement =
sqlParserEngine.parse(SELECT_SUBQUERY_WHERE_IN, false);
String actual = optimizer.optimize(databaseName, schemaName,
sqlStatement).explain();
- String expected =
- "EnumerableInterpreter"
- + " BindableJoin(condition=[=($1,$2)],joinType=[semi])"
- + "
BindableTableScan(table=[[federate_jdbc,t_order_federate]],projects=[[0,1]])"
- + "
BindableTableScan(table=[[federate_jdbc,t_user_info]],projects=[[0]])";
- assertThat(actual.replaceAll("\\s*", ""),
is(expected.replaceAll("\\s*", "")));
+ String expected = "EnumerableCalc(expr#0..2=[{inputs}],
proj#0..1=[{exprs}])\n"
+ + " EnumerableHashJoin(condition=[=($1, $2)],
joinType=[inner])\n"
+ + " EnumerableCalc(expr#0..2=[{inputs}],
proj#0..1=[{exprs}])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_order_federate]])\n"
+ + " EnumerableAggregate(group=[{0}])\n"
+ + " EnumerableCalc(expr#0..1=[{inputs}], user_id=[$t0])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_user_info]])\n";
+ assertThat(actual, is(expected));
}
@Test
@@ -258,17 +247,17 @@ public final class ShardingSphereOptimizerTest {
ShardingSphereSQLParserEngine sqlParserEngine =
sqlParserRule.getSQLParserEngine(DatabaseTypeEngine.getTrunkDatabaseTypeName(new
H2DatabaseType()));
SQLStatement sqlStatement =
sqlParserEngine.parse(SELECT_SUBQUERY_WHERE_BETWEEN, false);
String actual = optimizer.optimize(databaseName, schemaName,
sqlStatement).explain();
- String expected =
- "EnumerableCalc(expr#0..3=[{inputs}],proj#0..1=[{exprs}])"
- + "EnumerableInterpreter"
- + "
BindableFilter(condition=[AND(>=($1,$2),<=($1,$3))])"
- + " BindableJoin(condition=[true],joinType=[left])"
- + "
BindableJoin(condition=[true],joinType=[left])"
- + "
BindableTableScan(table=[[federate_jdbc,t_order_federate]],projects=[[0,1]])"
- + "
BindableAggregate(group=[{}],agg#0=[SINGLE_VALUE($0)])"
- + "
BindableTableScan(table=[[federate_jdbc,t_user_info]],filters=[[=(CAST($1):VARCHAR,'before')]],projects=[[0]])"
- + "
BindableAggregate(group=[{}],agg#0=[SINGLE_VALUE($0)])"
- + "
BindableTableScan(table=[[federate_jdbc,t_user_info]],filters=[[=(CAST($1):VARCHAR,'after')]],projects=[[0]])";
- assertThat(actual.replaceAll("\\s*", ""),
is(expected.replaceAll("\\s*", "")));
+ String expected = "EnumerableCalc(expr#0..3=[{inputs}],
proj#0..1=[{exprs}])\n"
+ + " EnumerableNestedLoopJoin(condition=[<=($1, $3)],
joinType=[inner])\n"
+ + " EnumerableNestedLoopJoin(condition=[>=($1, $2)],
joinType=[inner])\n"
+ + " EnumerableCalc(expr#0..2=[{inputs}],
proj#0..1=[{exprs}])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_order_federate]])\n"
+ + " EnumerableAggregate(group=[{}],
agg#0=[SINGLE_VALUE($0)])\n"
+ + " EnumerableCalc(expr#0..1=[{inputs}],
expr#2=[CAST($t1):VARCHAR], expr#3=['before':VARCHAR], expr#4=[=($t2, $t3)],
user_id=[$t0], $condition=[$t4])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_user_info]])\n"
+ + " EnumerableAggregate(group=[{}],
agg#0=[SINGLE_VALUE($0)])\n"
+ + " EnumerableCalc(expr#0..1=[{inputs}],
expr#2=[CAST($t1):VARCHAR], expr#3=['after':VARCHAR], expr#4=[=($t2, $t3)],
user_id=[$t0], $condition=[$t4])\n"
+ + " EnumerableTableScan(table=[[federate_jdbc,
t_user_info]])\n";
+ assertThat(actual, is(expected));
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/constant/DistSQLScriptConstants.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/constant/DistSQLScriptConstants.java
index bca7e53d1c5..7c7fcb64b9f 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/constant/DistSQLScriptConstants.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/constant/DistSQLScriptConstants.java
@@ -63,17 +63,17 @@ public final class DistSQLScriptConstants {
+ ")";
public static final String PROPERTY = "\"%s\"=\"%s\"";
-
+
public static final String CREATE_SHARDING_ALGORITHM = "CREATE SHARDING
ALGORITHM";
-
+
public static final String SHARDING_ALGORITHM = " %s ("
+ System.lineSeparator()
+ "TYPE(NAME=%s, PROPERTIES(%s))"
+ System.lineSeparator()
+ ")";
-
+
public static final String CREATE_SHARDING_TABLE = "CREATE SHARDING TABLE
RULE";
-
+
public static final String SHARDING_TABLE = " %s ("
+ System.lineSeparator()
+ "DATANODES(\"%s\"),"
@@ -81,32 +81,32 @@ public final class DistSQLScriptConstants {
+ "%s"
+ System.lineSeparator()
+ ")";
-
+
public static final String DATABASE_STRATEGY = "DATABASE_STRATEGY";
-
+
public static final String TABLE_STRATEGY = "TABLE_STRATEGY";
-
+
public static final String SHARDING_STRATEGY_STANDARD = "%s(TYPE=%s,
SHARDING_COLUMN=%s, SHARDING_ALGORITHM=%s),"
+ System.lineSeparator();
-
+
public static final String SHARDING_STRATEGY_COMPLEX = "%s(TYPE=%s,
SHARDING_COLUMNS=%s, SHARDING_ALGORITHM=%s),"
+ System.lineSeparator();
-
+
public static final String SHARDING_STRATEGY_HINT = "%s(TYPE=%s,
SHARDING_ALGORITHM=%s),"
+ System.lineSeparator();
-
+
public static final String KEY_GENERATOR_STRATEGY =
"KEY_GENERATE_STRATEGY(COLUMN=%s, KEY_GENERATOR=%s),"
+ System.lineSeparator();
-
+
public static final String CREATE_KEY_GENERATOR = "CREATE SHARDING KEY
GENERATOR";
-
+
public static final String KEY_GENERATOR = " %s ("
+ System.lineSeparator()
+ "TYPE(NAME=%s)"
+ System.lineSeparator()
+ ")";
-
+
public static final String SHARDING_BINDING_TABLE_RULES = "CREATE SHARDING
BINDING TABLE RULES %s";
-
+
public static final String BINDING = "(%s)";
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/queryable/ConvertYamlConfigurationHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/queryable/ConvertYamlConfigurationHandler.java
index 3d0a896ba4f..41585371eb9 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/queryable/ConvertYamlConfigurationHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/queryable/ConvertYamlConfigurationHandler.java
@@ -147,12 +147,12 @@ public class ConvertYamlConfigurationHandler extends
QueryableRALBackendHandler<
}
}
}
-
+
private void appendRules(final Collection<YamlRuleConfiguration> rules,
final StringBuilder stringBuilder) {
if (rules.isEmpty()) {
return;
}
- for (YamlRuleConfiguration rule: rules) {
+ for (YamlRuleConfiguration rule : rules) {
ShardingRuleConfiguration shardingRuleConfig = new
ShardingRuleConfigurationYamlSwapper().swapToObject((YamlShardingRuleConfiguration)
rule);
appendShardingAlgorithms(shardingRuleConfig, stringBuilder);
appendKeyGenerators(shardingRuleConfig, stringBuilder);
@@ -161,7 +161,7 @@ public class ConvertYamlConfigurationHandler extends
QueryableRALBackendHandler<
appendShardingBindingTableRules(shardingRuleConfig, stringBuilder);
}
}
-
+
private void appendShardingAlgorithms(final ShardingRuleConfiguration
shardingRuleConfig, final StringBuilder stringBuilder) {
stringBuilder.append(DistSQLScriptConstants.CREATE_SHARDING_ALGORITHM);
Iterator<Entry<String, ShardingSphereAlgorithmConfiguration>> iterator
= shardingRuleConfig.getShardingAlgorithms().entrySet().iterator();
@@ -177,7 +177,7 @@ public class ConvertYamlConfigurationHandler extends
QueryableRALBackendHandler<
}
stringBuilder.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator());
}
-
+
private String appendShardingAlgorithmProperties(final Properties
property) {
StringBuilder result = new StringBuilder();
Iterator<Entry<Object, Object>> iterator =
property.entrySet().iterator();
@@ -190,7 +190,7 @@ public class ConvertYamlConfigurationHandler extends
QueryableRALBackendHandler<
}
return result.toString();
}
-
+
private void appendKeyGenerators(final ShardingRuleConfiguration
shardingRuleConfig, final StringBuilder stringBuilder) {
stringBuilder.append(DistSQLScriptConstants.CREATE_KEY_GENERATOR);
Iterator<Entry<String, ShardingSphereAlgorithmConfiguration>> iterator
= shardingRuleConfig.getKeyGenerators().entrySet().iterator();
@@ -205,7 +205,7 @@ public class ConvertYamlConfigurationHandler extends
QueryableRALBackendHandler<
}
stringBuilder.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator());
}
-
+
private void appendShardingTableRules(final ShardingRuleConfiguration
shardingRuleConfig, final StringBuilder stringBuilder) {
stringBuilder.append(DistSQLScriptConstants.CREATE_SHARDING_TABLE);
Iterator<ShardingTableRuleConfiguration> iterator =
shardingRuleConfig.getTables().iterator();
@@ -221,7 +221,7 @@ public class ConvertYamlConfigurationHandler extends
QueryableRALBackendHandler<
}
stringBuilder.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator());
}
-
+
private String appendTableStrategy(final ShardingTableRuleConfiguration
shardingTableRuleConfig) {
StringBuilder result = new StringBuilder();
if (null != shardingTableRuleConfig.getDatabaseShardingStrategy()) {
@@ -238,7 +238,7 @@ public class ConvertYamlConfigurationHandler extends
QueryableRALBackendHandler<
}
return result.substring(0, result.length() - 2);
}
-
+
private StringBuilder getStrategy(final ShardingStrategyConfiguration
shardingStrategyConfiguration, final String strategyType, final StringBuilder
result) {
String type = shardingStrategyConfiguration.getType().toLowerCase();
String shardingAlgorithmName =
shardingStrategyConfiguration.getShardingAlgorithmName();
@@ -266,7 +266,7 @@ public class ConvertYamlConfigurationHandler extends
QueryableRALBackendHandler<
String bindings =
getBinding(shardingRuleConfig.getBindingTableGroups().iterator());
stringBuilder.append(String.format(DistSQLScriptConstants.SHARDING_BINDING_TABLE_RULES,
bindings));
}
-
+
private String getBinding(final Iterator<String> iterator) {
StringBuilder result = new StringBuilder();
while (iterator.hasNext()) {
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
index db63edf8ed8..aad08b98f6b 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
@@ -1030,7 +1030,7 @@ public final class SQLParserTestCases {
@XmlElement(name = "parse-sql")
private final List<ParseStatementTestCase> parseStatementAsserts = new
LinkedList<>();
-
+
@XmlElement(name = "format-sql")
private final List<FormatSQLStatementTestCase> formatSQLStatementAsserts =
new LinkedList<>();