This is an automated email from the ASF dual-hosted git repository.
menghaoran 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 94894ca0605 Add OptimizationSQLNodeConvertException (#20430)
94894ca0605 is described below
commit 94894ca0605d599542106d2ec879ac03700b2539
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Aug 23 03:24:02 2022 +0800
Add OptimizationSQLNodeConvertException (#20430)
---
.../content/user-manual/error-code/sql-error-code.cn.md | 3 ++-
.../content/user-manual/error-code/sql-error-code.en.md | 3 ++-
.../UnsupportedActualDataNodeStructureException.java | 2 +-
.../federation/optimizer/ShardingSphereOptimizer.java | 13 ++++---------
.../optimizer/converter/SQLNodeConverterEngine.java | 3 ++-
.../exception/OptimizationSQLNodeConvertException.java} | 16 +++++++---------
6 files changed, 18 insertions(+), 22 deletions(-)
diff --git a/docs/document/content/user-manual/error-code/sql-error-code.cn.md
b/docs/document/content/user-manual/error-code/sql-error-code.cn.md
index 04bd7537c0c..60b667a72fc 100644
--- a/docs/document/content/user-manual/error-code/sql-error-code.cn.md
+++ b/docs/document/content/user-manual/error-code/sql-error-code.cn.md
@@ -10,11 +10,12 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
| --------- | ----------- | ------ |
| 01000 | 10000 | Circuit break open, the request has been ignored |
| 08000 | 10001 | The URL \`%s\` is not recognized, please refer to
the pattern \`%s\` |
+| 42000 | 10002 | Can not support 3-tier structure for actual data
node \`%s\` with JDBC \`%s\` |
+| 42000 | 10003 | Unsupported SQL node conversion for SQL statement
\`%s\` |
| 42000 | 11000 | You have an error in your SQL syntax: %s |
| 42000 | 11001 | configuration error |
| 42000 | 11002 | Resource does not exist |
| 42000 | 11003 | Rule does not exist |
-| 42000 | 11004 | Can not support 3-tier structure for actual data
node \`%s\` with JDBC \`%s\` |
| 42000 | 12000 | Unsupported command: %s |
| 44000 | 13000 | SQL check failed, error message: %s |
| HY000 | 14000 | The table \`%s\` of schema \`%s\` is locked |
diff --git a/docs/document/content/user-manual/error-code/sql-error-code.en.md
b/docs/document/content/user-manual/error-code/sql-error-code.en.md
index 8bd060fd926..bfcb7340732 100644
--- a/docs/document/content/user-manual/error-code/sql-error-code.en.md
+++ b/docs/document/content/user-manual/error-code/sql-error-code.en.md
@@ -10,11 +10,12 @@ SQL error codes provide by standard `SQL State`, `Vendor
Code` and `Reason`, whi
| --------- | ----------- | ------ |
| 01000 | 10000 | Circuit break open, the request has been ignored |
| 08000 | 10001 | The URL \`%s\` is not recognized, please refer to
the pattern \`%s\` |
+| 42000 | 10002 | Can not support 3-tier structure for actual data
node \`%s\` with JDBC \`%s\` |
+| 42000 | 10003 | Unsupported SQL node conversion for SQL statement
\`%s\` |
| 42000 | 11000 | You have an error in your SQL syntax: %s |
| 42000 | 11001 | configuration error |
| 42000 | 11002 | Resource does not exist |
| 42000 | 11003 | Rule does not exist |
-| 42000 | 11004 | Can not support 3-tier structure for actual data
node \`%s\` with JDBC \`%s\` |
| 42000 | 12000 | Unsupported command: %s |
| 44000 | 13000 | SQL check failed, error message: %s |
| HY000 | 14000 | The table \`%s\` of schema \`%s\` is locked |
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/exception/UnsupportedActualDataNodeStructureException.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/exception/UnsupportedActualDataNodeStructureException.java
index b80118fa3a5..aa0781c51f1 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/exception/UnsupportedActualDataNodeStructureException.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/exception/UnsupportedActualDataNodeStructureException.java
@@ -31,6 +31,6 @@ public final class
UnsupportedActualDataNodeStructureException extends ShardingS
private static final long serialVersionUID = -8921823916974492519L;
public UnsupportedActualDataNodeStructureException(final DataNode
dataNode, final Collection<String> jdbcUrlPrefixes) {
- super(XOpenSQLState.SYNTAX_ERROR, 11004, "Can not support 3-tier
structure for actual data node `%s` with JDBC `%s`", dataNode.format(),
jdbcUrlPrefixes.toString());
+ super(XOpenSQLState.SYNTAX_ERROR, 10002, "Can not support 3-tier
structure for actual data node `%s` with JDBC `%s`", dataNode.format(),
jdbcUrlPrefixes.toString());
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/ShardingSphereOptimizer.java
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/ShardingSphereOptimizer.java
index faec5782398..32eac8cb870 100644
---
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/ShardingSphereOptimizer.java
+++
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/ShardingSphereOptimizer.java
@@ -23,7 +23,6 @@ import org.apache.calcite.plan.RelOptPlanner;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.sql.SqlNode;
import org.apache.calcite.sql2rel.SqlToRelConverter;
-import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import
org.apache.shardingsphere.infra.federation.optimizer.converter.SQLNodeConverterEngine;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -44,14 +43,10 @@ public final class ShardingSphereOptimizer {
* @return optimized relational node
*/
public RelNode optimize(final SQLStatement sqlStatement) {
- try {
- SqlNode sqlNode = SQLNodeConverterEngine.convert(sqlStatement);
- RelNode logicPlan = converter.convertQuery(sqlNode, true,
true).rel;
- RelNode bestPlan = optimizeWithRBO(logicPlan, hepPlanner);
- return optimizeWithCBO(bestPlan, converter);
- } catch (final UnsupportedOperationException ex) {
- throw new ShardingSphereException(ex);
- }
+ SqlNode sqlNode = SQLNodeConverterEngine.convert(sqlStatement);
+ RelNode logicPlan = converter.convertQuery(sqlNode, true, true).rel;
+ RelNode bestPlan = optimizeWithRBO(logicPlan, hepPlanner);
+ return optimizeWithCBO(bestPlan, converter);
}
private static RelNode optimizeWithRBO(final RelNode logicPlan, final
RelOptPlanner hepPlanner) {
diff --git
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/SQLNodeConverterEngine.java
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/SQLNodeConverterEngine.java
index 2b7f3fceb00..050f0899391 100644
---
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/SQLNodeConverterEngine.java
+++
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/SQLNodeConverterEngine.java
@@ -22,6 +22,7 @@ import lombok.NoArgsConstructor;
import org.apache.calcite.sql.SqlBasicCall;
import org.apache.calcite.sql.SqlNode;
import org.apache.calcite.sql.parser.SqlParserPos;
+import
org.apache.shardingsphere.infra.federation.optimizer.converter.exception.OptimizationSQLNodeConvertException;
import
org.apache.shardingsphere.infra.federation.optimizer.converter.statement.select.SelectStatementConverter;
import
org.apache.shardingsphere.infra.federation.optimizer.converter.type.CombineOperatorConverter;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.combine.CombineSegment;
@@ -51,6 +52,6 @@ public final class SQLNodeConverterEngine {
}
return sqlNode;
}
- throw new UnsupportedOperationException("Unsupported SQL node
conversion.");
+ throw new OptimizationSQLNodeConvertException(statement);
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/exception/UnsupportedActualDataNodeStructureException.java
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/exception/OptimizationSQLNodeConvertException.java
similarity index 59%
copy from
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/exception/UnsupportedActualDataNodeStructureException.java
copy to
shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/exception/OptimizationSQLNodeConvertException.java
index b80118fa3a5..688152c8274 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/exception/UnsupportedActualDataNodeStructureException.java
+++
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/exception/OptimizationSQLNodeConvertException.java
@@ -15,22 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.database.schema.exception;
+package
org.apache.shardingsphere.infra.federation.optimizer.converter.exception;
-import org.apache.shardingsphere.infra.datanode.DataNode;
import
org.apache.shardingsphere.infra.util.exception.sql.ShardingSphereSQLException;
import
org.apache.shardingsphere.infra.util.exception.sql.sqlstate.XOpenSQLState;
-
-import java.util.Collection;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
/**
- * Unsupported actual data node structure exception.
+ * Optimization SQL node convert exception.
*/
-public final class UnsupportedActualDataNodeStructureException extends
ShardingSphereSQLException {
+public final class OptimizationSQLNodeConvertException extends
ShardingSphereSQLException {
- private static final long serialVersionUID = -8921823916974492519L;
+ private static final long serialVersionUID = -5486229929620713984L;
- public UnsupportedActualDataNodeStructureException(final DataNode
dataNode, final Collection<String> jdbcUrlPrefixes) {
- super(XOpenSQLState.SYNTAX_ERROR, 11004, "Can not support 3-tier
structure for actual data node `%s` with JDBC `%s`", dataNode.format(),
jdbcUrlPrefixes.toString());
+ public OptimizationSQLNodeConvertException(final SQLStatement statement) {
+ super(XOpenSQLState.SYNTAX_ERROR, 10003, "Unsupported SQL node
conversion for SQL statement `%s`", statement.toString());
}
}