This is an automated email from the ASF dual-hosted git repository.

zhangliang 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 b5d8c1ab0c5 Remove SQL formatting feature (#35402)
b5d8c1ab0c5 is described below

commit b5d8c1ab0c59d7adb2b699d62752a189765ef10c
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Wed May 14 17:50:49 2025 +0800

    Remove SQL formatting feature (#35402)
    
    * Remove SQL formatting feature
    
    * Remove SQL formatting feature
---
 RELEASE-NOTES.md                                   |   2 +
 .../core/advice/SQLParseCountAdviceTest.java       |   8 +-
 .../content/reference/sharding/parse.cn.md         |  21 -
 .../content/reference/sharding/parse.en.md         |  21 -
 .../mysql/format/MySQLParserFormatExample.java     |  62 --
 .../engine/src/main/antlr4/imports/RULKeyword.g4   |   4 -
 .../engine/src/main/antlr4/imports/RULStatement.g4 |   4 -
 .../parser/autogen/UtilityDistSQLStatement.g4      |   1 -
 .../utility/UtilityDistSQLStatementVisitor.java    |   7 -
 .../distsql/statement/rul/sql/FormatStatement.java |  32 -
 .../mysql/visitor/format/MySQLFormatVisitor.java   | 847 ---------------------
 ....sql.parser.api.visitor.format.SQLFormatVisitor |  18 -
 .../mysql/visitor/format/MySQLFormatVisitorIT.java | 146 ----
 .../sql/parser/api/SQLFormatEngine.java            |  55 --
 .../api/visitor/format/SQLFormatVisitor.java       |  27 -
 .../handler/distsql/rul/FormatSQLExecutor.java     |  63 --
 ...stsql.handler.engine.query.DistSQLQueryExecutor |   1 -
 .../handler/distsql/rul/FormatSQLExecutorTest.java |  64 --
 .../asserts/statement/rul/RULStatementAssert.java  |   5 -
 .../rul/type/FormatSQLStatementAssert.java         |  48 --
 .../cases/parser/jaxb/RootSQLParserTestCases.java  |   4 -
 .../statement/rul/FormatSQLStatementTestCase.java  |  35 -
 test/it/parser/src/main/resources/case/rul/sql.xml |   1 -
 .../src/main/resources/sql/supported/rul/sql.xml   |   1 -
 24 files changed, 6 insertions(+), 1471 deletions(-)

diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 7a5096cadf1..15fc269f3da 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -11,6 +11,8 @@
 
 ### API Changes
 
+1. Remove SQL formatting feature 
[#35390](https://github.com/apache/shardingsphere/pull/35390)
+
 ### New Features
 
 ### Enhancements
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
index dfd4fcca4ff..d7bad0a2cc7 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
@@ -21,12 +21,12 @@ import 
org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
+import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
+import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.queryable.ShowMigrationListStatement;
 import 
org.apache.shardingsphere.distsql.statement.rdl.resource.unit.type.RegisterStorageUnitStatement;
 import 
org.apache.shardingsphere.distsql.statement.rql.resource.ShowStorageUnitsStatement;
-import org.apache.shardingsphere.distsql.statement.rul.sql.FormatStatement;
-import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.queryable.ShowMigrationListStatement;
+import org.apache.shardingsphere.distsql.statement.rul.sql.ParseStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.DatabaseSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.dal.MySQLShowDatabasesStatement;
@@ -112,7 +112,7 @@ class SQLParseCountAdviceTest {
     
     @Test
     void assertParseRUL() {
-        assertParse(new FormatStatement("SELECT * FROM tbl"), "RUL=1");
+        assertParse(new ParseStatement("SELECT * FROM tbl"), "RUL=1");
     }
     
     private void assertParse(final SQLStatement sqlStatement, final String 
expected) {
diff --git a/docs/document/content/reference/sharding/parse.cn.md 
b/docs/document/content/reference/sharding/parse.cn.md
index 9adbe71f60e..d27a4f9bd05 100644
--- a/docs/document/content/reference/sharding/parse.cn.md
+++ b/docs/document/content/reference/sharding/parse.cn.md
@@ -99,24 +99,3 @@ ParseASTNode parseASTNode = parserEngine.parse(sql, 
useCache);
 SQLVisitorEngine sqlVisitorEngine = new SQLVisitorEngine(sql, "STATEMENT", 
useCache, new Properties());
 SQLStatement sqlStatement = sqlVisitorEngine.visit(parseASTNode);
 ```
-
-- SQL 格式化
-
-```java
-new SQLFormatEngine(TypedSPILoader.getService(DatabaseType.class, "Mysql"), 
cacheOption)
-        .format(sql, false, null);
-```
-
-例子:
-
-| 原 SQL                                                                        
                                                                                
                                                                                
                                              | 格式化 SQL                         
                                                                                
                                                                                
              [...]
-|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 [...]
-| select a+1 as b, name n from table1 join table2 where id=1 and name='lu';    
                                                                                
                                                                                
                                              | SELECT a + 1 AS b, name 
n<br>FROM table1 JOIN table2<br>WHERE<br>&emsp;&emsp;&emsp;&emsp;id = 
1<br>&emsp;&emsp;&emsp;&emsp;and name = 'lu';                                   
                                [...]
-| select id, name, age, sex, ss, yy from table1 where id=1;                    
                                                                                
                                                                                
                                              | SELECT id , name , age , 
<br>&emsp;&emsp;&emsp;&emsp;sex , ss , yy <br>FROM table1<br>WHERE 
<br>&emsp;&emsp;&emsp;&emsp;id = 1;                                             
                                  [...]
-| select id, name, age, count(*) as n, (select id, name, age, sex from table2 
where id=2) as sid, yyyy from table1 where id=1;                                
                                                                                
                                               | SELECT id , name , age , 
<br>&emsp;&emsp;&emsp;&emsp;COUNT(*) AS n, 
<br>&emsp;&emsp;&emsp;&emsp;(<br>&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;SELECT
 id , name , age , <br>&emsp;&emsp;&emsp;&emsp;&em [...]
-| select id, name, age, sex, ss, yy from table1 where id=1 and name=1 and a=1 
and b=2 and c=4 and d=3;                                                        
                                                                                
                                               | SELECT id , name , age , 
<br>&emsp;&emsp;&emsp;&emsp;sex , ss , yy <br>FROM table1<br>WHERE 
<br>&emsp;&emsp;&emsp;&emsp;id = 1<br>&emsp;&emsp;&emsp;&emsp;and name = 
1<br>&emsp;&emsp;&emsp;&emsp;and a = 1<b [...]
-| ALTER TABLE t_order ADD column4 DATE, ADD column5 DATETIME, engine ss 
max_rows 10,min_rows 2, <br>ADD column6 TIMESTAMP, ADD column7 TIME;            
                                                                                
                                                     | ALTER TABLE 
t_order<br>&emsp;&emsp;&emsp;&emsp;ADD column4 
DATE,<br>&emsp;&emsp;&emsp;&emsp;ADD column5 
DATETIME,<br>&emsp;&emsp;&emsp;&emsp;ENGINE 
ss<br>&emsp;&emsp;&emsp;&emsp;MAX_ROWS 10,<br>&emsp;&emsp [...]
-| CREATE TABLE IF NOT EXISTS <br>`runoob_tbl`(`runoob_id` INT UNSIGNED 
AUTO_INCREMENT,`runoob_title` VARCHAR(100) NOT NULL,<br>`runoob_author` 
VARCHAR(40) NOT NULL,`runoob_test` NATIONAL CHAR(40),<br>`submission_date` 
DATE,PRIMARY KEY (`runoob_id`))ENGINE=InnoDB DEFAULT CHARSET=utf8; | CREATE 
TABLE IF NOT EXISTS `runoob_tbl` (<br>&emsp;&emsp;&emsp;&emsp;`runoob_id` INT 
UNSIGNED AUTO_INCREMENT,<br>&emsp;&emsp;&emsp;&emsp;`runoob_title` VARCHAR(100) 
NOT NULL,<br>&emsp;&emsp;&emsp;&emsp;`ru [...]
-| INSERT INTO t_order_item(order_id, user_id, status, creation_date) 
<br>values (1, 1, 'insert', '2017-08-08'), (2, 2, 'insert', '2017-08-08') ON 
DUPLICATE KEY UPDATE status = 'init';                                           
                                                           | INSERT  INTO 
t_order_item (order_id , user_id , status , 
creation_date)<br>VALUES<br>&emsp;&emsp;&emsp;&emsp;(1, 1, 'insert', 
'2017-08-08'),<br>&emsp;&emsp;&emsp;&emsp;(2, 2, 'insert', '2017-08-08')<br>ON  
[...]
-| INSERT INTO t_order SET order_id = 1, user_id = 1, status = 
convert(to_base64(aes_encrypt(1, 'key')) USING utf8)<br> ON DUPLICATE KEY 
UPDATE status = VALUES(status);                                                 
                                                                     | INSERT  
INTO t_order SET order_id = 1,<br>&emsp;&emsp;&emsp;&emsp;user_id = 
1,<br>&emsp;&emsp;&emsp;&emsp;status = CONVERT(to_base64(aes_encrypt(1 , 
'key')) USING utf8)<br>ON DUPLICATE KEY UPDATE status =  [...]
-| INSERT INTO t_order (order_id, user_id, status) SELECT order_id, user_id, 
status FROM t_order WHERE order_id = 1;                                         
                                                                                
                                                 | INSERT  INTO t_order 
(order_id , user_id , status) <br>SELECT order_id , user_id , status <br>FROM 
t_order<br>WHERE <br>&emsp;&emsp;&emsp;&emsp;order_id = 1;                      
                           [...]
diff --git a/docs/document/content/reference/sharding/parse.en.md 
b/docs/document/content/reference/sharding/parse.en.md
index 27e55c568e5..4a5ff163f0d 100644
--- a/docs/document/content/reference/sharding/parse.en.md
+++ b/docs/document/content/reference/sharding/parse.en.md
@@ -96,24 +96,3 @@ ParseASTNode parseASTNode = parserEngine.parse(sql, 
useCache);
 SQLVisitorEngine sqlVisitorEngine = new SQLVisitorEngine(sql, "STATEMENT", 
useCache, new Properties());
 SQLStatement sqlStatement = sqlVisitorEngine.visit(parseASTNode);
 ```
-
-- SQL Formatting
-
-```java
-new SQLFormatEngine(TypedSPILoader.getService(DatabaseType.class, "Mysql"), 
cacheOption)
-        .format(sql, false, null);
-```
-
-Example:
-
-| Original SQL                                                                 
                                                                                
                                                                                
                                              | Formatted SQL                   
                                                                                
                                                                                
              [...]
-|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 [...]
-| select a+1 as b, name n from table1 join table2 where id=1 and name='lu';    
                                                                                
                                                                                
                                              | SELECT a + 1 AS b, name 
n<br>FROM table1 JOIN table2<br>WHERE<br>&emsp;&emsp;&emsp;&emsp;id = 
1<br>&emsp;&emsp;&emsp;&emsp;and name = 'lu';                                   
                                [...]
-| select id, name, age, sex, ss, yy from table1 where id=1;                    
                                                                                
                                                                                
                                              | SELECT id , name , age , 
<br>&emsp;&emsp;&emsp;&emsp;sex , ss , yy <br>FROM table1<br>WHERE 
<br>&emsp;&emsp;&emsp;&emsp;id = 1;                                             
                                  [...]
-| select id, name, age, count(*) as n, (select id, name, age, sex from table2 
where id=2) as sid, yyyy from table1 where id=1;                                
                                                                                
                                               | SELECT id , name , age , 
<br>&emsp;&emsp;&emsp;&emsp;COUNT(*) AS n, 
<br>&emsp;&emsp;&emsp;&emsp;(<br>&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;SELECT
 id , name , age , <br>&emsp;&emsp;&emsp;&emsp;&em [...]
-| select id, name, age, sex, ss, yy from table1 where id=1 and name=1 and a=1 
and b=2 and c=4 and d=3;                                                        
                                                                                
                                               | SELECT id , name , age , 
<br>&emsp;&emsp;&emsp;&emsp;sex , ss , yy <br>FROM table1<br>WHERE 
<br>&emsp;&emsp;&emsp;&emsp;id = 1<br>&emsp;&emsp;&emsp;&emsp;and name = 
1<br>&emsp;&emsp;&emsp;&emsp;and a = 1<b [...]
-| ALTER TABLE t_order ADD column4 DATE, ADD column5 DATETIME, engine ss 
max_rows 10,min_rows 2, <br>ADD column6 TIMESTAMP, ADD column7 TIME;            
                                                                                
                                                     | ALTER TABLE 
t_order<br>&emsp;&emsp;&emsp;&emsp;ADD column4 
DATE,<br>&emsp;&emsp;&emsp;&emsp;ADD column5 
DATETIME,<br>&emsp;&emsp;&emsp;&emsp;ENGINE 
ss<br>&emsp;&emsp;&emsp;&emsp;MAX_ROWS 10,<br>&emsp;&emsp [...]
-| CREATE TABLE IF NOT EXISTS <br>`runoob_tbl`(`runoob_id` INT UNSIGNED 
AUTO_INCREMENT,`runoob_title` VARCHAR(100) NOT NULL,<br>`runoob_author` 
VARCHAR(40) NOT NULL,`runoob_test` NATIONAL CHAR(40),<br>`submission_date` 
DATE,PRIMARY KEY (`runoob_id`))ENGINE=InnoDB DEFAULT CHARSET=utf8; | CREATE 
TABLE IF NOT EXISTS `runoob_tbl` (<br>&emsp;&emsp;&emsp;&emsp;`runoob_id` INT 
UNSIGNED AUTO_INCREMENT,<br>&emsp;&emsp;&emsp;&emsp;`runoob_title` VARCHAR(100) 
NOT NULL,<br>&emsp;&emsp;&emsp;&emsp;`ru [...]
-| INSERT INTO t_order_item(order_id, user_id, status, creation_date) 
<br>values (1, 1, 'insert', '2017-08-08'), (2, 2, 'insert', '2017-08-08') ON 
DUPLICATE KEY UPDATE status = 'init';                                           
                                                           | INSERT  INTO 
t_order_item (order_id , user_id , status , 
creation_date)<br>VALUES<br>&emsp;&emsp;&emsp;&emsp;(1, 1, 'insert', 
'2017-08-08'),<br>&emsp;&emsp;&emsp;&emsp;(2, 2, 'insert', '2017-08-08')<br>ON  
[...]
-| INSERT INTO t_order SET order_id = 1, user_id = 1, status = 
convert(to_base64(aes_encrypt(1, 'key')) USING utf8)<br> ON DUPLICATE KEY 
UPDATE status = VALUES(status);                                                 
                                                                     | INSERT  
INTO t_order SET order_id = 1,<br>&emsp;&emsp;&emsp;&emsp;user_id = 
1,<br>&emsp;&emsp;&emsp;&emsp;status = CONVERT(to_base64(aes_encrypt(1 , 
'key')) USING utf8)<br>ON DUPLICATE KEY UPDATE status =  [...]
-| INSERT INTO t_order (order_id, user_id, status) SELECT order_id, user_id, 
status FROM t_order WHERE order_id = 1;                                         
                                                                                
                                                 | INSERT  INTO t_order 
(order_id , user_id , status) <br>SELECT order_id , user_id , status <br>FROM 
t_order<br>WHERE <br>&emsp;&emsp;&emsp;&emsp;order_id = 1;                      
                           [...]
diff --git 
a/examples/shardingsphere-parser-example/src/main/java/org/apache/shardingsphere/example/parser/mysql/format/MySQLParserFormatExample.java
 
b/examples/shardingsphere-parser-example/src/main/java/org/apache/shardingsphere/example/parser/mysql/format/MySQLParserFormatExample.java
deleted file mode 100644
index 594ee03c11d..00000000000
--- 
a/examples/shardingsphere-parser-example/src/main/java/org/apache/shardingsphere/example/parser/mysql/format/MySQLParserFormatExample.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.example.parser.mysql.format;
-
-import org.apache.shardingsphere.sql.parser.api.CacheOption;
-import org.apache.shardingsphere.sql.parser.api.SQLFormatEngine;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Properties;
-
-public final class MySQLParserFormatExample {
-    
-    private static final String DML_SELECT_SQL = "SELECT age AS b, name AS n 
FROM table1 JOIN table2 WHERE id = 1 AND name = 'lu';";
-    
-    private static final String DML_INSERT_SQL = "INSERT INTO user (name, age, 
status) VALUES ('z', 18, 1);";
-    
-    private static final String DML_DELETE_SQL = "DELETE FROM user WHERE id = 
1;";
-    
-    private static final String DML_UPDATE_SQL = "UPDATE user SET name = 'j' 
WHERE id = 1;";
-    
-    private static final String DDL_CREATE_SQL = "CREATE TABLE user (id 
BIGINT(20) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), age INT(2), status 
INT(1));";
-    
-    private static final String DDL_DROP_SQL = "DROP TABLE user;";
-    
-    private static final String DDL_ALTER_SQL = "ALTER TABLE user CHANGE name 
name_new VARCHAR(20);";
-    
-    private static final String DDL_SHOW_SQL = "SHOW COLUMNS FROM user;";
-    
-    private static final List<String> MYSQL_FORMAT_SQL_LIST;
-    
-    static {
-        MYSQL_FORMAT_SQL_LIST = Arrays.asList(DML_SELECT_SQL, DML_INSERT_SQL, 
DML_DELETE_SQL, DML_UPDATE_SQL, DDL_CREATE_SQL, DDL_DROP_SQL, DDL_ALTER_SQL, 
DDL_SHOW_SQL);
-    }
-    
-    // CHECKSTYLE:OFF
-    public static void main(final String[] args) {
-        // CHECKSTYLE:ON
-        MYSQL_FORMAT_SQL_LIST.forEach(each -> {
-            CacheOption cacheOption = new CacheOption(128, 1024L);
-            SQLFormatEngine sqlFormatEngine = new SQLFormatEngine("MySQL", 
cacheOption);
-            Properties props = new Properties();
-            props.setProperty("parameterized", Boolean.FALSE.toString());
-            System.out.println(sqlFormatEngine.format(each, false, props));
-        });
-    }
-}
diff --git a/parser/distsql/engine/src/main/antlr4/imports/RULKeyword.g4 
b/parser/distsql/engine/src/main/antlr4/imports/RULKeyword.g4
index 54c18e81d7a..c6fc5aaa306 100644
--- a/parser/distsql/engine/src/main/antlr4/imports/RULKeyword.g4
+++ b/parser/distsql/engine/src/main/antlr4/imports/RULKeyword.g4
@@ -31,10 +31,6 @@ PARSE
     : P A R S E
     ;
 
-FORMAT
-    : F O R M A T
-    ;
-
 SQLString
     : WS.*
     ;
diff --git a/parser/distsql/engine/src/main/antlr4/imports/RULStatement.g4 
b/parser/distsql/engine/src/main/antlr4/imports/RULStatement.g4
index 6b1f418b2a8..d47af39cfc0 100644
--- a/parser/distsql/engine/src/main/antlr4/imports/RULStatement.g4
+++ b/parser/distsql/engine/src/main/antlr4/imports/RULStatement.g4
@@ -27,10 +27,6 @@ parseSQL
     : PARSE sql
     ;
 
-formatSQL
-    : FORMAT sql
-    ;
-
 sql
     : SQLString
     ;
diff --git 
a/parser/distsql/engine/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/UtilityDistSQLStatement.g4
 
b/parser/distsql/engine/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/UtilityDistSQLStatement.g4
index 8c4d5bd25b8..449f46129c9 100644
--- 
a/parser/distsql/engine/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/UtilityDistSQLStatement.g4
+++ 
b/parser/distsql/engine/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/UtilityDistSQLStatement.g4
@@ -22,6 +22,5 @@ import Symbol, RULStatement;
 execute
     : (previewSQL 
     | parseSQL
-    | formatSQL
     ) SEMI_? EOF
     ;
diff --git 
a/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/utility/UtilityDistSQLStatementVisitor.java
 
b/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/utility/UtilityDistSQLStatementVisitor.java
index 63328889fa1..0e9b472332a 100644
--- 
a/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/utility/UtilityDistSQLStatementVisitor.java
+++ 
b/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/utility/UtilityDistSQLStatementVisitor.java
@@ -18,10 +18,8 @@
 package org.apache.shardingsphere.distsql.parser.core.utility;
 
 import 
org.apache.shardingsphere.distsql.parser.autogen.UtilityDistSQLStatementBaseVisitor;
-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.statement.rul.sql.FormatStatement;
 import org.apache.shardingsphere.distsql.statement.rul.sql.ParseStatement;
 import org.apache.shardingsphere.distsql.statement.rul.sql.PreviewStatement;
 import org.apache.shardingsphere.sql.parser.api.ASTNode;
@@ -41,9 +39,4 @@ public final class UtilityDistSQLStatementVisitor extends 
UtilityDistSQLStatemen
     public ASTNode visitParseSQL(final ParseSQLContext ctx) {
         return new ParseStatement(ctx.sql().getText().trim());
     }
-    
-    @Override
-    public ASTNode visitFormatSQL(final FormatSQLContext ctx) {
-        return new FormatStatement(ctx.sql().getText().trim());
-    }
 }
diff --git 
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rul/sql/FormatStatement.java
 
b/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rul/sql/FormatStatement.java
deleted file mode 100644
index 7e4ca855c2f..00000000000
--- 
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rul/sql/FormatStatement.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.distsql.statement.rul.sql;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.distsql.statement.rul.RULStatement;
-
-/**
- * Format statement.
- */
-@RequiredArgsConstructor
-@Getter
-public final class FormatStatement extends RULStatement {
-    
-    private final String sql;
-}
diff --git 
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatVisitor.java
 
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatVisitor.java
deleted file mode 100644
index 5fb4481503c..00000000000
--- 
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatVisitor.java
+++ /dev/null
@@ -1,847 +0,0 @@
-/*
- * 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.sql.parser.mysql.visitor.format;
-
-import org.antlr.v4.runtime.ParserRuleContext;
-import org.antlr.v4.runtime.tree.ParseTree;
-import org.antlr.v4.runtime.tree.RuleNode;
-import org.antlr.v4.runtime.tree.TerminalNode;
-import 
org.apache.shardingsphere.sql.parser.api.visitor.format.SQLFormatVisitor;
-import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementBaseVisitor;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AliasContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterCommandListContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterListContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterTableActionsContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AlterTableContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AssignmentValuesContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ColumnNamesContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.CreateDefinitionClauseContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.CreateTableOptionsSpaceSeparatedContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.CteClauseContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.DataTypeContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.DerivedColumnsContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ExprContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.FieldLengthContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.IdentifierContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.InsertContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.InsertSelectClauseContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.InsertValuesClauseContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.LiteralsContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.NumberLiteralsContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.OnDuplicateKeyClauseContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.PartitionNamesContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.PrecisionContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ProjectionContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ProjectionsContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.QueryExpressionBodyContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.QueryExpressionContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.QueryExpressionParensContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.QuerySpecificationContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.RowConstructorListContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.SelectContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.SetAssignmentsClauseContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.StandaloneAlterTableActionContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.StringListContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.StringLiteralsContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.String_Context;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.SystemVariableContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.TableElementListContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.TableNameContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.TableStatementContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.TableValueConstructorContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.TemporalLiteralsContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.TypeDatetimePrecisionContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.UserVariableContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.WhereClauseContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.WithClauseContext;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Properties;
-
-/**
- * SQL format visitor for MySQL.
- */
-public final class MySQLFormatVisitor extends 
MySQLStatementBaseVisitor<String> implements SQLFormatVisitor {
-    
-    private static final Collection<Class<? extends ParserRuleContext>> 
DATA_TYPE_EXTRA_DESCRIPTION_CONTEXT_CLASSES = new HashSet<>(
-            Arrays.asList(FieldLengthContext.class, PrecisionContext.class, 
StringListContext.class, TypeDatetimePrecisionContext.class));
-    
-    private final StringBuilder formattedSQL = new StringBuilder(256);
-    
-    private boolean upperCase = true;
-    
-    private boolean parameterized = true;
-    
-    private int projectionsCountOfLine = 3;
-    
-    private int indentCount;
-    
-    @Override
-    public void init(final Properties props) {
-        if (null != props) {
-            upperCase = Boolean.parseBoolean(props.getProperty("upperCase", 
Boolean.TRUE.toString()));
-            parameterized = 
Boolean.parseBoolean(props.getProperty("parameterized", 
Boolean.TRUE.toString()));
-            projectionsCountOfLine = 
Integer.parseInt(props.getProperty("projectionsCountOfLine", "3"));
-        }
-    }
-    
-    @Override
-    public String visitSelect(final SelectContext ctx) {
-        if (null == ctx.queryExpression()) {
-            visit(null == ctx.queryExpressionParens() ? ctx.selectWithInto() : 
ctx.queryExpressionParens());
-        } else {
-            visit(ctx.queryExpression());
-            if (null != ctx.lockClauseList()) {
-                formattedSQL.append(' ');
-                visit(ctx.lockClauseList());
-            }
-        }
-        formatPrint(';');
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitQueryExpression(final QueryExpressionContext ctx) {
-        if (null != ctx.withClause()) {
-            visit(ctx.withClause());
-            formatPrint(' ');
-        }
-        visit(null == ctx.queryExpressionBody() ? ctx.queryExpressionParens() 
: ctx.queryExpressionBody());
-        if (null != ctx.orderByClause()) {
-            formatPrint(' ');
-            visit(ctx.orderByClause());
-        }
-        if (null != ctx.limitClause()) {
-            formatPrint(' ');
-            visit(ctx.limitClause());
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitQueryExpressionParens(final 
QueryExpressionParensContext ctx) {
-        formatPrintln();
-        indentCount++;
-        formatPrint('(');
-        formatPrintln();
-        if (null == ctx.queryExpressionParens()) {
-            visit(ctx.queryExpression());
-            if (null != ctx.lockClauseList()) {
-                formattedSQL.append(' ');
-                visit(ctx.lockClauseList());
-            }
-        } else {
-            visit(ctx.queryExpressionParens());
-        }
-        indentCount--;
-        formatPrintln();
-        formatPrint(')');
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitQueryExpressionBody(final QueryExpressionBodyContext 
ctx) {
-        if (1 == ctx.getChildCount()) {
-            visit(ctx.queryPrimary());
-        } else if (null == ctx.queryExpressionParens()) {
-            visit(ctx.queryExpressionBody(0));
-            visitCombineClause(ctx);
-        } else {
-            visit(ctx.queryExpressionParens());
-        }
-        return formattedSQL.toString();
-    }
-    
-    private void visitCombineClause(final QueryExpressionBodyContext ctx) {
-        formattedSQL.append("\nUNION\n");
-        if (null != ctx.combineOption()) {
-            visit(ctx.combineOption());
-            formattedSQL.append(' ');
-        }
-        visit(ctx.queryExpressionBody(1));
-    }
-    
-    @Override
-    public String visitQuerySpecification(final QuerySpecificationContext ctx) 
{
-        formatPrint("SELECT ");
-        int selectSpecCount = ctx.selectSpecification().size();
-        for (int i = 0; i < selectSpecCount; i++) {
-            visit(ctx.selectSpecification(i));
-            formatPrint(' ');
-        }
-        visit(ctx.projections());
-        if (null != ctx.fromClause()) {
-            formatPrintln();
-            visit(ctx.fromClause());
-        }
-        if (null != ctx.whereClause()) {
-            formatPrintln();
-            visit(ctx.whereClause());
-        }
-        if (null != ctx.groupByClause()) {
-            formatPrintln();
-            visit(ctx.groupByClause());
-        }
-        if (null != ctx.havingClause()) {
-            formatPrintln();
-            visit(ctx.havingClause());
-        }
-        if (null != ctx.windowClause()) {
-            formatPrintln();
-            visit(ctx.windowClause());
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitTableStatement(final TableStatementContext ctx) {
-        formatPrint("TABLE ");
-        visit(ctx.tableName());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitInsert(final InsertContext ctx) {
-        visit(ctx.INSERT());
-        formatPrint(' ');
-        visit(ctx.insertSpecification());
-        formatPrint(' ');
-        if (null != ctx.INTO()) {
-            visit(ctx.INTO());
-            formatPrint(' ');
-        }
-        visit(ctx.tableName());
-        formatPrint(' ');
-        if (null != ctx.partitionNames()) {
-            formatPrintln();
-            visit(ctx.partitionNames());
-        }
-        if (null != ctx.insertValuesClause()) {
-            visit(ctx.insertValuesClause());
-        } else if (null != ctx.insertSelectClause()) {
-            visit(ctx.insertSelectClause());
-        } else {
-            visit(ctx.setAssignmentsClause());
-        }
-        if (null != ctx.onDuplicateKeyClause()) {
-            formatPrintln();
-            visit(ctx.onDuplicateKeyClause());
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitPartitionNames(final PartitionNamesContext ctx) {
-        visit(ctx.PARTITION());
-        formatPrintln(" (");
-        int identifierCount = ctx.identifier().size();
-        for (int i = 0; i < identifierCount; i++) {
-            if (0 != i) {
-                formatPrint(" ,");
-            }
-            visit(ctx.identifier(i));
-        }
-        formatPrint(')');
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitInsertValuesClause(final InsertValuesClauseContext ctx) 
{
-        if (null != ctx.LP_()) {
-            formatPrint('(');
-            if (null != ctx.fields()) {
-                visit(ctx.fields());
-            }
-            formatPrint(')');
-        }
-        formatPrintln();
-        visit(null == ctx.VALUE() ? ctx.VALUES() : ctx.VALUE());
-        indentCount++;
-        formatPrintln();
-        if (!ctx.assignmentValues().isEmpty()) {
-            int valueCount = ctx.assignmentValues().size();
-            for (int i = 0; i < valueCount; i++) {
-                if (0 != i) {
-                    formatPrint(',');
-                    formatPrintln();
-                }
-                visit(ctx.assignmentValues(i));
-            }
-        }
-        if (null != ctx.rowConstructorList()) {
-            indentCount++;
-            visit(ctx.rowConstructorList());
-            indentCount--;
-        }
-        indentCount--;
-        if (null != ctx.valueReference()) {
-            formatPrintln();
-            visit(ctx.valueReference());
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitInsertSelectClause(final InsertSelectClauseContext ctx) 
{
-        if (null != ctx.valueReference()) {
-            visit(ctx.valueReference());
-            formatPrint(' ');
-        }
-        if (null != ctx.LP_()) {
-            formatPrint('(');
-            if (null != ctx.fields()) {
-                visit(ctx.fields());
-            }
-            formatPrint(") ");
-        }
-        formatPrintln();
-        visit(ctx.select());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitSetAssignmentsClause(final SetAssignmentsClauseContext 
ctx) {
-        indentCount++;
-        visit(ctx.SET());
-        formatPrint(' ');
-        int assignmentCount = ctx.assignment().size();
-        for (int i = 0; i < assignmentCount; i++) {
-            if (0 != i) {
-                formatPrintln(",");
-            }
-            visit(ctx.assignment(i));
-        }
-        indentCount--;
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitDerivedColumns(final DerivedColumnsContext ctx) {
-        formatPrint("(");
-        int aliasCount = ctx.alias().size();
-        for (int i = 0; i < aliasCount; i++) {
-            if (0 != i) {
-                formatPrint(", ");
-            }
-            visit(ctx.alias(i));
-        }
-        formatPrint(")");
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitOnDuplicateKeyClause(final OnDuplicateKeyClauseContext 
ctx) {
-        visit(ctx.ON());
-        formatPrint(" ");
-        visit(ctx.DUPLICATE());
-        formatPrint(" ");
-        visit(ctx.KEY());
-        formatPrint(" ");
-        visit(ctx.UPDATE());
-        formatPrint(" ");
-        indentCount++;
-        int assignmentCount = ctx.assignment().size();
-        for (int i = 0; i < assignmentCount; i++) {
-            if (0 != i) {
-                formatPrintln();
-            }
-            visit(ctx.assignment(i));
-        }
-        indentCount--;
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitTableName(final TableNameContext ctx) {
-        if (null != ctx.owner()) {
-            formatPrint(ctx.owner().getText());
-            formatPrint(".");
-        }
-        formatPrint(ctx.name().getText());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitTableValueConstructor(final 
TableValueConstructorContext ctx) {
-        formatPrint("VALUES ");
-        visit(ctx.rowConstructorList());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitAlterTable(final AlterTableContext ctx) {
-        visit(ctx.ALTER());
-        formatPrint(" ");
-        visit(ctx.TABLE());
-        formatPrint(" ");
-        visit(ctx.tableName());
-        if (null != ctx.alterTableActions()) {
-            indentCount++;
-            formatPrintln();
-            visit(ctx.alterTableActions());
-            indentCount--;
-        } else if (null != ctx.standaloneAlterTableAction()) {
-            indentCount++;
-            formatPrintln();
-            visit(ctx.standaloneAlterTableAction());
-            indentCount--;
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitAlterTableActions(final AlterTableActionsContext ctx) {
-        if (null != ctx.alterCommandList()) {
-            visit(ctx.alterCommandList());
-            if (null != ctx.alterTablePartitionOptions()) {
-                formatPrintln();
-                visit(ctx.alterTablePartitionOptions());
-            }
-        } else {
-            visit(ctx.alterTablePartitionOptions());
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitAlterCommandList(final AlterCommandListContext ctx) {
-        if (null != ctx.alterCommandsModifierList()) {
-            visit(ctx.alterCommandsModifierList());
-            if (null != ctx.alterList()) {
-                formatPrintln(",");
-                visit(ctx.alterList());
-            }
-        } else if (null != ctx.alterList()) {
-            visit(ctx.alterList());
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitAlterList(final AlterListContext ctx) {
-        int childCount = ctx.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            ParseTree child = ctx.getChild(i);
-            if (i == 0) {
-                child.accept(this);
-            } else {
-                if (child instanceof TerminalNode) {
-                    formatPrintln(",");
-                } else {
-                    child.accept(this);
-                }
-            }
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitCreateTableOptionsSpaceSeparated(final 
CreateTableOptionsSpaceSeparatedContext ctx) {
-        int childCount = ctx.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            if (0 != i) {
-                formatPrintln();
-            }
-            visit(ctx.getChild(i));
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitStandaloneAlterTableAction(final 
StandaloneAlterTableActionContext ctx) {
-        if (null != ctx.alterCommandsModifierList()) {
-            visit(ctx.alterCommandsModifierList());
-            formatPrintln(",");
-        }
-        visit(ctx.standaloneAlterCommands());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitRowConstructorList(final RowConstructorListContext ctx) 
{
-        int rowCount = ctx.assignmentValues().size();
-        for (int i = 0; i < rowCount; i++) {
-            if (0 != i) {
-                formatPrintln(",");
-            }
-            visit(ctx.ROW(i));
-            formatPrint(" ");
-            visit(ctx.assignmentValues(i));
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitAssignmentValues(final AssignmentValuesContext ctx) {
-        formatPrint("(");
-        int assignCount = ctx.assignmentValue().size();
-        for (int i = 0; i < assignCount; i++) {
-            if (i != 0) {
-                formatPrint(", ");
-            }
-            visit(ctx.assignmentValue(i));
-        }
-        formatPrint(")");
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitWhereClause(final WhereClauseContext ctx) {
-        visit(ctx.WHERE());
-        formatPrint(" ");
-        indentCount++;
-        formatPrintln();
-        visit(ctx.expr());
-        indentCount--;
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitExpr(final ExprContext ctx) {
-        if (null != ctx.andOperator()) {
-            visitLogicalOperator(ctx, ctx.andOperator().getText());
-        } else if (null != ctx.orOperator()) {
-            visitLogicalOperator(ctx, ctx.orOperator().getText());
-        } else if (null != ctx.notOperator()) {
-            formatPrint(ctx.notOperator().getText());
-            visit(ctx.expr(0));
-        } else {
-            visitChildren(ctx);
-        }
-        return formattedSQL.toString();
-    }
-    
-    private void visitLogicalOperator(final ExprContext ctx, final String 
operator) {
-        ExprContext left = ctx.expr(0);
-        visit(left);
-        formatPrintln();
-        ExprContext right = ctx.expr(1);
-        formatPrint(operator);
-        formatPrint(" ");
-        visit(right);
-    }
-    
-    @Override
-    public String visitAlias(final AliasContext ctx) {
-        formatPrint(ctx.getText());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitProjections(final ProjectionsContext ctx) {
-        indentCount++;
-        if (null != ctx.unqualifiedShorthand()) {
-            visit(ctx.unqualifiedShorthand());
-            formattedSQL.append(' ');
-        }
-        int projectionCount = ctx.projection().size();
-        int lineItemCount = 0;
-        for (int i = 0; i < projectionCount; i++) {
-            if (0 != i) {
-                formattedSQL.append(", ");
-                if (lineItemCount >= projectionsCountOfLine) {
-                    lineItemCount = 0;
-                    formatPrintln();
-                }
-            }
-            visit(ctx.projection(i));
-            lineItemCount++;
-        }
-        indentCount--;
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitProjection(final ProjectionContext ctx) {
-        if (null != ctx.expr()) {
-            visit(ctx.expr());
-            formatPrint(" ");
-        }
-        if (null != ctx.AS()) {
-            formatPrint("AS ");
-        }
-        if (null != ctx.alias()) {
-            visit(ctx.alias());
-        }
-        if (null != ctx.qualifiedShorthand()) {
-            visit(ctx.qualifiedShorthand());
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitCreateDefinitionClause(final 
CreateDefinitionClauseContext ctx) {
-        indentCount++;
-        formatPrint("(");
-        formatPrintln();
-        visit(ctx.tableElementList());
-        formatPrint("\n");
-        formatPrint(")");
-        indentCount--;
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitTableElementList(final TableElementListContext ctx) {
-        int tableElementCount = ctx.tableElement().size();
-        for (int i = 0; i < tableElementCount; i++) {
-            if (0 != i) {
-                formatPrintln(",");
-            }
-            visit(ctx.tableElement(i));
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitFieldLength(final FieldLengthContext ctx) {
-        formatPrint("(");
-        formatPrint(ctx.NUMBER_().getText());
-        formatPrint(")");
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitPrecision(final PrecisionContext ctx) {
-        formatPrint("(");
-        formatPrint(ctx.NUMBER_(0).getText());
-        formatPrint(", ");
-        formatPrint(ctx.NUMBER_(1).getText());
-        formatPrint(")");
-        return super.visitPrecision(ctx);
-    }
-    
-    @Override
-    public String visitTypeDatetimePrecision(final 
TypeDatetimePrecisionContext ctx) {
-        formatPrint("(");
-        formatPrint(ctx.NUMBER_().getText());
-        formatPrint(")");
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitDataType(final DataTypeContext ctx) {
-        int childCount = ctx.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            ParseTree child = ctx.getChild(i);
-            if (0 != i && 
!DATA_TYPE_EXTRA_DESCRIPTION_CONTEXT_CLASSES.contains(child.getClass())) {
-                formatPrint(" ");
-            }
-            child.accept(this);
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitStringList(final StringListContext ctx) {
-        int stringCount = ctx.textString().size();
-        formatPrint("(");
-        for (int i = 0; i < stringCount; i++) {
-            if (0 == i) {
-                formatPrint(ctx.textString(i).getText());
-            } else {
-                formatPrintln(",");
-                visit(ctx.textString(i));
-            }
-        }
-        formatPrint(")");
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitUserVariable(final UserVariableContext ctx) {
-        formatPrint("@");
-        visit(ctx.textOrIdentifier());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitSystemVariable(final SystemVariableContext ctx) {
-        formatPrint("@@");
-        if (null != ctx.systemVariableScope) {
-            formatPrint(upperCase ? 
ctx.systemVariableScope.getText().toUpperCase() : 
ctx.systemVariableScope.getText().toLowerCase());
-            formatPrint(".");
-        }
-        visit(ctx.rvalueSystemVariable().textOrIdentifier());
-        if (null != ctx.rvalueSystemVariable().DOT_()) {
-            formatPrint(".");
-            visit(ctx.rvalueSystemVariable().identifier());
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitTerminal(final TerminalNode node) {
-        if ("<EOF>".equals(node.getText())) {
-            return formattedSQL.toString();
-        }
-        formatPrint(upperCase ? node.getText().toUpperCase() : 
node.getText().toLowerCase());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitIdentifier(final IdentifierContext ctx) {
-        formatPrint(ctx.getText());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitLiterals(final LiteralsContext ctx) {
-        if (parameterized) {
-            formatPrint("?");
-        } else {
-            super.visitLiterals(ctx);
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitTemporalLiterals(final TemporalLiteralsContext ctx) {
-        visit(ctx.getChild(0));
-        formatPrint(ctx.textString().getText());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitStringLiterals(final StringLiteralsContext ctx) {
-        if (parameterized) {
-            formatPrint("?");
-            return formattedSQL.toString();
-        }
-        if (null == ctx.string_()) {
-            visit(ctx.NCHAR_TEXT());
-        } else {
-            if (null != ctx.UNDERSCORE_CHARSET()) {
-                formatPrint(ctx.UNDERSCORE_CHARSET().getText());
-            }
-            ctx.string_().forEach(this::visit);
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitString_(final String_Context ctx) {
-        formatPrint(ctx.getText());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitNumberLiterals(final NumberLiteralsContext ctx) {
-        formatPrint(parameterized ? "?" : ctx.getText());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitWithClause(final WithClauseContext ctx) {
-        formatPrint("WITH ");
-        if (null != ctx.RECURSIVE()) {
-            visit(ctx.RECURSIVE());
-            formattedSQL.append(' ');
-        }
-        for (int i = 0; i < ctx.cteClause().size(); i++) {
-            if (i != 0 && i < ctx.cteClause().size() - 1) {
-                formattedSQL.append(", ");
-            }
-            visit(ctx.cteClause(i));
-        }
-        if (null != ctx.parent) {
-            formattedSQL.append('\n');
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitCteClause(final CteClauseContext ctx) {
-        visit(ctx.alias());
-        formattedSQL.append(' ');
-        if (null != ctx.columnNames()) {
-            visit(ctx.columnNames());
-            formattedSQL.append(' ');
-        }
-        formattedSQL.append("AS ");
-        visit(ctx.subquery());
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitColumnNames(final ColumnNamesContext ctx) {
-        int columnCount = ctx.columnName().size();
-        for (int i = 0; i < columnCount; i++) {
-            if (i != 0 && i < columnCount - 1) {
-                formattedSQL.append(", ");
-            } else {
-                visit(ctx.columnName(i));
-            }
-        }
-        return formattedSQL.toString();
-    }
-    
-    @Override
-    public String visitChildren(final RuleNode node) {
-        String result = defaultResult();
-        int childCount = node.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            if (0 != i) {
-                String previousText = node.getChild(i - 1).getText();
-                String text = node.getChild(i).getText();
-                if (!"(".equals(previousText) && !".".equals(previousText) && 
!")".equals(text) && !"(".equals(text) && !".".equals(text)) {
-                    formatPrint(" ");
-                }
-            }
-            if (!shouldVisitNextChild(node, result)) {
-                break;
-            }
-            ParseTree child = node.getChild(i);
-            String childResult = child.accept(this);
-            result = aggregateResult(result, childResult);
-        }
-        return result;
-    }
-    
-    private void formatPrint(final char value) {
-        formattedSQL.append(value);
-    }
-    
-    private void formatPrint(final String text) {
-        formattedSQL.append(text);
-    }
-    
-    private void formatPrintIndent() {
-        for (int i = 0; i < indentCount; ++i) {
-            formattedSQL.append('\t');
-        }
-    }
-    
-    private void formatPrintln() {
-        formatPrint('\n');
-        formatPrintIndent();
-    }
-    
-    private void formatPrintln(final String text) {
-        formatPrint(text);
-        formatPrint('\n');
-        formatPrintIndent();
-    }
-    
-    @Override
-    public String getDatabaseType() {
-        return "MySQL";
-    }
-}
diff --git 
a/parser/sql/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.api.visitor.format.SQLFormatVisitor
 
b/parser/sql/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.api.visitor.format.SQLFormatVisitor
deleted file mode 100644
index 67f7326865c..00000000000
--- 
a/parser/sql/dialect/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.sql.parser.api.visitor.format.SQLFormatVisitor
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# 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.
-#
-
-org.apache.shardingsphere.sql.parser.mysql.visitor.format.MySQLFormatVisitor
diff --git 
a/parser/sql/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatVisitorIT.java
 
b/parser/sql/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatVisitorIT.java
deleted file mode 100644
index 1265a6a90bf..00000000000
--- 
a/parser/sql/dialect/mysql/src/test/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatVisitorIT.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * 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.sql.parser.mysql.visitor.format;
-
-import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.sql.parser.api.CacheOption;
-import org.apache.shardingsphere.sql.parser.api.SQLFormatEngine;
-import org.apache.shardingsphere.test.util.PropertiesBuilder;
-import org.apache.shardingsphere.test.util.PropertiesBuilder.Property;
-import org.junit.jupiter.api.extension.ExtensionContext;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.Arguments;
-import org.junit.jupiter.params.provider.ArgumentsProvider;
-import org.junit.jupiter.params.provider.ArgumentsSource;
-
-import java.util.stream.Stream;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-class MySQLFormatVisitorIT {
-    
-    @ParameterizedTest(name = "{0}")
-    @ArgumentsSource(TestCaseArgumentsProvider.class)
-    void assertSQLFormat(final String caseId, final String inputSQL, final 
String expectFormattedSQL, final String expectFormattedParameterizedSQL) {
-        SQLFormatEngine sqlFormatEngine = new 
SQLFormatEngine(TypedSPILoader.getService(DatabaseType.class, "MySQL"), new 
CacheOption(1, 1L));
-        assertThat(sqlFormatEngine.format(inputSQL, false, 
PropertiesBuilder.build(new Property("parameterized", 
Boolean.FALSE.toString()))), is(expectFormattedSQL));
-        assertThat(sqlFormatEngine.format(inputSQL, false, 
PropertiesBuilder.build(new Property("parameterized", 
Boolean.TRUE.toString()))), is(expectFormattedParameterizedSQL));
-    }
-    
-    private static class TestCaseArgumentsProvider implements 
ArgumentsProvider {
-        
-        @Override
-        public Stream<? extends Arguments> provideArguments(final 
ExtensionContext extensionContext) {
-            return Stream.of(Arguments.of("select_with_union",
-                    "select a+1 as b, name n from table1 join table2 where 
id=1 and name='lu';",
-                    "SELECT a + 1 AS b, name n\nFROM table1 JOIN table2\nWHERE 
\n\tid = 1\n\tand name = 'lu';",
-                    "SELECT a + ? AS b, name n\nFROM table1 JOIN table2\nWHERE 
\n\tid = ?\n\tand name = ?;"),
-                    Arguments.of("select_item_nums",
-                            "select id, name, age, sex, ss, yy from table1 
where id=1",
-                            "SELECT id , name , age , \n\tsex , ss , yy \nFROM 
table1\nWHERE \n\tid = 1;",
-                            "SELECT id , name , age , \n\tsex , ss , yy \nFROM 
table1\nWHERE \n\tid = ?;"),
-                    Arguments.of("select_with_subquery",
-                            "select id, name, age, count(*) as n, (select id, 
name, age, sex from table2 where id=2) as sid, yyyy from table1 where id=1",
-                            "SELECT id , name , age , \n\tCOUNT(*) AS n, 
\n\t(\n\t\tSELECT id , name , age , \n\t\t\tsex \n\t\t"
-                                    + "FROM table2\n\t\tWHERE \n\t\t\tid = 
2\n\t) AS sid, yyyy \nFROM table1\nWHERE \n\tid = 1;",
-                            "SELECT id , name , age , \n\tCOUNT(*) AS n, 
\n\t(\n\t\tSELECT id , name , age , \n\t\t\tsex \n\t\t"
-                                    + "FROM table2\n\t\tWHERE \n\t\t\tid = 
?\n\t) AS sid, yyyy \nFROM table1\nWHERE \n\tid = ?;"),
-                    Arguments.of("select_where_num",
-                            "select id, name, age, sex, ss, yy from table1 
where id=1 and name=1 and a=1 and b=2 and c=4 and d=3",
-                            "SELECT id , name , age , \n\tsex , ss , yy \nFROM 
table1\nWHERE \n\tid = 1\n\tand name = 1\n\tand a = 1\n\tand b = 2\n\tand c = 
4\n\tand d = 3;",
-                            "SELECT id , name , age , \n\tsex , ss , yy \nFROM 
table1\nWHERE \n\tid = ?\n\tand name = ?\n\tand a = ?\n\tand b = ?\n\tand c = 
?\n\tand d = ?;"),
-                    Arguments.of("alter_table",
-                            "ALTER TABLE t_order ADD column4 DATE, ADD column5 
DATETIME, engine ss max_rows 10,min_rows 2, ADD column6 TIMESTAMP, ADD column7 
TIME;",
-                            "ALTER TABLE t_order\n\tADD column4 DATE,\n\tADD 
column5 DATETIME,\n\tENGINE ss\n\tMAX_ROWS 10,\n\tMIN_ROWS 2,\n\tADD column6 
TIMESTAMP,\n\tADD column7 TIME",
-                            "ALTER TABLE t_order\n\tADD column4 DATE,\n\tADD 
column5 DATETIME,\n\tENGINE ss\n\tMAX_ROWS 10,\n\tMIN_ROWS 2,\n\tADD column6 
TIMESTAMP,\n\tADD column7 TIME"),
-                    Arguments.of("create_table",
-                            "CREATE TABLE IF NOT EXISTS `runoob_tbl`(\n"
-                                    + "`runoob_id` INT UNSIGNED 
AUTO_INCREMENT,\n"
-                                    + "`runoob_title` VARCHAR(100) NOT NULL,\n"
-                                    + "`runoob_author` VARCHAR(40) NOT NULL,\n"
-                                    + "`runoob_test` NATIONAL CHAR(40),\n"
-                                    + "`submission_date` DATE,\n"
-                                    + "PRIMARY KEY (`runoob_id`)\n"
-                                    + ")ENGINE=InnoDB DEFAULT CHARSET=utf8;",
-                            "CREATE TABLE IF NOT EXISTS `runoob_tbl` (\n"
-                                    + "\t`runoob_id` INT UNSIGNED 
AUTO_INCREMENT,\n"
-                                    + "\t`runoob_title` VARCHAR(100) NOT 
NULL,\n"
-                                    + "\t`runoob_author` VARCHAR(40) NOT 
NULL,\n"
-                                    + "\t`runoob_test` NATIONAL CHAR(40),\n"
-                                    + "\t`submission_date` DATE,\n"
-                                    + "\tPRIMARY KEY (`runoob_id`)\n"
-                                    + ") ENGINE = InnoDB DEFAULT CHARSET = 
utf8",
-                            "CREATE TABLE IF NOT EXISTS `runoob_tbl` (\n"
-                                    + "\t`runoob_id` INT UNSIGNED 
AUTO_INCREMENT,\n"
-                                    + "\t`runoob_title` VARCHAR(100) NOT 
NULL,\n"
-                                    + "\t`runoob_author` VARCHAR(40) NOT 
NULL,\n"
-                                    + "\t`runoob_test` NATIONAL CHAR(40),\n"
-                                    + "\t`submission_date` DATE,\n"
-                                    + "\tPRIMARY KEY (`runoob_id`)\n"
-                                    + ") ENGINE = InnoDB DEFAULT CHARSET = 
utf8"),
-                    Arguments.of("insert_with_muti_value",
-                            "INSERT INTO t_order_item(order_id, user_id, 
status, creation_date) values (1, 1, 'insert', '2017-08-08'), "
-                                    + "(2, 2, 'insert', '2017-08-08') ON 
DUPLICATE KEY UPDATE status = 'init'",
-                            "INSERT  INTO t_order_item (order_id , user_id , 
status , creation_date)\nVALUES\n\t(1, 1, 'insert', '2017-08-08'),\n"
-                                    + "\t(2, 2, 'insert', '2017-08-08')\nON 
DUPLICATE KEY UPDATE status = 'init'",
-                            "INSERT  INTO t_order_item (order_id , user_id , 
status , creation_date)\nVALUES\n\t(?, ?, ?, ?),\n"
-                                    + "\t(?, ?, ?, ?)\nON DUPLICATE KEY UPDATE 
status = ?"),
-                    Arguments.of("insert_with_muti_set",
-                            "INSERT INTO t_order SET order_id = 1, user_id = 
1, status = convert(to_base64(aes_encrypt(1, 'key')) USING utf8) ON DUPLICATE 
KEY UPDATE status = VALUES(status)",
-                            "INSERT  INTO t_order SET order_id = 1,\n\tuser_id 
= 1,\n\tstatus = CONVERT(to_base64(aes_encrypt(1 , 'key')) USING utf8)\n"
-                                    + "ON DUPLICATE KEY UPDATE status = 
VALUES(status)",
-                            "INSERT  INTO t_order SET order_id = ?,\n\tuser_id 
= ?,\n\tstatus = CONVERT(to_base64(aes_encrypt(? , ?)) USING utf8)\n"
-                                    + "ON DUPLICATE KEY UPDATE status = 
VALUES(status)"),
-                    Arguments.of("insert_with_select",
-                            "INSERT INTO t_order (order_id, user_id, status) 
SELECT order_id, user_id, status FROM t_order WHERE order_id = 1",
-                            "INSERT  INTO t_order (order_id , user_id , 
status) \nSELECT order_id , user_id , status \nFROM t_order\nWHERE \n\torder_id 
= 1;",
-                            "INSERT  INTO t_order (order_id , user_id , 
status) \nSELECT order_id , user_id , status \nFROM t_order\nWHERE \n\torder_id 
= ?;"),
-                    // TODO fix only comment parse
-                    // Arguments.of("only_comment", "/* c_zz_xdba_test_4 login 
*/", "", ""),
-                    Arguments.of("select_with_Variable",
-                            "SELECT @@SESSION.auto_increment_increment AS 
auto_increment_increment, @@character_set_client AS character_set_client, "
-                                    + "@@character_set_connection AS 
character_set_connection, @@character_set_results AS character_set_results, 
@@character_set_server AS character_set_server, "
-                                    + "@@collation_server AS collation_server, 
@@collation_connection AS collation_connection, "
-                                    + "@@init_connect AS init_connect, 
@@interactive_timeout AS interactive_timeout, "
-                                    + "@@license AS license, 
@@lower_case_table_names AS lower_case_table_names, "
-                                    + "@@max_allowed_packet AS 
max_allowed_packet, @@net_buffer_length AS net_buffer_length, "
-                                    + "@@net_write_timeout AS 
net_write_timeout, @@query_cache_size AS query_cache_size, @@query_cache_type 
AS query_cache_type, @@sql_mode AS sql_mode, "
-                                    + "@@system_time_zone AS system_time_zone, 
@@time_zone AS time_zone, @@tx_isolation AS transaction_isolation, 
@@wait_timeout AS wait_timeout",
-                            "SELECT "
-                                    + "@@SESSION.auto_increment_increment AS 
auto_increment_increment, @@character_set_client AS character_set_client, "
-                                    + "@@character_set_connection AS 
character_set_connection, \n"
-                                    + "\t@@character_set_results AS 
character_set_results, @@character_set_server AS character_set_server, 
@@collation_server AS collation_server, \n"
-                                    + "\t@@collation_connection AS 
collation_connection, @@init_connect AS init_connect, @@interactive_timeout AS 
interactive_timeout, \n"
-                                    + "\t@@license AS license, 
@@lower_case_table_names AS lower_case_table_names, @@max_allowed_packet AS 
max_allowed_packet, \n"
-                                    + "\t@@net_buffer_length AS 
net_buffer_length, @@net_write_timeout AS net_write_timeout, @@query_cache_size 
AS query_cache_size, \n"
-                                    + "\t@@query_cache_type AS 
query_cache_type, @@sql_mode AS sql_mode, @@system_time_zone AS 
system_time_zone, \n"
-                                    + "\t@@time_zone AS time_zone, 
@@tx_isolation AS transaction_isolation, @@wait_timeout AS wait_timeout;",
-                            "SELECT "
-                                    + "@@SESSION.auto_increment_increment AS 
auto_increment_increment, @@character_set_client AS character_set_client, "
-                                    + "@@character_set_connection AS 
character_set_connection, \n"
-                                    + "\t@@character_set_results AS 
character_set_results, @@character_set_server AS character_set_server, 
@@collation_server AS collation_server, \n"
-                                    + "\t@@collation_connection AS 
collation_connection, @@init_connect AS init_connect, @@interactive_timeout AS 
interactive_timeout, \n"
-                                    + "\t@@license AS license, 
@@lower_case_table_names AS lower_case_table_names, @@max_allowed_packet AS 
max_allowed_packet, \n"
-                                    + "\t@@net_buffer_length AS 
net_buffer_length, @@net_write_timeout AS net_write_timeout, @@query_cache_size 
AS query_cache_size, \n"
-                                    + "\t@@query_cache_type AS 
query_cache_type, @@sql_mode AS sql_mode, @@system_time_zone AS 
system_time_zone, \n"
-                                    + "\t@@time_zone AS time_zone, 
@@tx_isolation AS transaction_isolation, @@wait_timeout AS wait_timeout;"));
-        }
-    }
-}
diff --git 
a/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLFormatEngine.java
 
b/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLFormatEngine.java
deleted file mode 100644
index 284e2f8c19a..00000000000
--- 
a/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLFormatEngine.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.sql.parser.api;
-
-import lombok.RequiredArgsConstructor;
-import org.antlr.v4.runtime.tree.ParseTree;
-import 
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import 
org.apache.shardingsphere.sql.parser.api.visitor.format.SQLFormatVisitor;
-
-import java.util.Properties;
-
-/**
- * SQL format engine.
- */
-@RequiredArgsConstructor
-public final class SQLFormatEngine {
-    
-    private final DatabaseType databaseType;
-    
-    private final CacheOption cacheOption;
-    
-    public SQLFormatEngine(final String databaseType, final CacheOption 
cacheOption) {
-        this(TypedSPILoader.getService(DatabaseType.class, databaseType), 
cacheOption);
-    }
-    
-    /**
-     * Format SQL.
-     *
-     * @param sql SQL to be formatted
-     * @param useCache whether to use cache
-     * @param props properties
-     * @return formatted SQL
-     */
-    public String format(final String sql, final boolean useCache, final 
Properties props) {
-        ParseTree parseTree = new SQLParserEngine(databaseType, 
cacheOption).parse(sql, useCache).getRootNode();
-        return DatabaseTypedSPILoader.getService(SQLFormatVisitor.class, 
databaseType, props).visit(parseTree);
-    }
-}
diff --git 
a/parser/sql/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/visitor/format/SQLFormatVisitor.java
 
b/parser/sql/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/visitor/format/SQLFormatVisitor.java
deleted file mode 100644
index 677ef08735c..00000000000
--- 
a/parser/sql/spi/src/main/java/org/apache/shardingsphere/sql/parser/api/visitor/format/SQLFormatVisitor.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.sql.parser.api.visitor.format;
-
-import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPI;
-import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
-
-/**
- * SQL format visitor.
- */
-public interface SQLFormatVisitor extends SQLVisitor<String>, DatabaseTypedSPI 
{
-}
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/FormatSQLExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/FormatSQLExecutor.java
deleted file mode 100644
index ca21dbf9030..00000000000
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/FormatSQLExecutor.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.handler.distsql.rul;
-
-import lombok.Setter;
-import 
org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorConnectionContextAware;
-import 
org.apache.shardingsphere.distsql.handler.engine.DistSQLConnectionContext;
-import 
org.apache.shardingsphere.distsql.handler.engine.query.DistSQLQueryExecutor;
-import org.apache.shardingsphere.distsql.statement.rul.sql.FormatStatement;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
-import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.sql.parser.api.CacheOption;
-import org.apache.shardingsphere.sql.parser.api.SQLFormatEngine;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Properties;
-
-/**
- * Format SQL executor.
- */
-@Setter
-public final class FormatSQLExecutor implements 
DistSQLQueryExecutor<FormatStatement>, DistSQLExecutorConnectionContextAware {
-    
-    private DistSQLConnectionContext connectionContext;
-    
-    @Override
-    public Collection<String> getColumnNames(final FormatStatement 
sqlStatement) {
-        return Collections.singleton("formatted_result");
-    }
-    
-    @Override
-    public Collection<LocalDataQueryResultRow> getRows(final FormatStatement 
sqlStatement, final ContextManager contextManager) {
-        return Collections.singleton(new 
LocalDataQueryResultRow(formatSQL(sqlStatement.getSql(), 
connectionContext.getProtocolType())));
-    }
-    
-    private Object formatSQL(final String sql, final DatabaseType 
databaseType) {
-        Properties props = new Properties();
-        props.setProperty("parameterized", Boolean.FALSE.toString());
-        return new SQLFormatEngine(databaseType, new CacheOption(1, 
1L)).format(sql, false, props);
-    }
-    
-    @Override
-    public Class<FormatStatement> getType() {
-        return FormatStatement.class;
-    }
-}
diff --git 
a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.engine.query.DistSQLQueryExecutor
 
b/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.engine.query.DistSQLQueryExecutor
index 342bc5f31f8..adb3a065fd1 100644
--- 
a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.engine.query.DistSQLQueryExecutor
+++ 
b/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.engine.query.DistSQLQueryExecutor
@@ -25,6 +25,5 @@ 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.yaml.Conve
 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.variable.ShowDistVariableExecutor
 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.variable.ShowDistVariablesExecutor
 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.export.ShowTableMetaDataExecutor
-org.apache.shardingsphere.proxy.backend.handler.distsql.rul.FormatSQLExecutor
 
org.apache.shardingsphere.proxy.backend.handler.distsql.rul.ParseDistSQLExecutor
 org.apache.shardingsphere.proxy.backend.handler.distsql.rul.PreviewExecutor
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/FormatSQLExecutorTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/FormatSQLExecutorTest.java
deleted file mode 100644
index cbb527eee78..00000000000
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/FormatSQLExecutorTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.handler.distsql.rul;
-
-import org.apache.shardingsphere.distsql.statement.rul.sql.FormatStatement;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import 
org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLQueryBackendHandler;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.test.mock.AutoMockExtension;
-import org.apache.shardingsphere.test.mock.StaticMockSettings;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Answers;
-import org.mockito.Mock;
-
-import java.sql.SQLException;
-import java.util.LinkedList;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.Mockito.when;
-
-@ExtendWith(AutoMockExtension.class)
-@StaticMockSettings(ProxyContext.class)
-class FormatSQLExecutorTest {
-    
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private ContextManager contextManager;
-    
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private ConnectionSession connectionSession;
-    
-    @Test
-    void assertExecute() throws SQLException {
-        String sql = "SELECT * FROM t_order WHERE order_id=1";
-        
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
 "MySQL"));
-        DistSQLQueryBackendHandler handler = new 
DistSQLQueryBackendHandler(new FormatStatement(sql), connectionSession);
-        handler.execute();
-        handler.next();
-        assertThat(new 
LinkedList<>(handler.getRowData().getData()).getFirst(), is("SELECT * \n"
-                + "FROM t_order\n"
-                + "WHERE \n"
-                + "\torder_id = 1;"));
-    }
-}
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rul/RULStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rul/RULStatementAssert.java
index ea7a3a99eaa..cf57614c33a 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rul/RULStatementAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rul/RULStatementAssert.java
@@ -20,15 +20,12 @@ package 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.distsql.statement.rul.RULStatement;
-import org.apache.shardingsphere.distsql.statement.rul.sql.FormatStatement;
 import org.apache.shardingsphere.distsql.statement.rul.sql.ParseStatement;
 import org.apache.shardingsphere.distsql.statement.rul.sql.PreviewStatement;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
-import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.rul.type.FormatSQLStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.rul.type.ParseStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.rul.type.PreviewStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
-import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rul.FormatSQLStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rul.ParseStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rul.PreviewStatementTestCase;
 
@@ -50,8 +47,6 @@ public final class RULStatementAssert {
             PreviewStatementAssert.assertIs(assertContext, (PreviewStatement) 
actual, (PreviewStatementTestCase) expected);
         } else if (actual instanceof ParseStatement) {
             ParseStatementAssert.assertIs(assertContext, (ParseStatement) 
actual, (ParseStatementTestCase) expected);
-        } else if (actual instanceof FormatStatement) {
-            FormatSQLStatementAssert.assertIs(assertContext, (FormatStatement) 
actual, (FormatSQLStatementTestCase) expected);
         }
     }
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rul/type/FormatSQLStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rul/type/FormatSQLStatementAssert.java
deleted file mode 100644
index 1038fe9a781..00000000000
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rul/type/FormatSQLStatementAssert.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.it.sql.parser.internal.asserts.statement.rul.type;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.distsql.statement.rul.sql.FormatStatement;
-import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
-import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ExistingAssert;
-import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rul.FormatSQLStatementTestCase;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-/**
- * Format SQL statement assert.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class FormatSQLStatementAssert {
-    
-    /**
-     * Assert format SQL statement is correct with expected parser result.
-     *
-     * @param assertContext assert context
-     * @param actual actual format SQL statement
-     * @param expected expected format SQL statement test case
-     */
-    public static void assertIs(final SQLCaseAssertContext assertContext, 
final FormatStatement actual, final FormatSQLStatementTestCase expected) {
-        if (ExistingAssert.assertIs(assertContext, actual, expected)) {
-            assertThat(assertContext.getText("SQL assertion error"), 
actual.getSql(), is(expected.getSql()));
-        }
-    }
-}
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
index 0d6471aa7e9..fc49d4b3959 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
@@ -431,7 +431,6 @@ import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.storage.unit.ShowRulesUsedStorageUnitStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.storage.unit.ShowStorageUnitsStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.table.ShowTableStatementTestCase;
-import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rul.FormatSQLStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rul.ParseStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rul.PreviewStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.BeginTransactionStatementTestCase;
@@ -1071,9 +1070,6 @@ public final class RootSQLParserTestCases {
     @XmlElement(name = "parse-sql")
     private final List<ParseStatementTestCase> parseStatementAsserts = new 
LinkedList<>();
     
-    @XmlElement(name = "format-sql")
-    private final List<FormatSQLStatementTestCase> formatSQLStatementAsserts = 
new LinkedList<>();
-    
     @XmlElement(name = "show-dist-variable")
     private final List<ShowDistVariableStatementTestCase> 
showVariableTestCases = new LinkedList<>();
     
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rul/FormatSQLStatementTestCase.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rul/FormatSQLStatementTestCase.java
deleted file mode 100644
index 7b3734385e0..00000000000
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rul/FormatSQLStatementTestCase.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.it.sql.parser.internal.cases.parser.jaxb.statement.rul;
-
-import lombok.Getter;
-import lombok.Setter;
-import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
-
-import javax.xml.bind.annotation.XmlAttribute;
-
-/**
- * Format SQL statement test case.
- */
-@Getter
-@Setter
-public final class FormatSQLStatementTestCase extends SQLParserTestCase {
-    
-    @XmlAttribute
-    private String sql;
-}
diff --git a/test/it/parser/src/main/resources/case/rul/sql.xml 
b/test/it/parser/src/main/resources/case/rul/sql.xml
index 636ef59142b..8f5a0e91d61 100644
--- a/test/it/parser/src/main/resources/case/rul/sql.xml
+++ b/test/it/parser/src/main/resources/case/rul/sql.xml
@@ -19,5 +19,4 @@
 <sql-parser-test-cases>
     <preview-sql sql-case-id="preview-sql" sql="SELECT * FROM t_order;" />
     <parse-sql sql-case-id="parse-sql" sql="SELECT * FROM t_order;" />
-    <format-sql sql-case-id="format-sql" sql="SELECT * FROM t_order WHERE 
order_id=1;" />
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/rul/sql.xml 
b/test/it/parser/src/main/resources/sql/supported/rul/sql.xml
index 192ca7f8495..6cc9406dae7 100644
--- a/test/it/parser/src/main/resources/sql/supported/rul/sql.xml
+++ b/test/it/parser/src/main/resources/sql/supported/rul/sql.xml
@@ -19,5 +19,4 @@
 <sql-cases>
     <sql-case id="preview-sql" value="PREVIEW SELECT * FROM t_order;" 
db-types="ShardingSphere" />
     <sql-case id="parse-sql" value="PARSE SELECT * FROM t_order;" 
db-types="ShardingSphere" />
-    <sql-case id="format-sql" value="FORMAT SELECT * FROM t_order WHERE 
order_id=1;" db-types="ShardingSphere" />
 </sql-cases>


Reply via email to