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 9417093  Adjust `SHOW BINLOG EVENTS` and `SHOW COLUMNS` statement 
(#14761)
9417093 is described below

commit 941709309b86c06a92307f687684ecd937fbf00d
Author: Guocheng Tang <[email protected]>
AuthorDate: Fri Jan 14 15:39:14 2022 +0800

    Adjust `SHOW BINLOG EVENTS` and `SHOW COLUMNS` statement (#14761)
---
 .../binary/prepare/MySQLComStmtPrepareChecker.java |  4 +-
 .../prepare/MySQLComStmtPrepareCheckerTest.java    |  4 +-
 .../src/main/antlr4/imports/mysql/DALStatement.g4  |  4 +-
 .../impl/MySQLDALStatementSQLVisitor.java          | 12 ++++-
 ...nt.java => MySQLShowBinlogEventsStatement.java} | 13 ++++-
 .../asserts/statement/dal/DALStatementAssert.java  |  5 ++
 .../dal/impl/ShowBinlogEventsStatementAssert.java  | 60 ++++++++++++++++++++++
 .../jaxb/cases/domain/SQLParserTestCases.java      |  5 ++
 .../dal/ShowBinlogEventsStatementTestCase.java     | 26 +++++++---
 .../src/main/resources/case/dal/show.xml           | 52 ++++++++++++++++++-
 .../src/main/resources/sql/supported/dal/show.xml  |  8 +++
 11 files changed, 174 insertions(+), 19 deletions(-)

diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareChecker.java
 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareChecker.java
index 5b8caec..283e6f2 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareChecker.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareChecker.java
@@ -32,7 +32,7 @@ import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQ
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLResetStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLSetStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowBinaryLogsStatement;
-import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowBinlogStatement;
+import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowBinlogEventsStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowCreateEventStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowCreateFunctionStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowCreateProcedureStatement;
@@ -94,7 +94,7 @@ public final class MySQLComStmtPrepareChecker {
             MySQLGrantStatement.class, MySQLInsertStatement.class, 
MySQLInstallPluginStatement.class, MySQLKillStatement.class, 
MySQLLoadIndexInfoStatement.class,
             MySQLOptimizeTableStatement.class, 
MySQLRenameTableStatement.class, MySQLRepairTableStatement.class, 
MySQLResetStatement.class,
             MySQLRevokeStatement.class, MySQLSelectStatement.class, 
MySQLSetStatement.class, MySQLShowWarningsStatement.class, 
MySQLShowErrorsStatement.class,
-            MySQLShowBinlogStatement.class, 
MySQLShowCreateProcedureStatement.class, 
MySQLShowCreateFunctionStatement.class, MySQLShowCreateEventStatement.class,
+            MySQLShowBinlogEventsStatement.class, 
MySQLShowCreateProcedureStatement.class, 
MySQLShowCreateFunctionStatement.class, MySQLShowCreateEventStatement.class,
             MySQLShowCreateTableStatement.class, 
MySQLShowCreateViewStatement.class, MySQLShowBinaryLogsStatement.class, 
MySQLShowStatusStatement.class,
             MySQLStartSlaveStatement.class, MySQLStopSlaveStatement.class, 
MySQLTruncateStatement.class, MySQLUninstallPluginStatement.class, 
MySQLUpdateStatement.class, MySQLXAStatement.class));
     }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareCheckerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareCheckerTest.java
