This is an automated email from the ASF dual-hosted git repository.
panjuan 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 457852ecbf0 Add RULStatement and RULBackendHandler. (#19504)
457852ecbf0 is described below
commit 457852ecbf0927cec6c9d62e16f8b3b3089a2439
Author: Raigor <[email protected]>
AuthorDate: Sun Jul 24 21:44:38 2022 +0800
Add RULStatement and RULBackendHandler. (#19504)
---
.../utility/UtilityDistSQLStatementVisitor.java | 8 +--
.../distsql/parser/statement/rul/RULStatement.java | 8 +--
.../SQLRULStatement.java} | 9 ++-
.../{ral/advanced => rul/sql}/FormatStatement.java | 12 ++--
.../{ral/advanced => rul/sql}/ParseStatement.java | 12 ++--
.../advanced => rul/sql}/PreviewStatement.java | 12 ++--
.../text/distsql/DistSQLBackendHandlerFactory.java | 5 ++
.../text/distsql/ral/RALBackendHandlerFactory.java | 9 ---
.../text/distsql/rul/RULBackendHandler.java | 45 ++++++++++++
.../text/distsql/rul/RULBackendHandlerFactory.java | 79 +++++++++++++++++++++
.../text/distsql/rul/SQLRULBackendHandler.java | 82 ++++++++++++++++++++++
.../advanced => rul/sql}/FormatSQLHandler.java | 8 +--
.../advanced => rul/sql}/ParseDistSQLHandler.java | 8 +--
.../{ral/advanced => rul/sql}/PreviewHandler.java | 8 +--
.../ral/advance/ParseDistSQLHandlerTest.java | 4 +-
.../statement/distsql/DistSQLStatementAssert.java | 4 ++
.../ral/impl/QueryableRALStatementAssert.java | 10 ---
.../RULStatementAssert.java} | 32 ++++-----
.../impl/SQLRULStatementAssert.java} | 38 +++++-----
.../impl/sql}/ParseStatementAssert.java | 6 +-
.../impl/sql}/PreviewStatementAssert.java | 9 ++-
.../jaxb/cases/domain/SQLParserTestCases.java | 4 +-
.../{ral => rul}/ParseStatementTestCase.java | 2 +-
.../{ral => rul}/PreviewStatementTestCase.java | 11 ++-
.../case/{ral/advance.xml => rul/sql.xml} | 2 +-
25 files changed, 316 insertions(+), 111 deletions(-)
diff --git
a/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/utility/UtilityDistSQLStatementVisitor.java
b/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/utility/UtilityDistSQLStatementVisitor.java
index 13d73de72f6..f37e8fd3700 100644
---
a/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/utility/UtilityDistSQLStatementVisitor.java
+++
b/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/utility/UtilityDistSQLStatementVisitor.java
@@ -21,14 +21,14 @@ import
org.apache.shardingsphere.distsql.parser.autogen.UtilityDistSQLStatementB
import
org.apache.shardingsphere.distsql.parser.autogen.UtilityDistSQLStatementParser.FormatSQLContext;
import
org.apache.shardingsphere.distsql.parser.autogen.UtilityDistSQLStatementParser.ParseSQLContext;
import
org.apache.shardingsphere.distsql.parser.autogen.UtilityDistSQLStatementParser.PreviewSQLContext;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.FormatStatement;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.ParseStatement;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.PreviewStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.FormatStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.ParseStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.PreviewStatement;
import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
/**
- * SQL statement visitor for utility dist SQL.
+ * SQL statement visitor for utility Dist SQL.
*/
public final class UtilityDistSQLStatementVisitor extends
UtilityDistSQLStatementBaseVisitor<ASTNode> implements SQLVisitor {
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/ral/PreviewStatementTestCase.java
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/RULStatement.java
similarity index 71%
copy from
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/ral/PreviewStatementTestCase.java
copy to
shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/RULStatement.java
index 50bf6187fd5..9082354c3b1 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/ral/PreviewStatementTestCase.java
+++
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/RULStatement.java
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral;
+package org.apache.shardingsphere.distsql.parser.statement.rul;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import org.apache.shardingsphere.distsql.parser.statement.DistSQLStatement;
/**
- * Preview statement test case.
+ * RUL statement.
*/
-public final class PreviewStatementTestCase extends SQLParserTestCase {
+public abstract class RULStatement extends DistSQLStatement {
}
diff --git
a/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/ral/advanced/ParseStatement.java
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/SQLRULStatement.java
similarity index 79%
copy from
shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/ral/advanced/ParseStatement.java
copy to
shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/SQLRULStatement.java
index 1d6f45b1b0d..3408c794caf 100644
---
a/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/ral/advanced/ParseStatement.java
+++
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/SQLRULStatement.java
@@ -15,18 +15,17 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.distsql.parser.statement.ral.advanced;
+package org.apache.shardingsphere.distsql.parser.statement.rul;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.QueryableRALStatement;
/**
- * Parse statement.
+ * SQL RUL statement.
*/
-@RequiredArgsConstructor
@Getter
-public final class ParseStatement extends QueryableRALStatement {
+@RequiredArgsConstructor
+public abstract class SQLRULStatement extends RULStatement {
private final String sql;
}
diff --git
a/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/ral/advanced/FormatStatement.java
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/sql/FormatStatement.java
similarity index 73%
rename from
shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/ral/advanced/FormatStatement.java
rename to
shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/sql/FormatStatement.java
index a68a66012b3..292eeaaa02c 100644
---
a/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/ral/advanced/FormatStatement.java
+++
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/sql/FormatStatement.java
@@ -15,18 +15,18 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.distsql.parser.statement.ral.advanced;
+package org.apache.shardingsphere.distsql.parser.statement.rul.sql;
import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.QueryableRALStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rul.SQLRULStatement;
/**
* Format statement.
*/
-@RequiredArgsConstructor
@Getter
-public final class FormatStatement extends QueryableRALStatement {
+public final class FormatStatement extends SQLRULStatement {
- private final String sql;
+ public FormatStatement(final String sql) {
+ super(sql);
+ }
}
diff --git
a/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/ral/advanced/ParseStatement.java
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/sql/ParseStatement.java
similarity index 73%
rename from
shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/ral/advanced/ParseStatement.java
rename to
shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/sql/ParseStatement.java
index 1d6f45b1b0d..ec14a135f01 100644
---
a/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/ral/advanced/ParseStatement.java
+++
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/sql/ParseStatement.java
@@ -15,18 +15,18 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.distsql.parser.statement.ral.advanced;
+package org.apache.shardingsphere.distsql.parser.statement.rul.sql;
import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.QueryableRALStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rul.SQLRULStatement;
/**
* Parse statement.
*/
-@RequiredArgsConstructor
@Getter
-public final class ParseStatement extends QueryableRALStatement {
+public final class ParseStatement extends SQLRULStatement {
- private final String sql;
+ public ParseStatement(final String sql) {
+ super(sql);
+ }
}
diff --git
a/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/ral/advanced/PreviewStatement.java
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/sql/PreviewStatement.java
similarity index 73%
rename from
shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/ral/advanced/PreviewStatement.java
rename to
shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/sql/PreviewStatement.java
index 79d3e7ee8d5..886f0f681a7 100644
---
a/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/ral/advanced/PreviewStatement.java
+++
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rul/sql/PreviewStatement.java
@@ -15,18 +15,18 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.distsql.parser.statement.ral.advanced;
+package org.apache.shardingsphere.distsql.parser.statement.rul.sql;
import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.QueryableRALStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rul.SQLRULStatement;
/**
* Preview statement.
*/
-@RequiredArgsConstructor
@Getter
-public final class PreviewStatement extends QueryableRALStatement {
+public final class PreviewStatement extends SQLRULStatement {
- private final String sql;
+ public PreviewStatement(final String sql) {
+ super(sql);
+ }
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactory.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactory.java
index 3eab778d257..f01cb9b6444 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactory.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactory.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.distsql.parser.statement.ral.RALStatement;
import
org.apache.shardingsphere.distsql.parser.statement.ral.UpdatableRALStatement;
import org.apache.shardingsphere.distsql.parser.statement.rdl.RDLStatement;
import org.apache.shardingsphere.distsql.parser.statement.rql.RQLStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rul.RULStatement;
import org.apache.shardingsphere.infra.lock.LockContext;
import
org.apache.shardingsphere.mode.manager.lock.definition.LockDefinitionFactory;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
@@ -33,6 +34,7 @@ import
org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
import
org.apache.shardingsphere.proxy.backend.text.distsql.ral.RALBackendHandlerFactory;
import
org.apache.shardingsphere.proxy.backend.text.distsql.rdl.RDLBackendHandlerFactory;
import
org.apache.shardingsphere.proxy.backend.text.distsql.rql.RQLBackendHandlerFactory;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rul.RULBackendHandlerFactory;
import java.sql.SQLException;
@@ -64,6 +66,9 @@ public final class DistSQLBackendHandlerFactory {
}
return RALBackendHandlerFactory.newInstance((RALStatement)
sqlStatement, connectionSession);
}
+ if (sqlStatement instanceof RULStatement) {
+ return RULBackendHandlerFactory.newInstance((RULStatement)
sqlStatement, connectionSession);
+ }
throw new
UnsupportedOperationException(sqlStatement.getClass().getCanonicalName());
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
index 7e12850f340..896c9a6289f 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
@@ -21,9 +21,6 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.distsql.parser.statement.ral.HintRALStatement;
import org.apache.shardingsphere.distsql.parser.statement.ral.RALStatement;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.FormatStatement;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.ParseStatement;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.PreviewStatement;
import
org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ConvertYamlConfigurationStatement;
import
org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ExportDatabaseConfigurationStatement;
import
org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowAllVariableStatement;
@@ -54,9 +51,6 @@ import
org.apache.shardingsphere.distsql.parser.statement.ral.updatable.SetVaria
import
org.apache.shardingsphere.distsql.parser.statement.ral.updatable.UnlabelInstanceStatement;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.text.distsql.ral.advanced.FormatSQLHandler;
-import
org.apache.shardingsphere.proxy.backend.text.distsql.ral.advanced.ParseDistSQLHandler;
-import
org.apache.shardingsphere.proxy.backend.text.distsql.ral.advanced.PreviewHandler;
import
org.apache.shardingsphere.proxy.backend.text.distsql.ral.hint.HintRALBackendHandler;
import
org.apache.shardingsphere.proxy.backend.text.distsql.ral.queryable.ConvertYamlConfigurationHandler;
import
org.apache.shardingsphere.proxy.backend.text.distsql.ral.queryable.ExportDatabaseConfigurationHandler;
@@ -132,9 +126,6 @@ public final class RALBackendHandlerFactory {
HANDLERS.put(ShowTransactionRuleStatement.class,
ShowTransactionRuleHandler.class);
HANDLERS.put(ExportDatabaseConfigurationStatement.class,
ExportDatabaseConfigurationHandler.class);
HANDLERS.put(ConvertYamlConfigurationStatement.class,
ConvertYamlConfigurationHandler.class);
- HANDLERS.put(ParseStatement.class, ParseDistSQLHandler.class);
- HANDLERS.put(PreviewStatement.class, PreviewHandler.class);
- HANDLERS.put(FormatStatement.class, FormatSQLHandler.class);
HANDLERS.put(ShowSQLTranslatorRuleStatement.class,
ShowSQLTranslatorRuleHandler.class);
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/RULBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/RULBackendHandler.java
new file mode 100644
index 00000000000..3cc3d254304
--- /dev/null
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/RULBackendHandler.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.proxy.backend.text.distsql.rul;
+
+import lombok.Getter;
+import org.apache.shardingsphere.distsql.parser.statement.rul.RULStatement;
+import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
+
+/**
+ * RUL backend handler.
+ */
+@Getter
+public abstract class RULBackendHandler<E extends RULStatement> implements
TextProtocolBackendHandler {
+
+ private E sqlStatement;
+
+ private ConnectionSession connectionSession;
+
+ /**
+ * Initialize.
+ *
+ * @param sqlStatement SQL statement
+ * @param connectionSession connection session
+ */
+ public final void init(final RULStatement sqlStatement, final
ConnectionSession connectionSession) {
+ this.sqlStatement = (E) sqlStatement;
+ this.connectionSession = connectionSession;
+ }
+}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/RULBackendHandlerFactory.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/RULBackendHandlerFactory.java
new file mode 100644
index 00000000000..93a5331e740
--- /dev/null
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/RULBackendHandlerFactory.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.proxy.backend.text.distsql.rul;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.distsql.parser.statement.rul.RULStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.FormatStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.ParseStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.PreviewStatement;
+import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rul.sql.FormatSQLHandler;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rul.sql.ParseDistSQLHandler;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rul.sql.PreviewHandler;
+
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * RUL backend handler factory.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class RULBackendHandlerFactory {
+
+ private static final Map<Class<? extends RULStatement>, Class<? extends
RULBackendHandler<?>>> HANDLERS = new HashMap<>();
+
+ static {
+ HANDLERS.put(ParseStatement.class, ParseDistSQLHandler.class);
+ HANDLERS.put(PreviewStatement.class, PreviewHandler.class);
+ HANDLERS.put(FormatStatement.class, FormatSQLHandler.class);
+ }
+
+ /**
+ * Create new instance of RUL backend handler.
+ *
+ * @param sqlStatement RUL statement
+ * @param connectionSession connection session
+ * @return created instance
+ * @throws SQLException SQL exception
+ */
+ public static TextProtocolBackendHandler newInstance(final RULStatement
sqlStatement, final ConnectionSession connectionSession) throws SQLException {
+ return createRULBackendHandler(sqlStatement, connectionSession);
+ }
+
+ private static RULBackendHandler<?> newInstance(final Class<? extends
RULBackendHandler<?>> clazz) {
+ try {
+ return clazz.getDeclaredConstructor().newInstance();
+ } catch (final ReflectiveOperationException ex) {
+ throw new UnsupportedOperationException(String.format("Can not
find public constructor for class `%s`", clazz.getName()));
+ }
+ }
+
+ private static RULBackendHandler<?> createRULBackendHandler(final
RULStatement sqlStatement, final ConnectionSession connectionSession) {
+ Class<? extends RULBackendHandler<?>> clazz =
HANDLERS.get(sqlStatement.getClass());
+ if (null == clazz) {
+ throw new UnsupportedOperationException(String.format("Unsupported
SQL statement : %s", sqlStatement.getClass().getCanonicalName()));
+ }
+ RULBackendHandler<?> result = newInstance(clazz);
+ result.init(sqlStatement, connectionSession);
+ return result;
+ }
+}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/SQLRULBackendHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/SQLRULBackendHandler.java
new file mode 100644
index 00000000000..9a1dd2ef55f
--- /dev/null
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/SQLRULBackendHandler.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.proxy.backend.text.distsql.rul;
+
+import org.apache.shardingsphere.distsql.parser.statement.rul.RULStatement;
+import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedResult;
+import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseCell;
+import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
+import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
+import
org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeader;
+import
org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
+
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * SQL RUL backend handler.
+ *
+ * @param <E> type of RUL statement
+ */
+public abstract class SQLRULBackendHandler<E extends RULStatement> extends
RULBackendHandler<E> {
+
+ private List<QueryHeader> queryHeaders;
+
+ private MergedResult mergedResult;
+
+ @Override
+ public final ResponseHeader execute() throws SQLException {
+ queryHeaders = createQueryHeader();
+ mergedResult = createMergedResult();
+ return new QueryResponseHeader(queryHeaders);
+ }
+
+ private List<QueryHeader> createQueryHeader() {
+ return getColumnNames().stream().map(each -> new QueryHeader("", "",
each, each, Types.CHAR, "CHAR", 255, 0, false, false, false,
false)).collect(Collectors.toList());
+ }
+
+ private MergedResult createMergedResult() throws SQLException {
+ return new
LocalDataMergedResult(getRows(ProxyContext.getInstance().getContextManager()));
+ }
+
+ @Override
+ public final boolean next() throws SQLException {
+ return null != mergedResult && mergedResult.next();
+ }
+
+ @Override
+ public final QueryResponseRow getRowData() throws SQLException {
+ List<QueryResponseCell> cells = new ArrayList<>(queryHeaders.size());
+ for (int i = 0; i < queryHeaders.size(); i++) {
+ cells.add(new
QueryResponseCell(queryHeaders.get(i).getColumnType(), mergedResult.getValue(i
+ 1, Object.class)));
+ }
+ return new QueryResponseRow(cells);
+ }
+
+ protected abstract Collection<String> getColumnNames();
+
+ protected abstract Collection<LocalDataQueryResultRow>
getRows(ContextManager contextManager) throws SQLException;
+}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/FormatSQLHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/sql/FormatSQLHandler.java
similarity index 88%
rename from
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/FormatSQLHandler.java
rename to
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/sql/FormatSQLHandler.java
index 6b732cbf1eb..fd5ee25195a 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/FormatSQLHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/sql/FormatSQLHandler.java
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.advanced;
+package org.apache.shardingsphere.proxy.backend.text.distsql.rul.sql;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.FormatStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.FormatStatement;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import org.apache.shardingsphere.mode.manager.ContextManager;
-import
org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rul.SQLRULBackendHandler;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
import org.apache.shardingsphere.sql.parser.api.SQLVisitorEngine;
@@ -35,7 +35,7 @@ import java.util.Properties;
/**
* Format SQL handler.
*/
-public final class FormatSQLHandler extends
QueryableRALBackendHandler<FormatStatement> {
+public final class FormatSQLHandler extends
SQLRULBackendHandler<FormatStatement> {
private static final String FORMATTED_RESULT = "formatted_result";
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/sql/ParseDistSQLHandler.java
similarity index 88%
rename from
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLHandler.java
rename to
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/sql/ParseDistSQLHandler.java
index 756255b6674..00dc883c110 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/sql/ParseDistSQLHandler.java
@@ -15,14 +15,14 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.advanced;
+package org.apache.shardingsphere.proxy.backend.text.distsql.rul.sql;
import com.google.gson.Gson;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.ParseStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.ParseStatement;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.parser.rule.SQLParserRule;
-import
org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rul.SQLRULBackendHandler;
import org.apache.shardingsphere.sql.parser.exception.SQLParsingException;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -33,7 +33,7 @@ import java.util.Collections;
/**
* Parse Dist SQL handler.
*/
-public final class ParseDistSQLHandler extends
QueryableRALBackendHandler<ParseStatement> {
+public final class ParseDistSQLHandler extends
SQLRULBackendHandler<ParseStatement> {
private static final String PARSED_STATEMENT = "parsed_statement";
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/PreviewHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/sql/PreviewHandler.java
similarity index 97%
rename from
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/PreviewHandler.java
rename to
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/sql/PreviewHandler.java
index 061e75bd322..f510a49f0d1 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/PreviewHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rul/sql/PreviewHandler.java
@@ -15,11 +15,11 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.ral.advanced;
+package org.apache.shardingsphere.proxy.backend.text.distsql.rul.sql;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.PreviewStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.PreviewStatement;
import org.apache.shardingsphere.infra.binder.LogicSQL;
import org.apache.shardingsphere.infra.binder.SQLStatementContextFactory;
import org.apache.shardingsphere.infra.binder.aware.CursorDefinitionAware;
@@ -60,7 +60,7 @@ import
org.apache.shardingsphere.proxy.backend.context.BackendExecutorContext;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import
org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
import
org.apache.shardingsphere.proxy.backend.exception.RuleNotExistedException;
-import
org.apache.shardingsphere.proxy.backend.text.distsql.ral.QueryableRALBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rul.SQLRULBackendHandler;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLInsertStatement;
@@ -76,7 +76,7 @@ import java.util.stream.Collectors;
/**
* Preview handler.
*/
-public final class PreviewHandler extends
QueryableRALBackendHandler<PreviewStatement> {
+public final class PreviewHandler extends
SQLRULBackendHandler<PreviewStatement> {
private static final String DATA_SOURCE_NAME = "data_source_name";
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advance/ParseDistSQLHandlerTest.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advance/ParseDistSQLHandlerTest.java
index 5567ed78f39..f6e9eebfa05 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advance/ParseDistSQLHandlerTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advance/ParseDistSQLHandlerTest.java
@@ -18,7 +18,7 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.ral.advance;
import com.google.gson.Gson;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.ParseStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.ParseStatement;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
import
org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
import
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.parser.rule.SQLParserRule;
import
org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import
org.apache.shardingsphere.proxy.backend.text.distsql.ral.advanced.ParseDistSQLHandler;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rul.sql.ParseDistSQLHandler;
import org.apache.shardingsphere.proxy.backend.util.ProxyContextRestorer;
import org.apache.shardingsphere.sql.parser.exception.SQLParsingException;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/DistSQLStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/DistSQLStatementAssert.java
index a5ade2d2c3c..9e681a5c2d4 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/DistSQLStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/DistSQLStatementAssert.java
@@ -23,10 +23,12 @@ import
org.apache.shardingsphere.distsql.parser.statement.DistSQLStatement;
import org.apache.shardingsphere.distsql.parser.statement.ral.RALStatement;
import org.apache.shardingsphere.distsql.parser.statement.rdl.RDLStatement;
import org.apache.shardingsphere.distsql.parser.statement.rql.RQLStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rul.RULStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.ral.RALStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.RDLStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.RQLStatementAssert;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rul.RULStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
/**
@@ -49,6 +51,8 @@ public final class DistSQLStatementAssert {
RQLStatementAssert.assertIs(assertContext, (RQLStatement) actual,
expected);
} else if (actual instanceof RALStatement) {
RALStatementAssert.assertIs(assertContext, (RALStatement) actual,
expected);
+ } else if (actual instanceof RULStatement) {
+ RULStatementAssert.assertIs(assertContext, (RULStatement) actual,
expected);
}
}
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/QueryableRALStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/QueryableRALStatementAssert.java
index e10d8a9f01b..30a1c1a6219 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/QueryableRALStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/QueryableRALStatementAssert.java
@@ -20,8 +20,6 @@ package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statemen
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.distsql.parser.statement.ral.QueryableRALStatement;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.ParseStatement;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.PreviewStatement;
import
org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ExportDatabaseConfigurationStatement;
import
org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowAllVariableStatement;
import
org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowAuthorityRuleStatement;
@@ -34,8 +32,6 @@ import
org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowTran
import
org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowVariableStatement;
import
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.ShowReadwriteSplittingReadResourcesStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.ral.impl.advanced.ParseStatementAssert;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.ral.impl.advanced.PreviewStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.ral.impl.queryable.ExportDatabaseConfigurationStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.ral.impl.queryable.ShowAllVariableStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.ral.impl.queryable.ShowAuthorityRuleStatementAssert;
@@ -49,8 +45,6 @@ import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.ral.impl.queryable.ShowVariableStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ExportDatabaseConfigurationStatementTestCase;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ParseStatementTestCase;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.PreviewStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowAllVariableStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowAuthorityRuleStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowInstanceStatementTestCase;
@@ -97,10 +91,6 @@ public final class QueryableRALStatementAssert {
ShowSQLParserRuleStatementAssert.assertIs(assertContext,
(ShowSQLParserRuleStatement) actual, (ShowSQLParserRuleStatementTestCase)
expected);
} else if (actual instanceof ExportDatabaseConfigurationStatement) {
ExportDatabaseConfigurationStatementAssert.assertIs(assertContext,
(ExportDatabaseConfigurationStatement) actual,
(ExportDatabaseConfigurationStatementTestCase) expected);
- } else if (actual instanceof PreviewStatement) {
- PreviewStatementAssert.assertIs(assertContext, (PreviewStatement)
actual, (PreviewStatementTestCase) expected);
- } else if (actual instanceof ParseStatement) {
- ParseStatementAssert.assertIs(assertContext, (ParseStatement)
actual, (ParseStatementTestCase) expected);
} else if (actual instanceof ShowSQLTranslatorRuleStatement) {
ShowSQLTranslatorRuleStatementAssert.assertIs(assertContext,
(ShowSQLTranslatorRuleStatement) actual,
(ShowSQLTranslatorRuleStatementTestCase) expected);
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/advanced/PreviewStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rul/RULStatementAssert.java
similarity index 56%
copy from
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/advanced/PreviewStatementAssert.java
copy to
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rul/RULStatementAssert.java
index 89819a4e085..f0b63a6b321 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/advanced/PreviewStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rul/RULStatementAssert.java
@@ -15,32 +15,32 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.ral.impl.advanced;
+package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rul;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.PreviewStatement;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.distsql.parser.statement.rul.RULStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rul.SQLRULStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.PreviewStatementTestCase;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rul.impl.SQLRULStatementAssert;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
/**
- * Preview statement assert.
+ * RUL statement assert.
*/
-public final class PreviewStatementAssert {
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class RULStatementAssert {
/**
- * Assert preview statement is correct with expected parser result.
+ * Assert RUL statement is correct with expected parser result.
*
* @param assertContext assert context
- * @param actual actual preview statement
- * @param expected expected preview statement test case
+ * @param actual actual RUL statement
+ * @param expected expected RUL statement test case
*/
- public static void assertIs(final SQLCaseAssertContext assertContext,
final PreviewStatement actual, final PreviewStatementTestCase expected) {
- if (null == expected) {
- assertNull(assertContext.getText("Actual statement should not
exist."), actual);
- } else {
- assertNotNull(assertContext.getText("Actual statement should
exist."), actual);
+ public static void assertIs(final SQLCaseAssertContext assertContext,
final RULStatement actual, final SQLParserTestCase expected) {
+ if (actual instanceof SQLRULStatement) {
+ SQLRULStatementAssert.assertIs(assertContext, (SQLRULStatement)
actual, expected);
}
}
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/DistSQLStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rul/impl/SQLRULStatementAssert.java
similarity index 52%
copy from
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/DistSQLStatementAssert.java
copy to
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rul/impl/SQLRULStatementAssert.java
index a5ade2d2c3c..c833560dbb3 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/DistSQLStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rul/impl/SQLRULStatementAssert.java
@@ -15,40 +15,38 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql;
+package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rul.impl;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.distsql.parser.statement.DistSQLStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.RALStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.RDLStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rql.RQLStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rul.SQLRULStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.ParseStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.PreviewStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.ral.RALStatementAssert;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.RDLStatementAssert;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.RQLStatementAssert;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rul.impl.sql.ParseStatementAssert;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rul.impl.sql.PreviewStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rul.ParseStatementTestCase;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rul.PreviewStatementTestCase;
/**
- * DistSQL statement assert.
+ * SQL RUL statement assert.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DistSQLStatementAssert {
+public final class SQLRULStatementAssert {
/**
- * Assert dist sql statement is correct with expected parser result.
+ * Assert SQL RUL statement is correct with expected parser result.
*
* @param assertContext assert context
- * @param actual actual dist sql statement
- * @param expected expected dist sql statement test case
+ * @param actual actual SQL RUL statement
+ * @param expected expected SQL RUL statement test case
*/
- public static void assertIs(final SQLCaseAssertContext assertContext,
final DistSQLStatement actual, final SQLParserTestCase expected) {
- if (actual instanceof RDLStatement) {
- RDLStatementAssert.assertIs(assertContext, (RDLStatement) actual,
expected);
- } else if (actual instanceof RQLStatement) {
- RQLStatementAssert.assertIs(assertContext, (RQLStatement) actual,
expected);
- } else if (actual instanceof RALStatement) {
- RALStatementAssert.assertIs(assertContext, (RALStatement) actual,
expected);
+ public static void assertIs(final SQLCaseAssertContext assertContext,
final SQLRULStatement actual, final SQLParserTestCase expected) {
+ if (actual instanceof PreviewStatement) {
+ PreviewStatementAssert.assertIs(assertContext, (PreviewStatement)
actual, (PreviewStatementTestCase) expected);
+ } else if (actual instanceof ParseStatement) {
+ ParseStatementAssert.assertIs(assertContext, (ParseStatement)
actual, (ParseStatementTestCase) expected);
}
}
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/advanced/ParseStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rul/impl/sql/ParseStatementAssert.java
similarity index 91%
rename from
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/advanced/ParseStatementAssert.java
rename to
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rul/impl/sql/ParseStatementAssert.java
index 47d53001e6c..85eac1aa752 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/advanced/ParseStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rul/impl/sql/ParseStatementAssert.java
@@ -15,11 +15,11 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.ral.impl.advanced;
+package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rul.impl.sql;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.ParseStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.ParseStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ParseStatementTestCase;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rul.ParseStatementTestCase;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNotNull;
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/advanced/PreviewStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rul/impl/sql/PreviewStatementAssert.java
similarity index 82%
rename from
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/advanced/PreviewStatementAssert.java
rename to
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rul/impl/sql/PreviewStatementAssert.java
index 89819a4e085..0631aecddfe 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/ral/impl/advanced/PreviewStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rul/impl/sql/PreviewStatementAssert.java
@@ -15,14 +15,16 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.ral.impl.advanced;
+package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rul.impl.sql;
-import
org.apache.shardingsphere.distsql.parser.statement.ral.advanced.PreviewStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rul.sql.PreviewStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.PreviewStatementTestCase;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rul.PreviewStatementTestCase;
+import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
/**
* Preview statement assert.
@@ -41,6 +43,7 @@ public final class PreviewStatementAssert {
assertNull(assertContext.getText("Actual statement should not
exist."), actual);
} else {
assertNotNull(assertContext.getText("Actual statement should
exist."), actual);
+ assertThat(assertContext.getText("SQL assertion error"),
actual.getSql(), is(expected.getSql()));
}
}
}
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 90310ac6c58..5464dbe5ac3 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
@@ -275,9 +275,9 @@ import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ExportDatabaseConfigurationStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ImportDatabaseConfigurationStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.LabelInstanceStatementTestCase;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ParseStatementTestCase;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rul.ParseStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.PrepareDistSQLStatementTestCase;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.PreviewStatementTestCase;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rul.PreviewStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.RefreshTableMetadataStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.SetReadwriteSplittingHintStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.SetShardingHintDatabaseValueStatementTestCase;
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/ral/ParseStatementTestCase.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rul/ParseStatementTestCase.java
similarity index 96%
rename from
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/ral/ParseStatementTestCase.java
rename to
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rul/ParseStatementTestCase.java
index 50537fe9fa9..73e7cd69af6 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/ral/ParseStatementTestCase.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rul/ParseStatementTestCase.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral;
+package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rul;
import lombok.Getter;
import lombok.Setter;
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/ral/PreviewStatementTestCase.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rul/PreviewStatementTestCase.java
similarity index 83%
rename from
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/ral/PreviewStatementTestCase.java
rename to
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rul/PreviewStatementTestCase.java
index 50bf6187fd5..a7f42e6fe96 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/ral/PreviewStatementTestCase.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rul/PreviewStatementTestCase.java
@@ -15,12 +15,21 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral;
+package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rul;
+import lombok.Getter;
+import lombok.Setter;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+import javax.xml.bind.annotation.XmlAttribute;
+
/**
* Preview statement test case.
*/
+@Getter
+@Setter
public final class PreviewStatementTestCase extends SQLParserTestCase {
+
+ @XmlAttribute(name = "sql")
+ private String sql;
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ral/advance.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rul/sql.xml
similarity index 92%
rename from
shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ral/advance.xml
rename to
shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rul/sql.xml
index 67a052bf0d1..48e269fe133 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ral/advance.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rul/sql.xml
@@ -17,6 +17,6 @@
-->
<sql-parser-test-cases>
- <preview-sql sql-case-id="preview-sql" />
+ <preview-sql sql-case-id="preview-sql" sql="SELECT * FROM t_order;"/>
<parse-sql sql-case-id="parse-sql" sql="SELECT * FROM t_order;" />
</sql-parser-test-cases>