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" />

Reply via email to