index 55c1b5d..94ed628 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareCheckerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareCheckerTest.java
@@ -30,7 +30,7 @@ import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQ
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLResetStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLSetStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowBinaryLogsStatement;
-import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowBinlogStatement;
+import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowBinlogEventsStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowCreateEventStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowCreateFunctionStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowCreateProcedureStatement;
@@ -88,7 +88,7 @@ public final class MySQLComStmtPrepareCheckerTest {
             new MySQLGrantStatement(), new MySQLInsertStatement(), new 
MySQLInstallPluginStatement(), new MySQLKillStatement(), 
             new MySQLLoadIndexInfoStatement(), new 
MySQLOptimizeTableStatement(), new MySQLRenameTableStatement(), new 
MySQLRepairTableStatement(), 
             new MySQLResetStatement(), new MySQLRevokeStatement(), new 
MySQLSelectStatement(), new MySQLSetStatement(), new 
MySQLShowWarningsStatement(),
-            new MySQLShowErrorsStatement(), new MySQLShowBinlogStatement(), 
new MySQLShowCreateProcedureStatement(), new 
MySQLShowCreateFunctionStatement(), new MySQLShowCreateEventStatement(),
+            new MySQLShowErrorsStatement(), new 
MySQLShowBinlogEventsStatement(), new MySQLShowCreateProcedureStatement(), new 
MySQLShowCreateFunctionStatement(), new MySQLShowCreateEventStatement(),
             new MySQLShowCreateTableStatement(), new 
MySQLShowCreateViewStatement(), new MySQLShowBinaryLogsStatement(), new 
MySQLShowStatusStatement(), new MySQLStartSlaveStatement(),
             new MySQLStopSlaveStatement(), new MySQLTruncateStatement(), new 
MySQLUninstallPluginStatement(), new MySQLUpdateStatement(), new 
MySQLXAStatement());
         for (SQLStatement each : sqlStatements) {
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/antlr4/imports/mysql/DALStatement.g4
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/antlr4/imports/mysql/DALStatement.g4
index a1e1c54..71ea726 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/antlr4/imports/mysql/DALStatement.g4
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/antlr4/imports/mysql/DALStatement.g4
@@ -47,7 +47,7 @@ showTableStatus
     ;
 
 showColumns
-    : SHOW EXTENDED? FULL? COLUMNS fromTable fromSchema? showFilter?
+    : SHOW EXTENDED? FULL? (COLUMNS | FIELDS) fromTable fromSchema? showFilter?
     ;
 
 showIndex
@@ -107,7 +107,7 @@ showBinaryLogs
     ;
 
 showBinlogEvents
-    : SHOW BINLOG EVENTS (IN DEFINER)? (FROM NUMBER_)? (LIMIT (NUMBER_ 
COMMA_)? NUMBER_)?
+    : SHOW BINLOG EVENTS (IN logName)? (FROM NUMBER_)? limitClause?
     ;
 
 showCharacterSet
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDALStatementSQLVisitor.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDALStatementSQLVisitor.java
index 6ea6c14..adad557 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDALStatementSQLVisitor.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDALStatementSQLVisitor.java
@@ -122,6 +122,7 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSe
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.FunctionSegment;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.pagination.limit.LimitSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.WhereSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.SchemaSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
@@ -156,7 +157,7 @@ import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQ
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLSetResourceGroupStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLSetStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowBinaryLogsStatement;
-import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowBinlogStatement;
+import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowBinlogEventsStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowCharacterSetStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowCollationStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowColumnsStatement;
@@ -284,7 +285,14 @@ public final class MySQLDALStatementSQLVisitor extends 
MySQLStatementSQLVisitor
     
     @Override
     public ASTNode visitShowBinlogEvents(final ShowBinlogEventsContext ctx) {
-        return new MySQLShowBinlogStatement();
+        MySQLShowBinlogEventsStatement result = new 
MySQLShowBinlogEventsStatement();
+        if (null != ctx.logName()) {
+            result.setLogName(ctx.logName().getText());
+        }
+        if (null != ctx.limitClause()) {
+            result.setLimit((LimitSegment) visit(ctx.limitClause()));
+        }
+        return result;
     }
     
     @Override
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowBinlogStatement.java
 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowBinlogEventsStatement.java
similarity index 75%
copy from 
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowBinlogStatement.java
copy to 
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowBinlogEventsStatement.java
index aa47c6f..256d38c 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowBinlogStatement.java
+++ 
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowBinlogEventsStatement.java
@@ -17,14 +17,23 @@
 
 package org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal;
 
+import lombok.Getter;
+import lombok.Setter;
 import lombok.ToString;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.pagination.limit.LimitSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.MySQLStatement;
 
 /**
- * MySQL show binlog statement.
+ * MySQL show binlog events statement.
  */
+@Getter
+@Setter
 @ToString
-public final class MySQLShowBinlogStatement extends AbstractSQLStatement 
implements DALStatement, MySQLStatement {
+public final class MySQLShowBinlogEventsStatement extends AbstractSQLStatement 
implements DALStatement, MySQLStatement {
+    
+    private String logName;
+    
+    private LimitSegment limit;
 }
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 25b44eb..5f356f6 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
@@ -42,6 +42,7 @@ import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQ
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLResetStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLRestartStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLSetResourceGroupStatement;
+import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowBinlogEventsStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowCollationStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowColumnsStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowCreateTableStatement;
@@ -93,6 +94,7 @@ import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dal.impl.MySQLUseStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dal.impl.RestartStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dal.impl.SetParameterStatementAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dal.impl.ShowBinlogEventsStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dal.impl.ShowCollationStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dal.impl.ShowColumnsStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dal.impl.ShowCreateTableStatementAssert;
@@ -142,6 +144,7 @@ import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.RestartStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.SetParameterStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.SetResourceGroupStatementTestCase;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.ShowBinlogEventsStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.ShowCollationStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.ShowColumnsStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.ShowCreateTableStatementTestCase;
@@ -282,6 +285,8 @@ public final class DALStatementAssert {
             ShowVariablesStatementAssert.assertIs(assertContext, 
(MySQLShowVariablesStatement) actual, (ShowVariablesStatementTestCase) 
expected);
         } else if (actual instanceof MySQLDelimiterStatement) {
             MySQLDelimiterStatementAssert.assertIs(assertContext, 
(MySQLDelimiterStatement) actual, (DelimiterStatementTestCase) expected);
+        } else if (actual instanceof MySQLShowBinlogEventsStatement) {
+            ShowBinlogEventsStatementAssert.assertIs(assertContext, 
(MySQLShowBinlogEventsStatement) actual, (ShowBinlogEventsStatementTestCase) 
expected);
         }
     }
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dal/impl/ShowBinlogEventsStatementAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dal/impl/ShowBinlogEventsStatementAssert.java
new file mode 100644
index 0000000..35a3ffb
--- /dev/null
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dal/impl/ShowBinlogEventsStatementAssert.java
@@ -0,0 +1,60 @@
+/*
+ * 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.test.sql.parser.parameterized.asserts.statement.dal.impl;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowBinlogEventsStatement;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.limit.LimitClauseAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.ShowBinlogEventsStatementTestCase;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Show binlog events statement assert.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class ShowBinlogEventsStatementAssert {
+    
+    /**
+     * Assert show binlog events statement is correct with expected parser 
result.
+     *
+     * @param assertContext assert context
+     * @param actual actual show binlog events statement
+     * @param expected expected show binlog events statement test case
+     */
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final MySQLShowBinlogEventsStatement actual, final 
ShowBinlogEventsStatementTestCase expected) {
+        if (null != expected.getLogName()) {
+            assertNotNull(assertContext.getText("Actual logName should 
exist."), actual.getLogName());
+            assertThat(actual.getLogName(), is(expected.getLogName()));
+        } else {
+            assertNull(assertContext.getText("Actual logName should not 
exist."), actual.getLogName());
+        }
+        if (null != expected.getLimitClause()) {
+            assertNotNull(assertContext.getText("Actual limit clause should 
exist."), actual.getLimit());
+            LimitClauseAssert.assertOffset(assertContext, 
actual.getLimit().getOffset().get(), expected.getLimitClause().getOffset());
+            LimitClauseAssert.assertRowCount(assertContext, 
actual.getLimit().getRowCount().get(), expected.getLimitClause().getRowCount());
+        } else {
+            assertNull(assertContext.getText("Actual limit clause should not 
exist."), actual.getLimit());
+        }
+    }
+}
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 0e5dad9..e4d5d3b 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
@@ -43,6 +43,7 @@ import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.ResetStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.SetParameterStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.SetResourceGroupStatementTestCase;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.ShowBinlogEventsStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.ShowCharacterSetStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.ShowCollationStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal.ShowColumnsStatementTestCase;
@@ -1007,6 +1008,9 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "show-unused-sharding-key-generators")
     private final List<ShowUnusedShardingKeyGeneratorsStatementTestCase> 
showUnusedShardingKeyGeneratorsStatementTestCases = new LinkedList<>();
+
+    @XmlElement(name = "show-binlog-events")
+    private final List<ShowBinlogEventsStatementTestCase> 
showBinlogEventsStatementTestCases = new LinkedList<>();
     
     /**
      * Get all SQL parser test cases.
@@ -1259,6 +1263,7 @@ public final class SQLParserTestCases {
         putAll(tableStatementTestCases, result);
         putAll(showUnusedShardingKeyGeneratorsStatementTestCases, result);
         putAll(renameTableStatementTestCases, result);
+        putAll(showBinlogEventsStatementTestCases, result);
         return result;
     }
     // CHECKSTYLE:ON
diff --git 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowBinlogStatement.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dal/ShowBinlogEventsStatementTestCase.java
similarity index 51%
rename from 
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowBinlogStatement.java
rename to 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dal/ShowBinlogEventsStatementTestCase.java
index aa47c6f..5759c1c 100644
--- 
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/dal/MySQLShowBinlogStatement.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dal/ShowBinlogEventsStatementTestCase.java
@@ -15,16 +15,26 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal;
+package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dal;
 
-import lombok.ToString;
-import 
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
-import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
-import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.MySQLStatement;
+import lombok.Getter;
+import lombok.Setter;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.limit.ExpectedLimitClause;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
 
 /**
- * MySQL show binlog statement.
+ * MySQL show binlog events statement test case.
  */
-@ToString
-public final class MySQLShowBinlogStatement extends AbstractSQLStatement 
implements DALStatement, MySQLStatement {
+@Getter
+@Setter
+public final class ShowBinlogEventsStatementTestCase extends SQLParserTestCase 
{
+
+    @XmlAttribute(name = "log-name")
+    private String logName;
+    
+    @XmlElement(name = "limit")
+    private ExpectedLimitClause limitClause;
 }
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 e82ff08..472e8e2 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
@@ -69,7 +69,7 @@
             <like pattern="order_%" start-delimiter="'" end-delimiter="'" 
start-index="28" stop-index="41"/>
         </filter>
     </show-columns>
-
+    
     <show-columns sql-case-id="show_columns_with_where_expr" 
parameters="'order_id'">
         <table name="t_order" start-delimiter="`" end-delimiter="`" 
start-index="18" stop-index="26"/>
         <filter start-index="28" stop-index="42" literal-stop-index="51">
@@ -89,6 +89,48 @@
             </where>
         </filter>
     </show-columns>
+    
+    <show-columns sql-case-id="show_columns_by_fields_from_table">
+        <table name="t_order" start-delimiter="`" end-delimiter="`" 
start-index="17" stop-index="25"/>
+    </show-columns>
+
+    <show-columns sql-case-id="show_columns_by_fields_from_table_with_owner">
+        <table name="t_order" start-delimiter="`" end-delimiter="`" 
start-index="17" stop-index="39">
+            <owner name="sharding_db" start-delimiter="`" end-delimiter="`" 
start-index="17" stop-index="29" />
+        </table>
+    </show-columns>
+
+    <show-columns sql-case-id="show_columns_by_fields_with_schema">
+        <table name="t_order" start-delimiter="`" end-delimiter="`" 
start-index="17" stop-index="25"/>
+        <schema name="sharding_db" start-delimiter="`" end-delimiter="`" 
start-index="32" stop-index="44"/>
+    </show-columns>
+
+    <show-columns sql-case-id="show_columns_by_fields_with_like_pattern">
+        <table name="t_order" start-delimiter="`" end-delimiter="`" 
start-index="17" stop-index="25"/>
+        <filter start-index="27" stop-index="40">
+            <like pattern="order_%" start-delimiter="'" end-delimiter="'" 
start-index="27" stop-index="40"/>
+        </filter>
+    </show-columns>
+
+    <show-columns sql-case-id="show_columns_by_fields_with_where_expr" 
parameters="'order_id'">
+        <table name="t_order" start-delimiter="`" end-delimiter="`" 
start-index="17" stop-index="25"/>
+        <filter start-index="27" stop-index="41" literal-stop-index="50">
+            <where start-index="27" stop-index="41" literal-stop-index="50">
+                <expr>
+                    <binary-operation-expression start-index="33" 
stop-index="41" literal-stop-index="50">
+                        <left>
+                            <column name="field" start-index="33" 
stop-index="37" />
+                        </left>
+                        <operator>=</operator>
+                        <right>
+                            <literal-expression value="order_id" 
start-index="41" stop-index="50" />
+                            <parameter-marker-expression value="0" 
start-index="41" stop-index="41" />
+                        </right>
+                    </binary-operation-expression>
+                </expr>
+            </where>
+        </filter>
+    </show-columns>
 
     <show-create-table sql-case-id="show_create_table">
         <table name="t_order" start-delimiter="`" end-delimiter="`" 
start-index="18" stop-index="26"/>
@@ -789,4 +831,12 @@
             </where>
         </filter>
     </show-variables>
+    <show-binlog-events sql-case-id="show_binlog_events_with_log_name" 
log-name="'log_name'" />
+    <show-binlog-events sql-case-id="show_binlog_events_with_from_pos" />
+    <show-binlog-events sql-case-id="show_binlog_events_with_limit">
+        <limit literal-start-index="40" literal-stop-index="55">
+            <offset value="1" literal-start-index="25" literal-stop-index="25" 
/>
+            <row-count value="2" literal-start-index="27" 
literal-stop-index="27" />
+        </limit>
+    </show-binlog-events>
 </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 c13c8d7..393af1c 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
@@ -28,6 +28,11 @@
     <sql-case id="show_columns_with_schema" value="SHOW COLUMNS FROM `t_order` 
FROM `sharding_db`" db-types="MySQL" />
     <sql-case id="show_columns_with_like_pattern" value="SHOW COLUMNS FROM 
`t_order` LIKE 'order_%'" db-types="MySQL" />
     <sql-case id="show_columns_with_where_expr" value="SHOW COLUMNS FROM 
`t_order` WHERE field = ?" db-types="MySQL" />
+    <sql-case id="show_columns_by_fields_from_table" value="SHOW FIELDS FROM 
`t_order`" db-types="MySQL" />
+    <sql-case id="show_columns_by_fields_from_table_with_owner" value="SHOW 
FIELDS FROM `sharding_db`.`t_order`" db-types="MySQL" />
+    <sql-case id="show_columns_by_fields_with_schema" value="SHOW FIELDS FROM 
`t_order` FROM `sharding_db`" db-types="MySQL" />
+    <sql-case id="show_columns_by_fields_with_like_pattern" value="SHOW FIELDS 
FROM `t_order` LIKE 'order_%'" db-types="MySQL" />
+    <sql-case id="show_columns_by_fields_with_where_expr" value="SHOW FIELDS 
FROM `t_order` WHERE field = ?" db-types="MySQL" />
     <sql-case id="show_create_table" value="SHOW CREATE TABLE `t_order`" 
db-types="MySQL" />
     <sql-case id="show_create_trigger" value="SHOW CREATE TRIGGER `trigger1`" 
db-types="MySQL" />
     <sql-case id="show_create_user" value="SHOW CREATE USER `user1`" 
db-types="MySQL" />
@@ -108,4 +113,7 @@
     <sql-case id="show_variables_with_like_pattern" value="SHOW SESSION 
VARIABLES LIKE '%size%'" db-types="MySQL" />
     <sql-case id="show_variables_with_where_expr" value="SHOW GLOBAL VARIABLES 
WHERE variable_name = ?" db-types="MySQL" />
     <sql-case id="show_variables_with_where_expr_no_parameter" value="SHOW 
VARIABLES WHERE variable_name = 'max_join_size'" db-types="MySQL" />
+    <sql-case id="show_binlog_events_with_log_name" value="SHOW BINLOG EVENTS 
IN 'log_name'" db-types="MySQL" />
+    <sql-case id="show_binlog_events_with_from_pos" value="SHOW BINLOG EVENTS 
FROM 1" db-types="MySQL" />
+    <sql-case id="show_binlog_events_with_limit" value="SHOW BINLOG EVENTS 
LIMIT 1,2" db-types="MySQL" />
 </sql-cases>

Reply via email to