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 2e1cae094b1 Refactor constructor of MySQLStatement to empty 
buildAttributes (#38345)
2e1cae094b1 is described below

commit 2e1cae094b1b00e1f27d39c03a4d328015c80095
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Mar 4 22:51:13 2026 +0800

    Refactor constructor of MySQLStatement to empty buildAttributes (#38345)
    
    * Refactor constructor of MySQLStatement to empty buildAttributes
    
    * Refactor constructor of MySQLStatement to empty buildAttributes
---
 .../sql/parser/statement/mysql/dal/MySQLFlushStatement.java  |  4 ++--
 .../sql/parser/statement/mysql/dal/MySQLKillStatement.java   |  4 ++--
 .../sql/parser/statement/mysql/dal/MySQLResetStatement.java  |  4 ++--
 .../sql/parser/statement/mysql/dal/MySQLUseStatement.java    |  4 ++--
 .../mysql/dal/plugin/MySQLShowPluginsStatement.java          |  6 +++---
 .../dal/replication/binlog/MySQLShowBinaryLogsStatement.java |  6 +++---
 .../replication/binlog/MySQLShowBinlogEventsStatement.java   |  4 ++--
 .../dal/replication/show/MySQLShowMasterStatusStatement.java |  6 +++---
 .../replication/show/MySQLShowRelayLogEventsStatement.java   |  4 ++--
 .../replication/show/MySQLShowReplicaStatusStatement.java    |  4 ++--
 .../dal/replication/show/MySQLShowReplicasStatement.java     |  6 +++---
 .../dal/replication/show/MySQLShowSlaveHostsStatement.java   |  6 +++---
 .../dal/replication/show/MySQLShowSlaveStatusStatement.java  |  4 ++--
 .../mysql/dal/replication/show/MySQLShowStatusStatement.java |  4 ++--
 .../dal/show/character/MySQLShowCharacterSetStatement.java   |  4 ++--
 .../dal/show/character/MySQLShowCollationStatement.java      |  4 ++--
 .../mysql/dal/show/column/MySQLDescribeStatement.java        |  6 +++---
 .../mysql/dal/show/column/MySQLShowColumnsStatement.java     |  4 ++--
 .../dal/show/database/MySQLShowCreateDatabaseStatement.java  |  4 ++--
 .../mysql/dal/show/database/MySQLShowDatabasesStatement.java |  6 +++---
 .../mysql/dal/show/engine/MySQLShowEngineStatement.java      |  4 ++--
 .../mysql/dal/show/error/MySQLShowErrorsStatement.java       |  4 ++--
 .../mysql/dal/show/error/MySQLShowWarningsStatement.java     |  4 ++--
 .../mysql/dal/show/event/MySQLShowCreateEventStatement.java  |  4 ++--
 .../mysql/dal/show/event/MySQLShowEventsStatement.java       |  4 ++--
 .../dal/show/function/MySQLShowFunctionStatusStatement.java  |  4 ++--
 .../mysql/dal/show/index/MySQLShowIndexStatement.java        |  4 ++--
 .../dal/show/privilege/MySQLShowCreateUserStatement.java     |  4 ++--
 .../mysql/dal/show/privilege/MySQLShowGrantsStatement.java   |  6 +++---
 .../dal/show/privilege/MySQLShowPrivilegesStatement.java     |  6 +++---
 .../show/procedure/MySQLShowProcedureStatusStatement.java    |  4 ++--
 .../dal/show/process/MySQLShowProcessListStatement.java      |  4 ++--
 .../mysql/dal/show/profile/MySQLShowProfileStatement.java    |  4 ++--
 .../mysql/dal/show/profile/MySQLShowProfilesStatement.java   |  6 +++---
 .../mysql/dal/show/table/MySQLShowCreateTableStatement.java  |  4 ++--
 .../mysql/dal/show/table/MySQLShowOpenTablesStatement.java   |  5 ++---
 .../mysql/dal/show/table/MySQLShowTableStatusStatement.java  | 10 ++++++----
 .../mysql/dal/show/table/MySQLShowTablesStatement.java       | 10 ++++++----
 .../mysql/dal/show/trigger/MySQLShowTriggersStatement.java   |  5 ++---
 .../mysql/dal/show/variable/MySQLShowVariablesStatement.java |  4 ++--
 .../mysql/dal/show/view/MySQLShowCreateViewStatement.java    | 12 ++++++++----
 .../mysql/dal/table/MySQLOptimizeTableStatement.java         |  4 ++--
 .../parser/statement/mysql/dml/MySQLLoadDataStatement.java   |  4 ++--
 .../parser/statement/mysql/dml/MySQLLoadXMLStatement.java    |  6 +++---
 .../statement/postgresql/dml/PostgreSQLCopyStatement.java    |  6 +++---
 45 files changed, 116 insertions(+), 110 deletions(-)

diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLFlushStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLFlushStatement.java
index 6e575987d6d..9c233f470bf 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLFlushStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLFlushStatement.java
@@ -36,16 +36,16 @@ public final class MySQLFlushStatement extends 
FlushStatement {
     
     private final boolean flushTable;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLFlushStatement(final DatabaseType databaseType, final 
Collection<SimpleTableSegment> tables, final boolean flushTable) {
         super(databaseType);
         this.tables = tables;
         this.flushTable = flushTable;
+        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(tables));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(tables));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLKillStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLKillStatement.java
index 18601c65e16..20e11ce8325 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLKillStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLKillStatement.java
@@ -33,16 +33,16 @@ public final class MySQLKillStatement extends DALStatement {
     
     private final String scope;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLKillStatement(final DatabaseType databaseType, final String 
processId, final String scope) {
         super(databaseType);
         this.processId = processId;
         this.scope = scope;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLResetStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLResetStatement.java
index 272f94a8ba1..f734ee0cbe7 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLResetStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLResetStatement.java
@@ -34,15 +34,15 @@ public final class MySQLResetStatement extends DALStatement 
{
     
     private final List<ResetOptionSegment> options;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLResetStatement(final DatabaseType databaseType, final 
List<ResetOptionSegment> options) {
         super(databaseType);
         this.options = options;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLUseStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLUseStatement.java
index 235ed4f7aea..e3f2a9fe383 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLUseStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/MySQLUseStatement.java
@@ -31,15 +31,15 @@ public final class MySQLUseStatement extends DALStatement {
     
     private final String database;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLUseStatement(final DatabaseType databaseType, final String 
database) {
         super(databaseType);
         this.database = database;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/plugin/MySQLShowPluginsStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/plugin/MySQLShowPluginsStatement.java
index 13e6a235ede..709808dbf3d 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/plugin/MySQLShowPluginsStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/plugin/MySQLShowPluginsStatement.java
@@ -26,17 +26,17 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DA
 /**
  * Show plugins statement for MySQL.
  */
+@Getter
 public final class MySQLShowPluginsStatement extends DALStatement {
     
-    @Getter
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowPluginsStatement(final DatabaseType databaseType) {
         super(databaseType);
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/binlog/MySQLShowBinaryLogsStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/binlog/MySQLShowBinaryLogsStatement.java
index fa32c96876f..d4e5b185e00 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/binlog/MySQLShowBinaryLogsStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/binlog/MySQLShowBinaryLogsStatement.java
@@ -26,17 +26,17 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DA
 /**
  * Show binary logs statement for MySQL.
  */
+@Getter
 public final class MySQLShowBinaryLogsStatement extends DALStatement {
     
-    @Getter
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowBinaryLogsStatement(final DatabaseType databaseType) {
         super(databaseType);
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/binlog/MySQLShowBinlogEventsStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/binlog/MySQLShowBinlogEventsStatement.java
index 308d23a1ad3..6db3a95e6b1 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/binlog/MySQLShowBinlogEventsStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/binlog/MySQLShowBinlogEventsStatement.java
@@ -34,16 +34,16 @@ public final class MySQLShowBinlogEventsStatement extends 
DALStatement {
     
     private final LimitSegment limit;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowBinlogEventsStatement(final DatabaseType databaseType, 
final String logName, final LimitSegment limit) {
         super(databaseType);
         this.logName = logName;
         this.limit = limit;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowMasterStatusStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowMasterStatusStatement.java
index 2069e017bff..1793aee8b53 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowMasterStatusStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowMasterStatusStatement.java
@@ -26,17 +26,17 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DA
 /**
  * Show master status statement for MySQL.
  */
+@Getter
 public final class MySQLShowMasterStatusStatement extends DALStatement {
     
-    @Getter
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowMasterStatusStatement(final DatabaseType databaseType) {
         super(databaseType);
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowRelayLogEventsStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowRelayLogEventsStatement.java
index 1b742563a09..dacfc8b38fc 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowRelayLogEventsStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowRelayLogEventsStatement.java
@@ -36,17 +36,17 @@ public final class MySQLShowRelayLogEventsStatement extends 
DALStatement {
     
     private final String channel;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowRelayLogEventsStatement(final DatabaseType databaseType, 
final String logName, final LimitSegment limit, final String channel) {
         super(databaseType);
         this.logName = logName;
         this.limit = limit;
         this.channel = channel;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowReplicaStatusStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowReplicaStatusStatement.java
index 6fa93f9c7da..a11e6884055 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowReplicaStatusStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowReplicaStatusStatement.java
@@ -31,15 +31,15 @@ public final class MySQLShowReplicaStatusStatement extends 
DALStatement {
     
     private final String channel;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowReplicaStatusStatement(final DatabaseType databaseType, 
final String channel) {
         super(databaseType);
         this.channel = channel;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowReplicasStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowReplicasStatement.java
index 534d1ac3255..40cfc6cbae8 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowReplicasStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowReplicasStatement.java
@@ -26,17 +26,17 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DA
 /**
  * Show replicas statement for MySQL.
  */
+@Getter
 public final class MySQLShowReplicasStatement extends DALStatement {
     
-    @Getter
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowReplicasStatement(final DatabaseType databaseType) {
         super(databaseType);
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowSlaveHostsStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowSlaveHostsStatement.java
index 95bcb3892f1..53487089ca5 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowSlaveHostsStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowSlaveHostsStatement.java
@@ -26,17 +26,17 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DA
 /**
  * Show slave hosts statement for MySQL.
  */
+@Getter
 public final class MySQLShowSlaveHostsStatement extends DALStatement {
     
-    @Getter
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowSlaveHostsStatement(final DatabaseType databaseType) {
         super(databaseType);
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowSlaveStatusStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowSlaveStatusStatement.java
index ce9fb454b6f..a6024285349 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowSlaveStatusStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowSlaveStatusStatement.java
@@ -31,15 +31,15 @@ public final class MySQLShowSlaveStatusStatement extends 
DALStatement {
     
     private final String channel;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowSlaveStatusStatement(final DatabaseType databaseType, 
final String channel) {
         super(databaseType);
         this.channel = channel;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowStatusStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowStatusStatement.java
index 01faa7799e7..b93c4293f7d 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowStatusStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/replication/show/MySQLShowStatusStatement.java
@@ -32,15 +32,15 @@ public final class MySQLShowStatusStatement extends 
DALStatement {
     
     private final ShowFilterSegment filter;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowStatusStatement(final DatabaseType databaseType, final 
ShowFilterSegment filter) {
         super(databaseType);
         this.filter = filter;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/character/MySQLShowCharacterSetStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/character/MySQLShowCharacterSetStatement.java
index bbbc87d04b9..e43bb9afbfa 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/character/MySQLShowCharacterSetStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/character/MySQLShowCharacterSetStatement.java
@@ -32,15 +32,15 @@ public final class MySQLShowCharacterSetStatement extends 
DALStatement {
     
     private final ShowFilterSegment filter;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowCharacterSetStatement(final DatabaseType databaseType, 
final ShowFilterSegment filter) {
         super(databaseType);
         this.filter = filter;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/character/MySQLShowCollationStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/character/MySQLShowCollationStatement.java
index 6eeb5136c01..ba8eabcfa65 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/character/MySQLShowCollationStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/character/MySQLShowCollationStatement.java
@@ -32,15 +32,15 @@ public final class MySQLShowCollationStatement extends 
DALStatement {
     
     private final ShowFilterSegment filter;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowCollationStatement(final DatabaseType databaseType, final 
ShowFilterSegment filter) {
         super(databaseType);
         this.filter = filter;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLDescribeStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLDescribeStatement.java
index 25bd992f5e9..9fc894c223e 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLDescribeStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLDescribeStatement.java
@@ -38,10 +38,10 @@ public final class MySQLDescribeStatement extends 
DALStatement {
     
     private final ColumnSegment columnWildcard;
     
-    private SQLStatementAttributes attributes;
-    
     private final boolean showAll;
     
+    private final SQLStatementAttributes attributes;
+    
     public MySQLDescribeStatement(final DatabaseType databaseType, final 
SimpleTableSegment table, final ColumnSegment columnWildcard) {
         this(databaseType, table, columnWildcard, false);
     }
@@ -51,6 +51,7 @@ public final class MySQLDescribeStatement extends 
DALStatement {
         this.table = table;
         this.columnWildcard = columnWildcard;
         this.showAll = showAll;
+        attributes = new SQLStatementAttributes(new 
ColumnInResultSetSQLStatementAttribute(1), new 
TableSQLStatementAttribute(table));
     }
     
     /**
@@ -64,6 +65,5 @@ public final class MySQLDescribeStatement extends 
DALStatement {
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
ColumnInResultSetSQLStatementAttribute(1), new 
TableSQLStatementAttribute(table));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLShowColumnsStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLShowColumnsStatement.java
index 9f503ed8f24..b55621620fb 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLShowColumnsStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLShowColumnsStatement.java
@@ -42,13 +42,14 @@ public final class MySQLShowColumnsStatement extends 
DALStatement {
     
     private final ShowFilterSegment filter;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowColumnsStatement(final DatabaseType databaseType, final 
SimpleTableSegment table, final FromDatabaseSegment fromDatabase, final 
ShowFilterSegment filter) {
         super(databaseType);
         this.table = table;
         this.fromDatabase = fromDatabase;
         this.filter = filter;
+        attributes = new SQLStatementAttributes(new 
ColumnInResultSetSQLStatementAttribute(1), new 
FromDatabaseSQLStatementAttribute(fromDatabase), new 
TableSQLStatementAttribute(table));
     }
     
     /**
@@ -71,6 +72,5 @@ public final class MySQLShowColumnsStatement extends 
DALStatement {
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
ColumnInResultSetSQLStatementAttribute(1), new 
FromDatabaseSQLStatementAttribute(fromDatabase), new 
TableSQLStatementAttribute(table));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/database/MySQLShowCreateDatabaseStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/database/MySQLShowCreateDatabaseStatement.java
index 8ab74eaf61d..882b6ed0d1e 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/database/MySQLShowCreateDatabaseStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/database/MySQLShowCreateDatabaseStatement.java
@@ -31,15 +31,15 @@ public final class MySQLShowCreateDatabaseStatement extends 
DALStatement {
     
     private final String databaseName;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowCreateDatabaseStatement(final DatabaseType databaseType, 
final String databaseName) {
         super(databaseType);
         this.databaseName = databaseName;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/database/MySQLShowDatabasesStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/database/MySQLShowDatabasesStatement.java
index 9f91d7f0722..4b4a58b1c1f 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/database/MySQLShowDatabasesStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/database/MySQLShowDatabasesStatement.java
@@ -30,16 +30,17 @@ import java.util.Optional;
 /**
  * Show databases statement for MySQL.
  */
+@Getter
 public final class MySQLShowDatabasesStatement extends DALStatement {
     
     private final ShowFilterSegment filter;
     
-    @Getter
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowDatabasesStatement(final DatabaseType databaseType, final 
ShowFilterSegment filter) {
         super(databaseType);
         this.filter = filter;
+        attributes = new SQLStatementAttributes(new 
TablelessDataSourceBroadcastRouteSQLStatementAttribute(), new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     /**
@@ -53,6 +54,5 @@ public final class MySQLShowDatabasesStatement extends 
DALStatement {
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
TablelessDataSourceBroadcastRouteSQLStatementAttribute(), new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/engine/MySQLShowEngineStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/engine/MySQLShowEngineStatement.java
index 3f2d20e7da5..01504cccdb9 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/engine/MySQLShowEngineStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/engine/MySQLShowEngineStatement.java
@@ -31,15 +31,15 @@ public final class MySQLShowEngineStatement extends 
DALStatement {
     
     private final String engineName;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowEngineStatement(final DatabaseType databaseType, final 
String engineName) {
         super(databaseType);
         this.engineName = engineName;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/error/MySQLShowErrorsStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/error/MySQLShowErrorsStatement.java
index 7a8b94d972b..204da85e506 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/error/MySQLShowErrorsStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/error/MySQLShowErrorsStatement.java
@@ -32,15 +32,15 @@ public final class MySQLShowErrorsStatement extends 
DALStatement {
     
     private final LimitSegment limit;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowErrorsStatement(final DatabaseType databaseType, final 
LimitSegment limit) {
         super(databaseType);
         this.limit = limit;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/error/MySQLShowWarningsStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/error/MySQLShowWarningsStatement.java
index 5a7e99062c2..66b8a4b5d1c 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/error/MySQLShowWarningsStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/error/MySQLShowWarningsStatement.java
@@ -32,15 +32,15 @@ public final class MySQLShowWarningsStatement extends 
DALStatement {
     
     private final LimitSegment limit;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowWarningsStatement(final DatabaseType databaseType, final 
LimitSegment limit) {
         super(databaseType);
         this.limit = limit;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/event/MySQLShowCreateEventStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/event/MySQLShowCreateEventStatement.java
index 3d321e4d184..b8a9cfed450 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/event/MySQLShowCreateEventStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/event/MySQLShowCreateEventStatement.java
@@ -31,15 +31,15 @@ public final class MySQLShowCreateEventStatement extends 
DALStatement {
     
     private final String eventName;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowCreateEventStatement(final DatabaseType databaseType, 
final String eventName) {
         super(databaseType);
         this.eventName = eventName;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/event/MySQLShowEventsStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/event/MySQLShowEventsStatement.java
index ecbfd46254b..8949950c07e 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/event/MySQLShowEventsStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/event/MySQLShowEventsStatement.java
@@ -35,16 +35,16 @@ public final class MySQLShowEventsStatement extends 
DALStatement {
     
     private final ShowFilterSegment filter;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowEventsStatement(final DatabaseType databaseType, final 
FromDatabaseSegment fromDatabase, final ShowFilterSegment filter) {
         super(databaseType);
         this.fromDatabase = fromDatabase;
         this.filter = filter;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/function/MySQLShowFunctionStatusStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/function/MySQLShowFunctionStatusStatement.java
index 9f182621ce2..3ad4546b49f 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/function/MySQLShowFunctionStatusStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/function/MySQLShowFunctionStatusStatement.java
@@ -32,15 +32,15 @@ public final class MySQLShowFunctionStatusStatement extends 
DALStatement {
     
     private final ShowFilterSegment filter;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowFunctionStatusStatement(final DatabaseType databaseType, 
final ShowFilterSegment filter) {
         super(databaseType);
         this.filter = filter;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/index/MySQLShowIndexStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/index/MySQLShowIndexStatement.java
index 71770efb876..fd5e2c75926 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/index/MySQLShowIndexStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/index/MySQLShowIndexStatement.java
@@ -38,12 +38,13 @@ public final class MySQLShowIndexStatement extends 
DALStatement {
     
     private final FromDatabaseSegment fromDatabase;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowIndexStatement(final DatabaseType databaseType, final 
SimpleTableSegment table, final FromDatabaseSegment fromDatabase) {
         super(databaseType);
         this.table = table;
         this.fromDatabase = fromDatabase;
+        attributes = new SQLStatementAttributes(new 
FromDatabaseSQLStatementAttribute(fromDatabase), new 
TableSQLStatementAttribute(table));
     }
     
     /**
@@ -57,6 +58,5 @@ public final class MySQLShowIndexStatement extends 
DALStatement {
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
FromDatabaseSQLStatementAttribute(fromDatabase), new 
TableSQLStatementAttribute(table));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/privilege/MySQLShowCreateUserStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/privilege/MySQLShowCreateUserStatement.java
index 4076f2ae87d..4afc23e019e 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/privilege/MySQLShowCreateUserStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/privilege/MySQLShowCreateUserStatement.java
@@ -31,15 +31,15 @@ public final class MySQLShowCreateUserStatement extends 
DALStatement {
     
     private final String name;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowCreateUserStatement(final DatabaseType databaseType, final 
String name) {
         super(databaseType);
         this.name = name;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/privilege/MySQLShowGrantsStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/privilege/MySQLShowGrantsStatement.java
index 74cfa6ea77a..6751b4a71dc 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/privilege/MySQLShowGrantsStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/privilege/MySQLShowGrantsStatement.java
@@ -26,17 +26,17 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DA
 /**
  * Show grants statement for MySQL.
  */
+@Getter
 public final class MySQLShowGrantsStatement extends DALStatement {
     
-    @Getter
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowGrantsStatement(final DatabaseType databaseType) {
         super(databaseType);
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/privilege/MySQLShowPrivilegesStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/privilege/MySQLShowPrivilegesStatement.java
index 57413ec6a6b..cea7b50046b 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/privilege/MySQLShowPrivilegesStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/privilege/MySQLShowPrivilegesStatement.java
@@ -26,17 +26,17 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DA
 /**
  * Show privileges statement for MySQL.
  */
+@Getter
 public final class MySQLShowPrivilegesStatement extends DALStatement {
     
-    @Getter
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowPrivilegesStatement(final DatabaseType databaseType) {
         super(databaseType);
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/procedure/MySQLShowProcedureStatusStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/procedure/MySQLShowProcedureStatusStatement.java
index 923a53c3e65..8d4c22e7bf1 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/procedure/MySQLShowProcedureStatusStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/procedure/MySQLShowProcedureStatusStatement.java
@@ -32,15 +32,15 @@ public final class MySQLShowProcedureStatusStatement 
extends DALStatement {
     
     private final ShowFilterSegment filter;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowProcedureStatusStatement(final DatabaseType databaseType, 
final ShowFilterSegment filter) {
         super(databaseType);
         this.filter = filter;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/process/MySQLShowProcessListStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/process/MySQLShowProcessListStatement.java
index a5b270e47cb..de28ffa0501 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/process/MySQLShowProcessListStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/process/MySQLShowProcessListStatement.java
@@ -31,15 +31,15 @@ public final class MySQLShowProcessListStatement extends 
DALStatement {
     
     private final boolean full;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowProcessListStatement(final DatabaseType databaseType, 
final boolean full) {
         super(databaseType);
         this.full = full;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/profile/MySQLShowProfileStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/profile/MySQLShowProfileStatement.java
index 679b9a2e4c9..49285725199 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/profile/MySQLShowProfileStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/profile/MySQLShowProfileStatement.java
@@ -32,15 +32,15 @@ public final class MySQLShowProfileStatement extends 
DALStatement {
     
     private final LimitSegment limit;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowProfileStatement(final DatabaseType databaseType, final 
LimitSegment limit) {
         super(databaseType);
         this.limit = limit;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/profile/MySQLShowProfilesStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/profile/MySQLShowProfilesStatement.java
index 2b225020c58..8e310fc958c 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/profile/MySQLShowProfilesStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/profile/MySQLShowProfilesStatement.java
@@ -26,17 +26,17 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DA
 /**
  * Show profiles statement for MySQL.
  */
+@Getter
 public final class MySQLShowProfilesStatement extends DALStatement {
     
-    @Getter
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowProfilesStatement(final DatabaseType databaseType) {
         super(databaseType);
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowCreateTableStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowCreateTableStatement.java
index bad884b60a3..51344e367f9 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowCreateTableStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowCreateTableStatement.java
@@ -34,15 +34,15 @@ public final class MySQLShowCreateTableStatement extends 
DALStatement {
     
     private final SimpleTableSegment table;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowCreateTableStatement(final DatabaseType databaseType, 
final SimpleTableSegment table) {
         super(databaseType);
         this.table = table;
+        attributes = new SQLStatementAttributes(new 
DatabaseSelectRequiredSQLStatementAttribute(), new 
TableInResultSetSQLStatementAttribute(2), new 
TableSQLStatementAttribute(table));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
DatabaseSelectRequiredSQLStatementAttribute(), new 
TableInResultSetSQLStatementAttribute(2), new 
TableSQLStatementAttribute(table));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowOpenTablesStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowOpenTablesStatement.java
index 1e6e1628d56..4219be0024a 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowOpenTablesStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowOpenTablesStatement.java
@@ -35,17 +35,16 @@ public final class MySQLShowOpenTablesStatement extends 
DALStatement {
     
     private final ShowFilterSegment filter;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowOpenTablesStatement(final DatabaseType databaseType, final 
FromDatabaseSegment fromDatabase, final ShowFilterSegment filter) {
         super(databaseType);
         this.fromDatabase = fromDatabase;
         this.filter = filter;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true, null == fromDatabase ? null : 
fromDatabase.getDatabase().getIdentifier().getValue()));
     }
     
     @Override
     public void buildAttributes() {
-        String databaseName = null == fromDatabase ? null : 
fromDatabase.getDatabase().getIdentifier().getValue();
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true, databaseName));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowTableStatusStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowTableStatusStatement.java
index 4df544e84b9..a6079ddc409 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowTableStatusStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowTableStatusStatement.java
@@ -40,12 +40,17 @@ public final class MySQLShowTableStatusStatement extends 
DALStatement {
     
     private final ShowFilterSegment filter;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowTableStatusStatement(final DatabaseType databaseType, 
final FromDatabaseSegment fromDatabase, final ShowFilterSegment filter) {
         super(databaseType);
         this.fromDatabase = fromDatabase;
         this.filter = filter;
+        attributes = new SQLStatementAttributes(
+                new DatabaseSelectRequiredSQLStatementAttribute(),
+                new FromDatabaseSQLStatementAttribute(fromDatabase),
+                new TablelessDataSourceBroadcastRouteSQLStatementAttribute(),
+                new AllowNotUseDatabaseSQLStatementAttribute(true, null == 
fromDatabase ? null : fromDatabase.getDatabase().getIdentifier().getValue()));
     }
     
     /**
@@ -68,8 +73,5 @@ public final class MySQLShowTableStatusStatement extends 
DALStatement {
     
     @Override
     public void buildAttributes() {
-        String databaseName = null == fromDatabase ? null : 
fromDatabase.getDatabase().getIdentifier().getValue();
-        attributes = new SQLStatementAttributes(new 
DatabaseSelectRequiredSQLStatementAttribute(), new 
FromDatabaseSQLStatementAttribute(fromDatabase),
-                new TablelessDataSourceBroadcastRouteSQLStatementAttribute(), 
new AllowNotUseDatabaseSQLStatementAttribute(true, databaseName));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowTablesStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowTablesStatement.java
index 460719e3e96..22f4c2c5ae9 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowTablesStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/table/MySQLShowTablesStatement.java
@@ -42,13 +42,18 @@ public final class MySQLShowTablesStatement extends 
DALStatement {
     
     private final boolean containsFull;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowTablesStatement(final DatabaseType databaseType, final 
FromDatabaseSegment fromDatabase, final ShowFilterSegment filter, final boolean 
containsFull) {
         super(databaseType);
         this.fromDatabase = fromDatabase;
         this.filter = filter;
         this.containsFull = containsFull;
+        attributes = new SQLStatementAttributes(
+                new DatabaseSelectRequiredSQLStatementAttribute(),
+                new FromDatabaseSQLStatementAttribute(fromDatabase),
+                new TablelessDataSourceBroadcastRouteSQLStatementAttribute(),
+                new AllowNotUseDatabaseSQLStatementAttribute(true, null == 
fromDatabase ? null : fromDatabase.getDatabase().getIdentifier().getValue()));
     }
     
     /**
@@ -71,8 +76,5 @@ public final class MySQLShowTablesStatement extends 
DALStatement {
     
     @Override
     public void buildAttributes() {
-        String databaseName = null == fromDatabase ? null : 
fromDatabase.getDatabase().getIdentifier().getValue();
-        attributes = new SQLStatementAttributes(new 
DatabaseSelectRequiredSQLStatementAttribute(), new 
FromDatabaseSQLStatementAttribute(fromDatabase),
-                new TablelessDataSourceBroadcastRouteSQLStatementAttribute(), 
new AllowNotUseDatabaseSQLStatementAttribute(true, databaseName));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/trigger/MySQLShowTriggersStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/trigger/MySQLShowTriggersStatement.java
index b0021a10873..b7f1e0108d1 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/trigger/MySQLShowTriggersStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/trigger/MySQLShowTriggersStatement.java
@@ -35,17 +35,16 @@ public final class MySQLShowTriggersStatement extends 
DALStatement {
     
     private final ShowFilterSegment filter;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowTriggersStatement(final DatabaseType databaseType, final 
FromDatabaseSegment fromDatabase, final ShowFilterSegment filter) {
         super(databaseType);
         this.fromDatabase = fromDatabase;
         this.filter = filter;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true, null == fromDatabase ? null : 
fromDatabase.getDatabase().getIdentifier().getValue()));
     }
     
     @Override
     public void buildAttributes() {
-        String databaseName = null == fromDatabase ? null : 
fromDatabase.getDatabase().getIdentifier().getValue();
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true, databaseName));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/variable/MySQLShowVariablesStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/variable/MySQLShowVariablesStatement.java
index adec074eca8..649d2d3aaf0 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/variable/MySQLShowVariablesStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/variable/MySQLShowVariablesStatement.java
@@ -32,15 +32,15 @@ public final class MySQLShowVariablesStatement extends 
DALStatement {
     
     private final ShowFilterSegment filter;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowVariablesStatement(final DatabaseType databaseType, final 
ShowFilterSegment filter) {
         super(databaseType);
         this.filter = filter;
+        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
AllowNotUseDatabaseSQLStatementAttribute(true));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/view/MySQLShowCreateViewStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/view/MySQLShowCreateViewStatement.java
index cdfafce2a65..e36817a44bc 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/view/MySQLShowCreateViewStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/view/MySQLShowCreateViewStatement.java
@@ -17,12 +17,12 @@
 
 package org.apache.shardingsphere.sql.parser.statement.mysql.dal.show.view;
 
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.ViewInResultSetSQLStatementAttribute;
 import lombok.Getter;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.DatabaseSelectRequiredSQLStatementAttribute;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.ViewInResultSetSQLStatementAttribute;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DALStatement;
 
 /**
@@ -33,16 +33,20 @@ public final class MySQLShowCreateViewStatement extends 
DALStatement {
     
     private final SimpleTableSegment viewName;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLShowCreateViewStatement(final DatabaseType databaseType, final 
SimpleTableSegment viewName) {
         super(databaseType);
         this.viewName = viewName;
+        if (null == viewName) {
+            attributes = new SQLStatementAttributes(new 
DatabaseSelectRequiredSQLStatementAttribute());
+        } else {
+            attributes = new SQLStatementAttributes(new 
DatabaseSelectRequiredSQLStatementAttribute(),
+                    new ViewInResultSetSQLStatementAttribute(2, 
viewName.getTableName().getIdentifier().getValue()));
+        }
     }
     
     @Override
     public void buildAttributes() {
-        attributes =
-                new SQLStatementAttributes(new 
DatabaseSelectRequiredSQLStatementAttribute(), new 
ViewInResultSetSQLStatementAttribute(2, 
getViewName().getTableName().getIdentifier().getValue()));
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/table/MySQLOptimizeTableStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/table/MySQLOptimizeTableStatement.java
index 499537df5d4..9c17dfb6687 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/table/MySQLOptimizeTableStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/table/MySQLOptimizeTableStatement.java
@@ -35,15 +35,15 @@ public final class MySQLOptimizeTableStatement extends 
DALStatement {
     
     private final Collection<SimpleTableSegment> tables;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLOptimizeTableStatement(final DatabaseType databaseType, final 
Collection<SimpleTableSegment> tables) {
         super(databaseType);
         this.tables = tables;
+        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(tables), new 
TableBroadcastRouteSQLStatementAttribute());
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(tables), new 
TableBroadcastRouteSQLStatementAttribute());
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dml/MySQLLoadDataStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dml/MySQLLoadDataStatement.java
index 924749dc435..f55b3671c30 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dml/MySQLLoadDataStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dml/MySQLLoadDataStatement.java
@@ -33,15 +33,15 @@ public final class MySQLLoadDataStatement extends 
DMLStatement {
     
     private final SimpleTableSegment table;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLLoadDataStatement(final DatabaseType databaseType, final 
SimpleTableSegment table) {
         super(databaseType);
         this.table = table;
+        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(table), new 
UnsupportedDistributeSQLStatementAttribute());
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(table), new 
UnsupportedDistributeSQLStatementAttribute());
     }
 }
diff --git 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dml/MySQLLoadXMLStatement.java
 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dml/MySQLLoadXMLStatement.java
index 191aef5cb99..609b2c3d214 100644
--- 
a/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dml/MySQLLoadXMLStatement.java
+++ 
b/parser/sql/statement/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dml/MySQLLoadXMLStatement.java
@@ -26,22 +26,22 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.t
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.DMLStatement;
 
 /**
- * Load xml statement for MySQL.
+ * Load XML statement for MySQL.
  */
 @Getter
 public final class MySQLLoadXMLStatement extends DMLStatement {
     
     private final SimpleTableSegment table;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public MySQLLoadXMLStatement(final DatabaseType databaseType, final 
SimpleTableSegment table) {
         super(databaseType);
         this.table = table;
+        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(table), new 
UnsupportedDistributeSQLStatementAttribute());
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(table), new 
UnsupportedDistributeSQLStatementAttribute());
     }
 }
diff --git 
a/parser/sql/statement/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/statement/postgresql/dml/PostgreSQLCopyStatement.java
 
b/parser/sql/statement/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/statement/postgresql/dml/PostgreSQLCopyStatement.java
index 2d5110f7b13..a72cf47f559 100644
--- 
a/parser/sql/statement/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/statement/postgresql/dml/PostgreSQLCopyStatement.java
+++ 
b/parser/sql/statement/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/statement/postgresql/dml/PostgreSQLCopyStatement.java
@@ -43,7 +43,7 @@ public final class PostgreSQLCopyStatement extends 
DMLStatement {
     
     private final PrepareStatementQuerySegment prepareStatementQuery;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     public PostgreSQLCopyStatement(final DatabaseType databaseType,
                                    final SimpleTableSegment table, final 
Collection<ColumnSegment> columns, final PrepareStatementQuerySegment 
prepareStatementQuery) {
@@ -51,6 +51,8 @@ public final class PostgreSQLCopyStatement extends 
DMLStatement {
         this.table = table;
         this.columns = columns;
         this.prepareStatementQuery = prepareStatementQuery;
+        attributes = new SQLStatementAttributes(
+                new TableSQLStatementAttribute(null == table ? 
Collections.emptyList() : Collections.singletonList(table)), new 
UnsupportedDistributeSQLStatementAttribute());
     }
     
     /**
@@ -73,7 +75,5 @@ public final class PostgreSQLCopyStatement extends 
DMLStatement {
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(
-                new TableSQLStatementAttribute(null == table ? 
Collections.emptyList() : Collections.singletonList(table)), new 
UnsupportedDistributeSQLStatementAttribute());
     }
 }

Reply via email to