This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 23f9f718ad8 Complete parse result of ShowStatement (#19833)
23f9f718ad8 is described below
commit 23f9f718ad86e06a1d62d3e0d1f64a1c32c00ecc
Author: 吴伟杰 <[email protected]>
AuthorDate: Wed Aug 3 15:42:29 2022 +0800
Complete parse result of ShowStatement (#19833)
* Complete parse result of ShowStatement
* Complete parser tests for ShowStatement
* Complete ShardingResultMergerEngineTest
---
.../sharding/merge/ShardingResultMergerEngineTest.java | 2 +-
.../statement/impl/OpenGaussDALStatementSQLVisitor.java | 14 +++++++++++++-
.../statement/impl/PostgreSQLDALStatementSQLVisitor.java | 14 +++++++++++++-
.../sql/parser/sql/common/statement/dal/ShowStatement.java | 6 ++++++
.../statement/opengauss/dal/OpenGaussShowStatement.java | 4 ++++
.../statement/postgresql/dal/PostgreSQLShowStatement.java | 4 ++++
.../asserts/statement/dal/DALStatementAssert.java | 6 +++---
.../asserts/statement/dal/impl/ShowStatementAssert.java | 8 ++++++--
.../cases/domain/statement/dal/ShowStatementTestCase.java | 9 +++++++++
.../src/main/resources/case/dal/show.xml | 10 ++++++----
.../src/main/resources/sql/supported/dal/show.xml | 2 ++
11 files changed, 67 insertions(+), 12 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
index d3a6fcffb47..b00d8e1af94 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
@@ -97,7 +97,7 @@ public final class ShardingResultMergerEngineTest {
@Test
public void assertNewInstanceWithDALStatement() {
ConfigurationProperties props = new ConfigurationProperties(new
Properties());
- CommonSQLStatementContext<PostgreSQLShowStatement> sqlStatementContext
= new CommonSQLStatementContext<>(new PostgreSQLShowStatement());
+ CommonSQLStatementContext<PostgreSQLShowStatement> sqlStatementContext
= new CommonSQLStatementContext<>(new PostgreSQLShowStatement(""));
assertThat(new
ShardingResultMergerEngine().newInstance(DefaultDatabase.LOGIC_NAME,
DatabaseTypeFactory.getInstance("MySQL"), null, props,
sqlStatementContext),
instanceOf(ShardingDALResultMerger.class));
}
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDALStatementSQLVisitor.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDALStatementSQLVisitor.java
index e5614a20ead..83d4fb92a05 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDALStatementSQLVisitor.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/impl/OpenGaussDALStatementSQLVisitor.java
@@ -64,7 +64,19 @@ public final class OpenGaussDALStatementSQLVisitor extends
OpenGaussStatementSQL
@Override
public ASTNode visitShow(final ShowContext ctx) {
- return new OpenGaussShowStatement();
+ if (null != ctx.varName()) {
+ return new OpenGaussShowStatement(ctx.varName().getText());
+ }
+ if (null != ctx.ZONE()) {
+ return new OpenGaussShowStatement("timezone");
+ }
+ if (null != ctx.ISOLATION()) {
+ return new OpenGaussShowStatement("transaction_isolation");
+ }
+ if (null != ctx.AUTHORIZATION()) {
+ return new OpenGaussShowStatement("session_authorization");
+ }
+ return new OpenGaussShowStatement("ALL");
}
@Override
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDALStatementSQLVisitor.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDALStatementSQLVisitor.java
index dee67419a8a..e8bfcff1047 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDALStatementSQLVisitor.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/impl/PostgreSQLDALStatementSQLVisitor.java
@@ -64,7 +64,19 @@ public final class PostgreSQLDALStatementSQLVisitor extends
PostgreSQLStatementS
@Override
public ASTNode visitShow(final ShowContext ctx) {
- return new PostgreSQLShowStatement();
+ if (null != ctx.varName()) {
+ return new PostgreSQLShowStatement(ctx.varName().getText());
+ }
+ if (null != ctx.ZONE()) {
+ return new PostgreSQLShowStatement("timezone");
+ }
+ if (null != ctx.ISOLATION()) {
+ return new PostgreSQLShowStatement("transaction_isolation");
+ }
+ if (null != ctx.AUTHORIZATION()) {
+ return new PostgreSQLShowStatement("session_authorization");
+ }
+ return new PostgreSQLShowStatement("ALL");
}
@Override
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/dal/ShowStatement.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/dal/ShowStatement.java
index d0392dc1f55..5605e915d93 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/dal/ShowStatement.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/dal/ShowStatement.java
@@ -17,12 +17,18 @@
package org.apache.shardingsphere.sql.parser.sql.common.statement.dal;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import lombok.ToString;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
/**
* Show statement.
*/
+@RequiredArgsConstructor
+@Getter
@ToString(callSuper = true)
public abstract class ShowStatement extends AbstractSQLStatement implements
DALStatement {
+
+ private final String name;
}
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/opengauss/dal/OpenGaussShowStatement.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/opengauss/dal/OpenGaussShowStatement.java
index 355ca62abc5..51d11eab29f 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/opengauss/dal/OpenGaussShowStatement.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/opengauss/dal/OpenGaussShowStatement.java
@@ -26,4 +26,8 @@ import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.Open
*/
@ToString(callSuper = true)
public final class OpenGaussShowStatement extends ShowStatement implements
OpenGaussStatement {
+
+ public OpenGaussShowStatement(final String name) {
+ super(name);
+ }
}
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/postgresql/dal/PostgreSQLShowStatement.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/postgresql/dal/PostgreSQLShowStatement.java
index 07136f880ae..4c7e05e3158 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/postgresql/dal/PostgreSQLShowStatement.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/postgresql/dal/PostgreSQLShowStatement.java
@@ -26,4 +26,8 @@ import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.Pos
*/
@ToString(callSuper = true)
public final class PostgreSQLShowStatement extends ShowStatement implements
PostgreSQLStatement {
+
+ public PostgreSQLShowStatement(final String name) {
+ super(name);
+ }
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dal/DALStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dal/DALStatementAssert.java
index 2d3f0cdbe34..3c31cfd54f7 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dal/DALStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dal/DALStatementAssert.java
@@ -23,6 +23,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatemen
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.ExplainStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.ResetParameterStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.SetStatement;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.ShowStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLAlterResourceGroupStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLBinlogStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLCacheIndexStatement;
@@ -70,7 +71,6 @@ import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQ
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLUninstallComponentStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLUninstallPluginStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLUseStatement;
-import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.dal.PostgreSQLShowStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dal.impl.CacheIndexStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dal.impl.CheckTableStatementAssert;
@@ -212,8 +212,8 @@ public final class DALStatementAssert {
ShowIndexStatementAssert.assertIs(assertContext,
(MySQLShowIndexStatement) actual, (ShowIndexStatementTestCase) expected);
} else if (actual instanceof MySQLShowRelaylogEventsStatement) {
ShowRelaylogEventsStatementAssert.assertIs(assertContext,
(MySQLShowRelaylogEventsStatement) actual,
(ShowRelaylogEventsStatementTestCase) expected);
- } else if (actual instanceof PostgreSQLShowStatement) {
- ShowStatementAssert.assertIs(assertContext,
(PostgreSQLShowStatement) actual, (ShowStatementTestCase) expected);
+ } else if (actual instanceof ShowStatement) {
+ ShowStatementAssert.assertIs(assertContext, (ShowStatement)
actual, (ShowStatementTestCase) expected);
} else if (actual instanceof SetStatement) {
SetParameterStatementAssert.assertIs(assertContext, (SetStatement)
actual, (SetParameterStatementTestCase) expected);
} else if (actual instanceof ResetParameterStatement) {
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dal/impl/ShowStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dal/impl/ShowStatementAssert.java
index 07a468db4f3..34eb732b896 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dal/impl/ShowStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dal/impl/ShowStatementAssert.java
@@ -19,10 +19,13 @@ package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statemen
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.dal.PostgreSQLShowStatement;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.ShowStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.ShowStatementTestCase;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
/**
* Show statement assert.
*/
@@ -36,6 +39,7 @@ public final class ShowStatementAssert {
* @param actual actual show statement
* @param expected expected show statement test case
*/
- public static void assertIs(final SQLCaseAssertContext assertContext,
final PostgreSQLShowStatement actual, final ShowStatementTestCase expected) {
+ public static void assertIs(final SQLCaseAssertContext assertContext,
final ShowStatement actual, final ShowStatementTestCase expected) {
+ assertThat(assertContext.getText("Name assertion error: "),
actual.getName(), is(expected.getName()));
}
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dal/ShowStatementTestCase.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dal/ShowStatementTestCase.java
index 0a0b16b4dd1..7e985f2b580 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dal/ShowStatementTestCase.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dal/ShowStatementTestCase.java
@@ -17,10 +17,19 @@
package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal;
+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;
+
/**
* Show statement test case.
*/
+@Getter
+@Setter
public final class ShowStatementTestCase extends SQLParserTestCase {
+
+ @XmlAttribute(name = "name")
+ private String name;
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dal/show.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dal/show.xml
index ddbfc250720..297fbc07918 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dal/show.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dal/show.xml
@@ -144,9 +144,11 @@
<user name="user1" start-index="17" stop-index="24" />
</show-create-user>
- <show sql-case-id="show_all" />
- <show sql-case-id="show_server_version" />
- <show sql-case-id="show_transaction_isolation_level" />
+ <show sql-case-id="show_all" name="ALL" />
+ <show sql-case-id="show_server_version" name="SERVER_VERSION" />
+ <show sql-case-id="show_transaction_isolation_level"
name="transaction_isolation" />
+ <show sql-case-id="show_time_zone" name="timezone" />
+ <show sql-case-id="show_session_authorization"
name="session_authorization" />
<show-databases sql-case-id="show_databases" />
@@ -864,5 +866,5 @@
<show sql-case-id="show_charset" />
<show sql-case-id="show_warnings_limit" />
<show sql-case-id="show_warnings_count" />
- <show sql-case-id="show_search_path" />
+ <show sql-case-id="show_search_path" name="search_path" />
</sql-parser-test-cases>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dal/show.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dal/show.xml
index c297a798863..49998533b5d 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dal/show.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dal/show.xml
@@ -39,6 +39,8 @@
<sql-case id="show_all" value="SHOW ALL" db-types="PostgreSQL,openGauss" />
<sql-case id="show_server_version" value="SHOW SERVER_VERSION"
db-types="PostgreSQL,openGauss" />
<sql-case id="show_transaction_isolation_level" value="SHOW TRANSACTION
ISOLATION LEVEL" db-types="PostgreSQL,openGauss" />
+ <sql-case id="show_time_zone" value="SHOW TIME ZONE"
db-types="PostgreSQL,openGauss" />
+ <sql-case id="show_session_authorization" value="SHOW SESSION
AUTHORIZATION" db-types="PostgreSQL,openGauss" />
<sql-case id="show_databases" value="SHOW DATABASES" db-types="MySQL" />
<sql-case id="show_schemas" value="SHOW SCHEMAS" db-types="MySQL" />
<sql-case id="show_databases_with_like" value="SHOW DATABASES LIKE
'sharding_db'" db-types="MySQL" />