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

dataroaring pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git

commit df07690109a68040ff378d977a4f7d6bd736d9ce
Author: shee <13843187+qz...@users.noreply.github.com>
AuthorDate: Fri Jul 26 14:37:51 2024 +0800

     [Improvement][Audit] add sql type for query audit (#37790)
    
    
    Co-authored-by: garenshi <garen...@tencent.com>
---
 .../doris/analysis/AlterCatalogCommentStmt.java    |  5 ++
 .../doris/analysis/AlterCatalogNameStmt.java       |  5 ++
 .../doris/analysis/AlterCatalogPropertyStmt.java   |  5 ++
 .../doris/analysis/AlterColocateGroupStmt.java     |  5 ++
 .../doris/analysis/AlterColumnStatsStmt.java       |  5 ++
 .../doris/analysis/AlterDatabasePropertyStmt.java  |  5 ++
 .../doris/analysis/AlterDatabaseQuotaStmt.java     |  5 ++
 .../apache/doris/analysis/AlterDatabaseRename.java |  5 ++
 .../apache/doris/analysis/AlterJobStatusStmt.java  |  5 ++
 .../org/apache/doris/analysis/AlterPolicyStmt.java |  5 ++
 .../apache/doris/analysis/AlterRepositoryStmt.java |  5 ++
 .../apache/doris/analysis/AlterResourceStmt.java   |  5 ++
 .../org/apache/doris/analysis/AlterRoleStmt.java   |  5 ++
 .../doris/analysis/AlterRoutineLoadStmt.java       |  6 +++
 .../doris/analysis/AlterSqlBlockRuleStmt.java      |  5 ++
 .../org/apache/doris/analysis/AlterSystemStmt.java |  5 ++
 .../org/apache/doris/analysis/AlterTableStmt.java  |  5 ++
 .../org/apache/doris/analysis/AlterUserStmt.java   |  5 ++
 .../org/apache/doris/analysis/AlterViewStmt.java   |  5 ++
 .../doris/analysis/AlterWorkloadGroupStmt.java     |  5 ++
 .../org/apache/doris/analysis/AnalyzeStmt.java     |  5 ++
 .../java/org/apache/doris/analysis/BackupStmt.java |  6 +++
 .../doris/analysis/CancelAlterSystemStmt.java      |  5 ++
 .../doris/analysis/CancelAlterTableStmt.java       |  5 ++
 .../apache/doris/analysis/CancelBackupStmt.java    |  5 ++
 .../apache/doris/analysis/CancelExportStmt.java    |  5 ++
 .../apache/doris/analysis/CancelJobTaskStmt.java   |  5 ++
 .../org/apache/doris/analysis/CancelLoadStmt.java  |  5 ++
 .../org/apache/doris/analysis/CleanLabelStmt.java  |  5 ++
 .../apache/doris/analysis/CleanProfileStmt.java    |  5 ++
 .../apache/doris/analysis/CleanQueryStatsStmt.java |  5 ++
 .../apache/doris/analysis/CreateCatalogStmt.java   |  5 ++
 .../doris/analysis/CreateDataSyncJobStmt.java      |  5 ++
 .../org/apache/doris/analysis/CreateDbStmt.java    |  5 ++
 .../doris/analysis/CreateEncryptKeyStmt.java       |  5 ++
 .../org/apache/doris/analysis/CreateFileStmt.java  |  5 ++
 .../apache/doris/analysis/CreateFunctionStmt.java  |  5 ++
 .../doris/analysis/CreateMaterializedViewStmt.java |  5 ++
 .../apache/doris/analysis/CreatePolicyStmt.java    |  5 ++
 .../doris/analysis/CreateRepositoryStmt.java       |  5 ++
 .../apache/doris/analysis/CreateResourceStmt.java  |  5 ++
 .../org/apache/doris/analysis/CreateRoleStmt.java  |  5 ++
 .../doris/analysis/CreateRoutineLoadStmt.java      |  5 ++
 .../doris/analysis/CreateSqlBlockRuleStmt.java     |  5 ++
 .../doris/analysis/CreateTableAsSelectStmt.java    |  5 ++
 .../apache/doris/analysis/CreateTableLikeStmt.java |  5 ++
 .../org/apache/doris/analysis/CreateTableStmt.java |  5 ++
 .../org/apache/doris/analysis/CreateUserStmt.java  |  5 ++
 .../org/apache/doris/analysis/CreateViewStmt.java  |  5 ++
 .../doris/analysis/CreateWorkloadGroupStmt.java    |  5 ++
 .../analysis/CreateWorkloadSchedPolicyStmt.java    |  5 ++
 .../java/org/apache/doris/analysis/DdlStmt.java    |  5 ++
 .../java/org/apache/doris/analysis/DeleteStmt.java |  5 ++
 .../apache/doris/analysis/DropAnalyzeJobStmt.java  |  5 ++
 .../org/apache/doris/analysis/DropCatalogStmt.java |  5 ++
 .../java/org/apache/doris/analysis/DropDbStmt.java |  5 ++
 .../apache/doris/analysis/DropEncryptKeyStmt.java  |  5 ++
 .../org/apache/doris/analysis/DropFileStmt.java    |  5 ++
 .../apache/doris/analysis/DropFunctionStmt.java    |  5 ++
 .../doris/analysis/DropMaterializedViewStmt.java   |  5 ++
 .../org/apache/doris/analysis/DropPolicyStmt.java  |  5 ++
 .../apache/doris/analysis/DropRepositoryStmt.java  |  5 ++
 .../apache/doris/analysis/DropResourceStmt.java    |  5 ++
 .../org/apache/doris/analysis/DropRoleStmt.java    |  5 ++
 .../doris/analysis/DropSqlBlockRuleStmt.java       |  5 ++
 .../org/apache/doris/analysis/DropStatsStmt.java   |  5 ++
 .../org/apache/doris/analysis/DropTableStmt.java   |  5 ++
 .../org/apache/doris/analysis/DropUserStmt.java    |  5 ++
 .../doris/analysis/DropWorkloadGroupStmt.java      |  5 ++
 .../analysis/DropWorkloadSchedPolicyStmt.java      |  5 ++
 .../org/apache/doris/analysis/ExecuteStmt.java     |  5 ++
 .../java/org/apache/doris/analysis/ExportStmt.java |  5 ++
 .../java/org/apache/doris/analysis/GrantStmt.java  |  5 ++
 .../doris/analysis/InsertOverwriteTableStmt.java   |  6 +++
 .../java/org/apache/doris/analysis/InsertStmt.java |  5 ++
 .../apache/doris/analysis/InstallPluginStmt.java   |  5 ++
 .../apache/doris/analysis/KillAnalysisJobStmt.java |  5 ++
 .../java/org/apache/doris/analysis/KillStmt.java   |  5 ++
 .../java/org/apache/doris/analysis/LoadStmt.java   |  4 ++
 .../doris/analysis/PauseRoutineLoadStmt.java       |  5 ++
 .../apache/doris/analysis/PauseSyncJobStmt.java    |  5 ++
 .../org/apache/doris/analysis/RecoverDbStmt.java   |  5 ++
 .../doris/analysis/RecoverPartitionStmt.java       |  5 ++
 .../apache/doris/analysis/RecoverTableStmt.java    |  5 ++
 .../apache/doris/analysis/RefreshCatalogStmt.java  |  4 ++
 .../org/apache/doris/analysis/RefreshDbStmt.java   |  5 ++
 .../org/apache/doris/analysis/RefreshLdapStmt.java |  5 ++
 .../apache/doris/analysis/RefreshTableStmt.java    |  5 ++
 .../org/apache/doris/analysis/RestoreStmt.java     |  5 ++
 .../doris/analysis/ResumeRoutineLoadStmt.java      |  5 ++
 .../apache/doris/analysis/ResumeSyncJobStmt.java   |  5 ++
 .../java/org/apache/doris/analysis/RevokeStmt.java |  5 ++
 .../java/org/apache/doris/analysis/SelectStmt.java |  5 ++
 .../apache/doris/analysis/SetOperationStmt.java    |  7 +++
 .../java/org/apache/doris/analysis/SetStmt.java    |  5 ++
 .../apache/doris/analysis/SetUserPropertyStmt.java |  5 ++
 .../java/org/apache/doris/analysis/ShowStmt.java   |  5 ++
 .../org/apache/doris/analysis/StatementBase.java   |  4 ++
 .../analysis/{ShowStmt.java => StmtType.java}      | 55 ++++++++++++++++------
 .../apache/doris/analysis/StopRoutineLoadStmt.java |  5 ++
 .../org/apache/doris/analysis/StopSyncJobStmt.java |  5 ++
 .../java/org/apache/doris/analysis/SwitchStmt.java |  5 ++
 .../java/org/apache/doris/analysis/SyncStmt.java   |  5 ++
 .../org/apache/doris/analysis/TransactionStmt.java |  5 ++
 .../apache/doris/analysis/TruncateTableStmt.java   |  5 ++
 .../apache/doris/analysis/UninstallPluginStmt.java |  5 ++
 .../apache/doris/analysis/UnsetVariableStmt.java   |  5 ++
 .../java/org/apache/doris/analysis/UpdateStmt.java |  5 ++
 .../java/org/apache/doris/analysis/UseStmt.java    |  5 ++
 .../org/apache/doris/catalog/InternalSchema.java   |  1 +
 .../doris/nereids/analyzer/UnboundResultSink.java  |  6 +++
 .../trees/plans/commands/AlterMTMVCommand.java     |  5 ++
 .../trees/plans/commands/AlterViewCommand.java     |  6 +++
 .../nereids/trees/plans/commands/CallCommand.java  |  5 ++
 .../plans/commands/CancelMTMVTaskCommand.java      |  6 +++
 .../trees/plans/commands/CreateMTMVCommand.java    |  6 +++
 .../trees/plans/commands/CreatePolicyCommand.java  |  6 +++
 .../plans/commands/CreateProcedureCommand.java     |  6 +++
 .../trees/plans/commands/CreateTableCommand.java   |  6 +++
 .../plans/commands/CreateTableLikeCommand.java     |  6 +++
 .../trees/plans/commands/CreateViewCommand.java    |  6 +++
 .../trees/plans/commands/DeleteFromCommand.java    |  6 +++
 .../plans/commands/DeleteFromUsingCommand.java     |  6 +++
 .../trees/plans/commands/DropMTMVCommand.java      |  6 +++
 .../trees/plans/commands/DropProcedureCommand.java |  6 +++
 .../trees/plans/commands/ExecuteCommand.java       |  6 +++
 .../trees/plans/commands/ExplainCommand.java       |  6 +++
 .../trees/plans/commands/ExportCommand.java        |  6 +++
 .../nereids/trees/plans/commands/LoadCommand.java  |  6 +++
 .../trees/plans/commands/PauseMTMVCommand.java     |  6 +++
 .../trees/plans/commands/PrepareCommand.java       |  6 +++
 .../trees/plans/commands/RefreshMTMVCommand.java   |  6 +++
 .../trees/plans/commands/ResumeMTMVCommand.java    |  6 +++
 .../plans/commands/ShowConstraintsCommand.java     |  6 +++
 .../plans/commands/ShowCreateProcedureCommand.java |  6 +++
 .../plans/commands/ShowProcedureStatusCommand.java |  6 +++
 .../trees/plans/commands/UpdateCommand.java        |  6 +++
 .../insert/BatchInsertIntoTableCommand.java        |  6 +++
 .../commands/insert/InsertIntoTableCommand.java    |  6 +++
 .../insert/InsertOverwriteTableCommand.java        |  6 +++
 .../nereids/trees/plans/logical/LogicalPlan.java   |  5 ++
 .../org/apache/doris/plugin/audit/AuditEvent.java  |  7 +++
 .../doris/plugin/audit/AuditLoaderPlugin.java      |  1 +
 .../java/org/apache/doris/qe/AuditLogHelper.java   | 18 +++++++
 .../doris/alter/InternalSchemaAlterTest.java       | 14 ++++++
 .../org/apache/doris/analysis/QueryStmtTest.java   | 29 ++++++++++++
 .../doris/nereids/parser/NereidsParserTest.java    | 21 +++++++++
 .../apache/doris/qe/AuditEventProcessorTest.java   |  2 +
 .../org/apache/doris/utframe/UtFrameUtils.java     | 20 ++++++++
 .../apache/doris/plugin/audit/AuditPluginDemo.java |  1 -
 .../src/main/assembly/plugin.properties            |  2 +-
 .../audit/{ => custom}/AuditLoaderPlugin.java      | 15 ++++--
 .../audit/{ => custom}/DorisStreamLoader.java      | 17 +++----
 .../dialect/spark/SparkSql3LogicalPlanBuilder.java |  2 +-
 .../spark/SparkSqlDialectConverterPlugin.java      |  2 +-
 .../dialect/trino/TrinoLogicalPlanBuilder.java     |  2 +-
 156 files changed, 902 insertions(+), 32 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterCatalogCommentStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterCatalogCommentStmt.java
index cfc52f077d7..8249b01b2bf 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterCatalogCommentStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterCatalogCommentStmt.java
@@ -46,4 +46,9 @@ public class AlterCatalogCommentStmt extends AlterCatalogStmt 
{
     public String toSql() {
         return "ALTER CATALOG " + catalogName + " MODIFY COMMENT " + comment;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterCatalogNameStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterCatalogNameStmt.java
index f3c363fd5eb..abfdae6b5a8 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterCatalogNameStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterCatalogNameStmt.java
@@ -56,4 +56,9 @@ public class AlterCatalogNameStmt extends AlterCatalogStmt {
     public String toSql() {
         return "ALTER CATALOG " + catalogName + " RENAME " + newCatalogName;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterCatalogPropertyStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterCatalogPropertyStmt.java
index 3cac7056276..1f204015ad7 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterCatalogPropertyStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterCatalogPropertyStmt.java
@@ -54,4 +54,9 @@ public class AlterCatalogPropertyStmt extends 
AlterCatalogStmt {
     public boolean needAuditEncryption() {
         return true;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterColocateGroupStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterColocateGroupStmt.java
index 2885d662555..98b1ec76f98 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterColocateGroupStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterColocateGroupStmt.java
@@ -79,4 +79,9 @@ public class AlterColocateGroupStmt extends DdlStmt {
         sb.append("PROPERTIES(").append(new PrintableMap<>(properties, " = ", 
true, false)).append(")");
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterColumnStatsStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterColumnStatsStmt.java
index 9e76b065921..40c8600381e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterColumnStatsStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterColumnStatsStmt.java
@@ -219,4 +219,9 @@ public class AlterColumnStatsStmt extends DdlStmt {
     public String getValue(StatsType statsType) {
         return statsTypeToValue.get(statsType);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterDatabasePropertyStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterDatabasePropertyStmt.java
index c36651855a2..af01882dc3c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterDatabasePropertyStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterDatabasePropertyStmt.java
@@ -76,4 +76,9 @@ public class AlterDatabasePropertyStmt extends DdlStmt {
         return "ALTER DATABASE " + dbName + " SET PROPERTIES ("
                 + new PrintableMap<String, String>(properties, "=", true, 
false, ",") + ")";
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterDatabaseQuotaStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterDatabaseQuotaStmt.java
index 647273add40..552b701d029 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterDatabaseQuotaStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterDatabaseQuotaStmt.java
@@ -94,4 +94,9 @@ public class AlterDatabaseQuotaStmt extends DdlStmt {
                 + quotaType.name()
                 + " QUOTA " + quotaValue;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterDatabaseRename.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterDatabaseRename.java
index cf32745e0b3..1e4d78840d4 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterDatabaseRename.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterDatabaseRename.java
@@ -73,4 +73,9 @@ public class AlterDatabaseRename extends DdlStmt {
         return "ALTER DATABASE " + dbName + " RENAME " + newDbName;
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
+
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterJobStatusStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterJobStatusStmt.java
index 31a35aca2c2..3dd2a9f27fa 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterJobStatusStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterJobStatusStmt.java
@@ -74,4 +74,9 @@ public class AlterJobStatusStmt extends DdlStmt {
             throw new AnalysisException("Can't alter inner job status");
         }
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterPolicyStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterPolicyStmt.java
index db9c10f34f2..622feed12ed 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterPolicyStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterPolicyStmt.java
@@ -96,4 +96,9 @@ public class AlterPolicyStmt extends DdlStmt {
         return sb.toString();
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
+
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterRepositoryStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterRepositoryStmt.java
index b0ecd6d3bd4..31c33b6b8e1 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterRepositoryStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterRepositoryStmt.java
@@ -83,4 +83,9 @@ public class AlterRepositoryStmt extends DdlStmt {
         sb.append("PROPERTIES(").append(new PrintableMap<>(properties, " = ", 
true, false)).append(")");
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterResourceStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterResourceStmt.java
index 084200f28da..bd05f478412 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterResourceStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterResourceStmt.java
@@ -87,4 +87,9 @@ public class AlterResourceStmt extends DdlStmt {
     public boolean needAuditEncryption() {
         return true;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterRoleStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterRoleStmt.java
index 75e86a4b6f0..ec428cb82f4 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterRoleStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterRoleStmt.java
@@ -62,4 +62,9 @@ public class AlterRoleStmt extends DdlStmt {
         sb.append(" COMMENT \"").append(comment).append("\"");
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterRoutineLoadStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterRoutineLoadStmt.java
index 5a1f1ba56aa..67c103ed02c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterRoutineLoadStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterRoutineLoadStmt.java
@@ -264,4 +264,10 @@ public class AlterRoutineLoadStmt extends DdlStmt {
         dataSourceProperties.setTimezone(job.getTimezone());
         dataSourceProperties.analyze();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
+
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterSqlBlockRuleStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterSqlBlockRuleStmt.java
index e7af4c47a65..a3cb97dd6bd 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterSqlBlockRuleStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterSqlBlockRuleStmt.java
@@ -138,4 +138,9 @@ public class AlterSqlBlockRuleStmt extends DdlStmt {
                 .append(")");
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterSystemStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterSystemStmt.java
index a3fc515e472..47cb4fc4306 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterSystemStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterSystemStmt.java
@@ -69,4 +69,9 @@ public class AlterSystemStmt extends DdlStmt {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterTableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterTableStmt.java
index d939bb0c3fb..f5d42435532 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterTableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterTableStmt.java
@@ -210,4 +210,9 @@ public class AlterTableStmt extends DdlStmt {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterUserStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterUserStmt.java
index 544a106b3ba..f87884c6c4b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterUserStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterUserStmt.java
@@ -159,4 +159,9 @@ public class AlterUserStmt extends DdlStmt {
 
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterViewStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterViewStmt.java
index 3323c00bac9..5a2d184e20d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterViewStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterViewStmt.java
@@ -111,4 +111,9 @@ public class AlterViewStmt extends BaseViewStmt implements 
NotFallbackInParser {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterWorkloadGroupStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterWorkloadGroupStmt.java
index f6120338333..3a5a3c0b63f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterWorkloadGroupStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterWorkloadGroupStmt.java
@@ -66,4 +66,9 @@ public class AlterWorkloadGroupStmt extends DdlStmt {
         sb.append("PROPERTIES(").append(new PrintableMap<>(properties, " = ", 
true, false)).append(")");
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeStmt.java
index e97de804376..9b5145a7d0e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeStmt.java
@@ -114,4 +114,9 @@ public class AnalyzeStmt extends StatementBase {
     public boolean usingSqlForExternalTable() {
         return analyzeProperties.usingSqlForExternalTable();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ANALYZE;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/BackupStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/BackupStmt.java
index a1eef45ec26..84b3171c2c1 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/BackupStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/BackupStmt.java
@@ -127,4 +127,10 @@ public class BackupStmt extends AbstractBackupStmt {
         sb.append("\n)");
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.BACKUP;
+    }
+
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterSystemStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterSystemStmt.java
index e3a465d2d90..9cfde8da4b3 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterSystemStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterSystemStmt.java
@@ -90,4 +90,9 @@ public class CancelAlterSystemStmt extends CancelStmt {
 
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CANCEL;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterTableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterTableStmt.java
index 8c05483b770..7dac7c28ff1 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterTableStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelAlterTableStmt.java
@@ -104,4 +104,9 @@ public class CancelAlterTableStmt extends CancelStmt {
         return toSql();
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CANCEL;
+    }
+
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelBackupStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelBackupStmt.java
index ab1fb8c4b70..54e9ba8b8ce 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelBackupStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelBackupStmt.java
@@ -82,4 +82,9 @@ public class CancelBackupStmt extends CancelStmt {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CANCEL;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelExportStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelExportStmt.java
index ebdd7997d41..039443becd6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelExportStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelExportStmt.java
@@ -169,4 +169,9 @@ public class CancelExportStmt extends DdlStmt {
         return toSql();
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CANCEL;
+    }
+
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelJobTaskStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelJobTaskStmt.java
index ea6febe1630..841e43a8257 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelJobTaskStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelJobTaskStmt.java
@@ -69,4 +69,9 @@ public class CancelJobTaskStmt extends DdlStmt {
         }
         this.taskId = ((IntLiteral) 
compoundPredicate.getChildren().get(1).getChild(1)).getLongValue();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CANCEL;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelLoadStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelLoadStmt.java
index f38b5f84db1..dad9a0ccd2d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelLoadStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CancelLoadStmt.java
@@ -173,4 +173,9 @@ public class CancelLoadStmt extends DdlStmt {
         return toSql();
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CANCEL;
+    }
+
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanLabelStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanLabelStmt.java
index 0be3adb9e60..84de16c4e6a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanLabelStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanLabelStmt.java
@@ -68,4 +68,9 @@ public class CleanLabelStmt extends DdlStmt {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.FORWARD_WITH_SYNC;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CLEAN;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanProfileStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanProfileStmt.java
index 95ff420d1e2..02a562a328b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanProfileStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanProfileStmt.java
@@ -47,4 +47,9 @@ public class CleanProfileStmt extends DdlStmt {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.FORWARD_WITH_SYNC;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CLEAN;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanQueryStatsStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanQueryStatsStmt.java
index f9dce80d4d4..c0964f796e3 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanQueryStatsStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CleanQueryStatsStmt.java
@@ -141,4 +141,9 @@ public class CleanQueryStatsStmt extends DdlStmt {
     public enum Scope {
         ALL, DB, TABLE
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CLEAN;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateCatalogStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateCatalogStmt.java
index 720df2dbedc..59a59522acf 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateCatalogStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateCatalogStmt.java
@@ -132,4 +132,9 @@ public class CreateCatalogStmt extends DdlStmt {
     public boolean needAuditEncryption() {
         return true;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateDataSyncJobStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateDataSyncJobStmt.java
index adc8e55f75a..dd7103b463d 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateDataSyncJobStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateDataSyncJobStmt.java
@@ -127,4 +127,9 @@ public class CreateDataSyncJobStmt extends DdlStmt {
     public DataSyncJobType getDataSyncJobType() {
         return dataSyncJobType;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateDbStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateDbStmt.java
index 09ae61a1ee1..ad17ccd23ba 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateDbStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateDbStmt.java
@@ -93,4 +93,9 @@ public class CreateDbStmt extends DdlStmt {
         }
         return stringBuilder.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateEncryptKeyStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateEncryptKeyStmt.java
index 701df2bd69a..a7380865a44 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateEncryptKeyStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateEncryptKeyStmt.java
@@ -91,4 +91,9 @@ public class CreateEncryptKeyStmt extends DdlStmt {
                 .append(encryptKeyName.getKeyName()).append(" AS 
\"").append(keyString).append("\"");
         return stringBuilder.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateFileStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateFileStmt.java
index cfc25b838da..11d2bf846e1 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateFileStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateFileStmt.java
@@ -162,4 +162,9 @@ public class CreateFileStmt extends DdlStmt {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.FORWARD_WITH_SYNC;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateFunctionStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateFunctionStmt.java
index abc2249a00b..a45b7901fec 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateFunctionStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateFunctionStmt.java
@@ -902,4 +902,9 @@ public class CreateFunctionStmt extends DdlStmt {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.FORWARD_WITH_SYNC;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java
index 449b848321b..3a6a9718c72 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java
@@ -723,4 +723,9 @@ public class CreateMaterializedViewStmt extends DdlStmt {
     public String toSql() {
         return null;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreatePolicyStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreatePolicyStmt.java
index 0c3e760e576..98c71d10c16 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreatePolicyStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreatePolicyStmt.java
@@ -153,4 +153,9 @@ public class CreatePolicyStmt extends DdlStmt {
         }
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRepositoryStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRepositoryStmt.java
index 4bd82be73e3..618b5a7d05b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRepositoryStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRepositoryStmt.java
@@ -88,4 +88,9 @@ public class CreateRepositoryStmt extends DdlStmt {
     public boolean needAuditEncryption() {
         return true;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateResourceStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateResourceStmt.java
index 9b4ae717ae5..08730723431 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateResourceStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateResourceStmt.java
@@ -121,4 +121,9 @@ public class CreateResourceStmt extends DdlStmt {
     public boolean needAuditEncryption() {
         return true;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRoleStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRoleStmt.java
index 9021402d48a..1f64ceddb85 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRoleStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRoleStmt.java
@@ -85,4 +85,9 @@ public class CreateRoleStmt extends DdlStmt {
         }
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRoutineLoadStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRoutineLoadStmt.java
index d58b25195c7..95434a1fd19 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRoutineLoadStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateRoutineLoadStmt.java
@@ -549,4 +549,9 @@ public class CreateRoutineLoadStmt extends DdlStmt {
         this.dataSourceProperties.setTimezone(this.timezone);
         this.dataSourceProperties.analyze();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateSqlBlockRuleStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateSqlBlockRuleStmt.java
index a53f7c944cb..f50a339991c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateSqlBlockRuleStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateSqlBlockRuleStmt.java
@@ -166,4 +166,9 @@ public class CreateSqlBlockRuleStmt extends DdlStmt {
                 .append(new PrintableMap<>(properties, " = ", true, true, 
true)).append(")");
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableAsSelectStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableAsSelectStmt.java
index 1f919255f96..04f2a475706 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableAsSelectStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableAsSelectStmt.java
@@ -126,4 +126,9 @@ public class CreateTableAsSelectStmt extends DdlStmt 
implements NotFallbackInPar
         super.reset();
         queryStmt.reset();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableLikeStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableLikeStmt.java
index d8807bfae37..aab0f362afe 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableLikeStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableLikeStmt.java
@@ -129,4 +129,9 @@ public class CreateTableLikeStmt extends DdlStmt implements 
NotFallbackInParser
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
index b4f1ec61091..795dfe237d2 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
@@ -874,4 +874,9 @@ public class CreateTableStmt extends DdlStmt implements 
NotFallbackInParser {
             }
         }
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateUserStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateUserStmt.java
index dfdda334451..e29a82f2e5f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateUserStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateUserStmt.java
@@ -203,4 +203,9 @@ public class CreateUserStmt extends DdlStmt {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateViewStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateViewStmt.java
index 3596470dd91..08f830a7fde 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateViewStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateViewStmt.java
@@ -104,4 +104,9 @@ public class CreateViewStmt extends BaseViewStmt implements 
NotFallbackInParser
     public void setFinalColumns(List<Column> columns) {
         finalCols.addAll(columns);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateWorkloadGroupStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateWorkloadGroupStmt.java
index 92a60a94e55..9c8efcf1d1f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateWorkloadGroupStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateWorkloadGroupStmt.java
@@ -85,4 +85,9 @@ public class CreateWorkloadGroupStmt extends DdlStmt {
         sb.append("PROPERTIES(").append(new PrintableMap<>(properties, " = ", 
true, false)).append(")");
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateWorkloadSchedPolicyStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateWorkloadSchedPolicyStmt.java
index 001068476d4..455ca2c802e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateWorkloadSchedPolicyStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateWorkloadSchedPolicyStmt.java
@@ -122,4 +122,9 @@ public class CreateWorkloadSchedPolicyStmt extends DdlStmt {
 
         return str;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DdlStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DdlStmt.java
index 2fb066c6763..596341bb374 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DdlStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DdlStmt.java
@@ -22,4 +22,9 @@ public abstract class DdlStmt extends StatementBase {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.FORWARD_WITH_SYNC;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DDL;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DeleteStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DeleteStmt.java
index 369eb126597..692e53ab229 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DeleteStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DeleteStmt.java
@@ -463,4 +463,9 @@ public class DeleteStmt extends DdlStmt implements 
NotFallbackInParser {
         sb.append(" WHERE ").append(wherePredicate.toSql());
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DELETE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropAnalyzeJobStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropAnalyzeJobStmt.java
index 34a7c875eda..04562476687 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropAnalyzeJobStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropAnalyzeJobStmt.java
@@ -31,4 +31,9 @@ public class DropAnalyzeJobStmt extends DdlStmt {
     public long getJobId() {
         return jobId;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropCatalogStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropCatalogStmt.java
index f3606c07f29..7043066fc47 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropCatalogStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropCatalogStmt.java
@@ -72,4 +72,9 @@ public class DropCatalogStmt extends DdlStmt {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropDbStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropDbStmt.java
index a277f3a9ce5..7ce85a29902 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropDbStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropDbStmt.java
@@ -96,4 +96,9 @@ public class DropDbStmt extends DdlStmt {
         return toSql();
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
+
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropEncryptKeyStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropEncryptKeyStmt.java
index 4b41fa71a2f..542f67b029d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropEncryptKeyStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropEncryptKeyStmt.java
@@ -67,4 +67,9 @@ public class DropEncryptKeyStmt extends DdlStmt {
         stringBuilder.append("DROP ENCRYPTKEY 
").append(encryptKeyName.getKeyName());
         return stringBuilder.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFileStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFileStmt.java
index fb2af7d9dd3..048498050bc 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFileStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFileStmt.java
@@ -109,4 +109,9 @@ public class DropFileStmt extends DdlStmt {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.FORWARD_WITH_SYNC;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFunctionStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFunctionStmt.java
index 9f3d297b6b6..de4b5576cd1 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFunctionStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropFunctionStmt.java
@@ -94,4 +94,9 @@ public class DropFunctionStmt extends DdlStmt {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.FORWARD_WITH_SYNC;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropMaterializedViewStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropMaterializedViewStmt.java
index 377cdcf4152..28db2575277 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropMaterializedViewStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropMaterializedViewStmt.java
@@ -90,4 +90,9 @@ public class DropMaterializedViewStmt extends DdlStmt {
         stringBuilder.append("ON ").append(tableName.toSql());
         return stringBuilder.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPolicyStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPolicyStmt.java
index 4bd20fe8c9b..85560a08f0d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPolicyStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPolicyStmt.java
@@ -105,4 +105,9 @@ public class DropPolicyStmt extends DdlStmt {
         }
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRepositoryStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRepositoryStmt.java
index ce2ea3e8ea2..036d2b606d3 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRepositoryStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRepositoryStmt.java
@@ -53,4 +53,9 @@ public class DropRepositoryStmt extends DdlStmt {
         sb.append("REPOSITORY `").append(repoName).append("`");
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropResourceStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropResourceStmt.java
index e57c433bb9b..10744acceec 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropResourceStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropResourceStmt.java
@@ -62,4 +62,9 @@ public class DropResourceStmt extends DdlStmt {
         sb.append("RESOURCE `").append(resourceName).append("`");
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRoleStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRoleStmt.java
index 468b86579f4..e27dc4705ea 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRoleStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRoleStmt.java
@@ -69,4 +69,9 @@ public class DropRoleStmt extends DdlStmt {
     public String toSql() {
         return "DROP ROLE " + role;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropSqlBlockRuleStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropSqlBlockRuleStmt.java
index 1a90eec2ac7..11dccab6577 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropSqlBlockRuleStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropSqlBlockRuleStmt.java
@@ -56,4 +56,9 @@ public class DropSqlBlockRuleStmt extends DdlStmt {
         sb.append("DROP SQL_BLOCK_RULE 
").append(Joiner.on(",").join(ruleNames));
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropStatsStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropStatsStmt.java
index aa83a1de186..3689af25cda 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropStatsStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropStatsStmt.java
@@ -193,4 +193,9 @@ public class DropStatsStmt extends DdlStmt {
                     dbName + "." + tblName);
         }
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropTableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropTableStmt.java
index 5df0a82c6f2..d9a266fdf11 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropTableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropTableStmt.java
@@ -107,4 +107,9 @@ public class DropTableStmt extends DdlStmt {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropUserStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropUserStmt.java
index e336040d7f8..e9b3e6fe794 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropUserStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropUserStmt.java
@@ -84,4 +84,9 @@ public class DropUserStmt extends DdlStmt {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadGroupStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadGroupStmt.java
index d7a1703771c..1137224c12e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadGroupStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadGroupStmt.java
@@ -61,4 +61,9 @@ public class DropWorkloadGroupStmt extends DdlStmt {
         sb.append("RESOURCE GROUP '").append(workloadGroupName).append("' ");
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadSchedPolicyStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadSchedPolicyStmt.java
index 7eeff5f3214..fae534f51f6 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadSchedPolicyStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropWorkloadSchedPolicyStmt.java
@@ -63,4 +63,9 @@ public class DropWorkloadSchedPolicyStmt extends DdlStmt {
         return sb.toString();
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
+
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ExecuteStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ExecuteStmt.java
index df5707dda67..4805f8c97e1 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ExecuteStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ExecuteStmt.java
@@ -54,4 +54,9 @@ public class ExecuteStmt extends StatementBase {
         sql += ")";
         return sql;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.EXECUTE;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ExportStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ExportStmt.java
index 855379cbc37..232a61f1edc 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ExportStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ExportStmt.java
@@ -447,4 +447,9 @@ public class ExportStmt extends StatementBase {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.EXPORT;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/GrantStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/GrantStmt.java
index de4414ad40e..f1b3ab01d43 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/GrantStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/GrantStmt.java
@@ -374,4 +374,9 @@ public class GrantStmt extends DdlStmt {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.GRANT;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/InsertOverwriteTableStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/InsertOverwriteTableStmt.java
index cfe030c428a..bef4a38bc3e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/InsertOverwriteTableStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/InsertOverwriteTableStmt.java
@@ -105,4 +105,10 @@ public class InsertOverwriteTableStmt extends DdlStmt {
                     getDb() + ": " + getTbl());
         }
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.INSERT;
+    }
+
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/InsertStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/InsertStmt.java
index 3b5c923bfea..dc7b5130e3c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/InsertStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/InsertStmt.java
@@ -333,4 +333,9 @@ public abstract class InsertStmt extends DdlStmt implements 
NotFallbackInParser
         String toSql();
 
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.INSERT;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/InstallPluginStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/InstallPluginStmt.java
index 20385f59d72..3d5db0c8840 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/InstallPluginStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/InstallPluginStmt.java
@@ -87,4 +87,9 @@ public class InstallPluginStmt extends DdlStmt {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.FORWARD_WITH_SYNC;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.INSTALL;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/KillAnalysisJobStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/KillAnalysisJobStmt.java
index a950c663d36..996afb8c8a6 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/KillAnalysisJobStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/KillAnalysisJobStmt.java
@@ -24,4 +24,9 @@ public class KillAnalysisJobStmt extends DdlStmt {
     public KillAnalysisJobStmt(long jobId) {
         this.jobId = jobId;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.KILL;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/KillStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/KillStmt.java
index 77cbafe4a8f..12cd9a4daf9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/KillStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/KillStmt.java
@@ -76,4 +76,9 @@ public class KillStmt extends StatementBase {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.NO_FORWARD;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.KILL;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/LoadStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/LoadStmt.java
index 1990078b46c..a24d1ae72fe 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/LoadStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/LoadStmt.java
@@ -689,4 +689,8 @@ public class LoadStmt extends DdlStmt {
 
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.LOAD;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java
index adda77df65b..745b6ecf385 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseRoutineLoadStmt.java
@@ -63,4 +63,9 @@ public class PauseRoutineLoadStmt extends DdlStmt {
             db = analyzer.getDefaultDb();
         }
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.PAUSE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseSyncJobStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseSyncJobStmt.java
index a032caa2622..14d38a882c3 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseSyncJobStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/PauseSyncJobStmt.java
@@ -53,4 +53,9 @@ public class PauseSyncJobStmt extends DdlStmt {
         stringBuilder.append(jobName.toSql());
         return stringBuilder.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.PAUSE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/RecoverDbStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/RecoverDbStmt.java
index 0d60664e100..cfb4ecf4087 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RecoverDbStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RecoverDbStmt.java
@@ -84,4 +84,9 @@ public class RecoverDbStmt extends DdlStmt {
         }
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.RECOVER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/RecoverPartitionStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/RecoverPartitionStmt.java
index 9b2f4626808..05db7a81e83 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/RecoverPartitionStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/RecoverPartitionStmt.java
@@ -97,4 +97,9 @@ public class RecoverPartitionStmt extends DdlStmt {
         sb.append(getTableName());
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.RECOVER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/RecoverTableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/RecoverTableStmt.java
index c4133c2ed9a..56dfbbfc2c7 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RecoverTableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RecoverTableStmt.java
@@ -91,4 +91,9 @@ public class RecoverTableStmt extends DdlStmt {
         }
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.RECOVER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshCatalogStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshCatalogStmt.java
index a2e5930d142..060807b7919 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshCatalogStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshCatalogStmt.java
@@ -84,4 +84,8 @@ public class RefreshCatalogStmt extends DdlStmt {
         return stringBuilder.toString();
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.REFRESH;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshDbStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshDbStmt.java
index e8bdc168ddc..091d55eafe0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshDbStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshDbStmt.java
@@ -116,4 +116,9 @@ public class RefreshDbStmt extends DdlStmt {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.REFRESH;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshLdapStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshLdapStmt.java
index 48c23999f15..81296a4961c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshLdapStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshLdapStmt.java
@@ -69,4 +69,9 @@ public class RefreshLdapStmt extends DdlStmt {
         return stringBuilder.toString();
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.REFRESH;
+    }
+
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshTableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshTableStmt.java
index 65bf35f3059..9755e91dadf 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshTableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RefreshTableStmt.java
@@ -82,4 +82,9 @@ public class RefreshTableStmt extends DdlStmt {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.REFRESH;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java
index 21e417631dd..317de11c1f6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java
@@ -247,4 +247,9 @@ public class RestoreStmt extends AbstractBackupStmt {
         sb.append("\n)");
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.RESTORE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java
index 0087dcb0452..e21a6ca53c5 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeRoutineLoadStmt.java
@@ -63,4 +63,9 @@ public class ResumeRoutineLoadStmt extends DdlStmt {
             db = analyzer.getDefaultDb();
         }
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.RESUME;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeSyncJobStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeSyncJobStmt.java
index d4b6c65c80d..2f401a09112 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeSyncJobStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ResumeSyncJobStmt.java
@@ -53,4 +53,9 @@ public class ResumeSyncJobStmt extends DdlStmt {
         stringBuilder.append(jobName.toSql());
         return stringBuilder.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.RESUME;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/RevokeStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/RevokeStmt.java
index ad26c2670cb..9b06623f82c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RevokeStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RevokeStmt.java
@@ -209,4 +209,9 @@ public class RevokeStmt extends DdlStmt {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.REVOKE;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
index 66994e99a72..b7b778ae901 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
@@ -2900,4 +2900,9 @@ public class SelectStmt extends QueryStmt {
         this.selectList = selectList;
         this.originSelectList = selectList.clone();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.SELECT;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/SetOperationStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SetOperationStmt.java
index 1d3c98cc7a7..3c4f8a76fd5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SetOperationStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SetOperationStmt.java
@@ -981,5 +981,12 @@ public class SetOperationStmt extends QueryStmt {
         public SetOperand clone() {
             return new SetOperand(this);
         }
+
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.SELECT;
+    }
+
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SetStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SetStmt.java
index 3c6d938026f..bfa0839b592 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SetStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SetStmt.java
@@ -87,6 +87,11 @@ public class SetStmt extends StatementBase {
         return toSql();
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.SET;
+    }
+
     @Override
     public RedirectStatus getRedirectStatus() {
         if (setVars != null) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/SetUserPropertyStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SetUserPropertyStmt.java
index 240fb5bfa36..7342fe7a79c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/SetUserPropertyStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SetUserPropertyStmt.java
@@ -91,4 +91,9 @@ public class SetUserPropertyStmt extends DdlStmt {
     public String toString() {
         return toSql();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.SET;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowStmt.java
index 09daa778b7b..9be50ee9dbd 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowStmt.java
@@ -31,4 +31,9 @@ public abstract class ShowStmt extends StatementBase {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.NO_FORWARD;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.SHOW;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/StatementBase.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/StatementBase.java
index c0ebab251f8..f2f91529e8b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/StatementBase.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/StatementBase.java
@@ -143,6 +143,10 @@ public abstract class StatementBase implements ParseNode {
         return "";
     }
 
+    public StmtType stmtType() {
+        return StmtType.OTHER;
+    }
+
     public abstract RedirectStatus getRedirectStatus();
 
     /**
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtType.java
similarity index 63%
copy from fe/fe-core/src/main/java/org/apache/doris/analysis/ShowStmt.java
copy to fe/fe-core/src/main/java/org/apache/doris/analysis/StmtType.java
index 09daa778b7b..426233ff7b4 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtType.java
@@ -17,18 +17,45 @@
 
 package org.apache.doris.analysis;
 
-import org.apache.doris.common.AnalysisException;
-import org.apache.doris.qe.ShowResultSetMetaData;
-
-public abstract class ShowStmt extends StatementBase {
-    public abstract ShowResultSetMetaData getMetaData();
-
-    public SelectStmt toSelectStmt(Analyzer analyzer) throws AnalysisException 
{
-        return null;
-    }
-
-    @Override
-    public RedirectStatus getRedirectStatus() {
-        return RedirectStatus.NO_FORWARD;
-    }
+public enum StmtType {
+    ADMIN,
+    ALTER,
+    ANALYZE,
+    BACKUP,
+    CALL,
+    CANCEL,
+    CLEAN,
+    CREATE,
+    DDL,
+    DELETE,
+    DROP,
+    EXECUTE,
+    EXPLAIN,
+    EXPORT,
+    GRANT,
+    IMPORT,
+    INSERT,
+    INSTALL,
+    KILL,
+    LOAD,
+    OTHER,
+    PAUSE,
+    PREPARE,
+    RECOVER,
+    REFRESH,
+    RESTORE,
+    RESUME,
+    REVOKE,
+    SELECT,
+    SET,
+    SHOW,
+    STOP,
+    SWITCH,
+    SYNC,
+    TRANSACTION,
+    TRUNCATE,
+    UNINSTALL,
+    UNSET,
+    UPDATE,
+    USE
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/StopRoutineLoadStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/StopRoutineLoadStmt.java
index 58ed8a441e7..df18979cc7e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/StopRoutineLoadStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/StopRoutineLoadStmt.java
@@ -47,4 +47,9 @@ public class StopRoutineLoadStmt extends DdlStmt {
         super.analyze(analyzer);
         labelName.analyze(analyzer);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.STOP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/StopSyncJobStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/StopSyncJobStmt.java
index 34ab27b4516..e58835a26a9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/StopSyncJobStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/StopSyncJobStmt.java
@@ -53,4 +53,9 @@ public class StopSyncJobStmt extends DdlStmt {
         stringBuilder.append(jobName.toSql());
         return stringBuilder.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.STOP;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SwitchStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SwitchStmt.java
index fe5ac574136..d8d3dac0d22 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SwitchStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SwitchStmt.java
@@ -62,4 +62,9 @@ public class SwitchStmt extends StatementBase {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.NO_FORWARD;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.SWITCH;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SyncStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SyncStmt.java
index 59b9d3cd8af..e559b30f420 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SyncStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SyncStmt.java
@@ -29,4 +29,9 @@ public class SyncStmt extends DdlStmt {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.FORWARD_WITH_SYNC;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.SYNC;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionStmt.java
index bad6d4670a8..60c8d040f72 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/TransactionStmt.java
@@ -31,4 +31,9 @@ public class TransactionStmt extends StatementBase {
     public void analyze(Analyzer analyzer) throws AnalysisException, 
UserException {
         super.analyze(analyzer);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.TRANSACTION;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/TruncateTableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/TruncateTableStmt.java
index 1a9fbd3bafd..46a6045d51f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/TruncateTableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/TruncateTableStmt.java
@@ -85,4 +85,9 @@ public class TruncateTableStmt extends DdlStmt {
         }
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.TRUNCATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/UninstallPluginStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/UninstallPluginStmt.java
index 5b87a6797e9..c87456dcb37 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/UninstallPluginStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/UninstallPluginStmt.java
@@ -67,4 +67,9 @@ public class UninstallPluginStmt extends DdlStmt {
     public RedirectStatus getRedirectStatus() {
         return RedirectStatus.FORWARD_WITH_SYNC;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.UNINSTALL;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/UnsetVariableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/UnsetVariableStmt.java
index 2b05e233338..1756e831f69 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/UnsetVariableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/UnsetVariableStmt.java
@@ -106,4 +106,9 @@ public class UnsetVariableStmt extends StatementBase {
 
         return RedirectStatus.NO_FORWARD;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.UNSET;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/UpdateStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/UpdateStmt.java
index b6db99ee43b..786ad16237e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/UpdateStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/UpdateStmt.java
@@ -251,4 +251,9 @@ public class UpdateStmt extends DdlStmt implements 
NotFallbackInParser {
         }
         return sb.toString();
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.UPDATE;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/UseStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/UseStmt.java
index 6bf7ce0bc03..dd9cc582512 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/UseStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/UseStmt.java
@@ -65,6 +65,11 @@ public class UseStmt extends StatementBase {
         return sb.toString();
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.USE;
+    }
+
     @Override
     public String toString() {
         return toSql();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/InternalSchema.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/InternalSchema.java
index a2618db2ff4..15bf65c3c73 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/InternalSchema.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/InternalSchema.java
@@ -140,6 +140,7 @@ public class InternalSchema {
         AUDIT_SCHEMA
                 .add(new ColumnDef("return_rows", 
TypeDef.create(PrimitiveType.BIGINT), ColumnNullableType.NULLABLE));
         AUDIT_SCHEMA.add(new ColumnDef("stmt_id", 
TypeDef.create(PrimitiveType.BIGINT), ColumnNullableType.NULLABLE));
+        AUDIT_SCHEMA.add(new ColumnDef("stmt_type", TypeDef.createVarchar(48), 
ColumnNullableType.NULLABLE));
         AUDIT_SCHEMA.add(new ColumnDef("is_query", 
TypeDef.create(PrimitiveType.TINYINT), ColumnNullableType.NULLABLE));
         AUDIT_SCHEMA.add(new ColumnDef("frontend_ip", 
TypeDef.createVarchar(128), ColumnNullableType.NULLABLE));
         AUDIT_SCHEMA
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundResultSink.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundResultSink.java
index 10a6b0121e3..5fd5c18a365 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundResultSink.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundResultSink.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.analyzer;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.nereids.exceptions.UnboundException;
 import org.apache.doris.nereids.memo.GroupExpression;
 import org.apache.doris.nereids.properties.LogicalProperties;
@@ -94,4 +95,9 @@ public class UnboundResultSink<CHILD_TYPE extends Plan> 
extends LogicalSink<CHIL
     public String toString() {
         return Utils.toSqlString("UnboundResultSink[" + id.asInt() + "]");
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.SELECT;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AlterMTMVCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AlterMTMVCommand.java
index ab9d6e35c9d..56f1ffec182 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AlterMTMVCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AlterMTMVCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.info.AlterMTMVInfo;
 import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
@@ -55,4 +56,8 @@ public class AlterMTMVCommand extends Command implements 
ForwardWithSync, NotAll
         return visitor.visitAlterMTMVCommand(this, context);
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AlterViewCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AlterViewCommand.java
index 3a2b551d9bf..900986874b8 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AlterViewCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AlterViewCommand.java
@@ -18,6 +18,7 @@
 package org.apache.doris.nereids.trees.plans.commands;
 
 import org.apache.doris.analysis.AlterViewStmt;
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.info.AlterViewInfo;
@@ -47,4 +48,9 @@ public class AlterViewCommand extends Command implements 
ForwardWithSync {
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitAlterViewCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.ALTER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CallCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CallCommand.java
index 29e0b17228f..81d950eab6a 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CallCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CallCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.nereids.analyzer.UnboundFunction;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.call.CallFunc;
@@ -58,4 +59,8 @@ public class CallCommand extends Command implements 
ForwardWithSync {
         return visitor.visitCallCommand(this, context);
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CALL;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CancelMTMVTaskCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CancelMTMVTaskCommand.java
index e5c075da7e4..c8b2a19067d 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CancelMTMVTaskCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CancelMTMVTaskCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.info.CancelMTMVTaskInfo;
@@ -47,4 +48,9 @@ public class CancelMTMVTaskCommand extends Command implements 
ForwardWithSync, N
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitCancelMTMVTaskCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CANCEL;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateMTMVCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateMTMVCommand.java
index 814804b8ce9..0bc3c335fd1 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateMTMVCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateMTMVCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.info.CreateMTMVInfo;
@@ -56,4 +57,9 @@ public class CreateMTMVCommand extends Command implements 
ForwardWithSync, NotAl
         return visitor.visitCreateMTMVCommand(this, context);
     }
 
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
+
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreatePolicyCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreatePolicyCommand.java
index 01ccb3fa33f..ee4a4bfea45 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreatePolicyCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreatePolicyCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.analysis.UserIdentity;
 import org.apache.doris.nereids.exceptions.AnalysisException;
 import org.apache.doris.nereids.trees.expressions.Expression;
@@ -82,4 +83,9 @@ public class CreatePolicyCommand extends Command implements 
ForwardWithSync {
         ctx.getSessionVariable().enableFallbackToOriginalPlannerOnce();
         throw new AnalysisException("Not support create policy command in 
Nereids now");
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateProcedureCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateProcedureCommand.java
index 39a93831848..7fb8c856b46 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateProcedureCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateProcedureCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.nereids.annotation.Developing;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.info.FuncNameInfo;
@@ -61,4 +62,9 @@ public class CreateProcedureCommand extends Command 
implements ForwardWithSync {
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitCreateProcedureCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableCommand.java
index 38c92631d41..72e72cbe092 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableCommand.java
@@ -19,6 +19,7 @@ package org.apache.doris.nereids.trees.plans.commands;
 
 import org.apache.doris.analysis.CreateTableStmt;
 import org.apache.doris.analysis.DropTableStmt;
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.analysis.TableName;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.catalog.ScalarType;
@@ -211,4 +212,9 @@ public class CreateTableCommand extends Command implements 
ForwardWithSync {
     public CreateTableInfo getCreateTableInfo() {
         return createTableInfo;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableLikeCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableLikeCommand.java
index a271623ef08..3b59c312880 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableLikeCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableLikeCommand.java
@@ -18,6 +18,7 @@
 package org.apache.doris.nereids.trees.plans.commands;
 
 import org.apache.doris.analysis.CreateTableLikeStmt;
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.info.CreateTableLikeInfo;
@@ -46,4 +47,9 @@ public class CreateTableLikeCommand extends Command 
implements ForwardWithSync {
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitCreateTableLikeCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateViewCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateViewCommand.java
index a6698bc1f69..2f597a1a85e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateViewCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateViewCommand.java
@@ -18,6 +18,7 @@
 package org.apache.doris.nereids.trees.plans.commands;
 
 import org.apache.doris.analysis.CreateViewStmt;
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.info.CreateViewInfo;
@@ -47,4 +48,9 @@ public class CreateViewCommand extends Command implements 
ForwardWithSync {
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitCreateViewCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.CREATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java
index fe5552fed65..0778765f0bd 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromCommand.java
@@ -21,6 +21,7 @@ import org.apache.doris.analysis.Expr;
 import org.apache.doris.analysis.Predicate;
 import org.apache.doris.analysis.SetVar;
 import org.apache.doris.analysis.SlotRef;
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.analysis.StringLiteral;
 import org.apache.doris.catalog.Column;
 import org.apache.doris.catalog.Database;
@@ -434,4 +435,9 @@ public class DeleteFromCommand extends Command implements 
ForwardWithSync, Expla
             throw new AnalysisException("delete command on aggregate/duplicate 
table is not explainable");
         }
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DELETE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromUsingCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromUsingCommand.java
index d212e3d6c28..de374d939c1 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromUsingCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DeleteFromUsingCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.KeysType;
 import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.nereids.exceptions.AnalysisException;
@@ -82,4 +83,9 @@ public class DeleteFromUsingCommand extends DeleteFromCommand 
{
             throw new AnalysisException("delete command on with using clause 
only supports unique key model");
         }
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DELETE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DropMTMVCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DropMTMVCommand.java
index 19eedb82746..909b87ef9aa 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DropMTMVCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DropMTMVCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.info.DropMTMVInfo;
@@ -47,4 +48,9 @@ public class DropMTMVCommand extends Command implements 
ForwardWithSync, NotAllo
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitDropMTMVCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DropProcedureCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DropProcedureCommand.java
index 6aa76197d82..6d4f32e999a 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DropProcedureCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/DropProcedureCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.nereids.annotation.Developing;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.info.FuncNameInfo;
@@ -59,4 +60,9 @@ public class DropProcedureCommand extends Command implements 
ForwardWithSync {
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitDropProcedureCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.DROP;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExecuteCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExecuteCommand.java
index d5260a72cde..7cecc6343c9 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExecuteCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExecuteCommand.java
@@ -18,6 +18,7 @@
 package org.apache.doris.nereids.trees.plans.commands;
 
 import org.apache.doris.analysis.Queriable;
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.nereids.StatementContext;
 import org.apache.doris.nereids.exceptions.AnalysisException;
 import org.apache.doris.nereids.glue.LogicalPlanAdapter;
@@ -102,4 +103,9 @@ public class ExecuteCommand extends Command {
         return "EXECUTE `" + stmtName + "`"
                 + 
realValueExpr.stream().map(Expression::toSql).collect(Collectors.joining(", ", 
" USING ", ""));
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.EXECUTE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExplainCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExplainCommand.java
index fccd9c07b14..d4fce906693 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExplainCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExplainCommand.java
@@ -18,6 +18,7 @@
 package org.apache.doris.nereids.trees.plans.commands;
 
 import org.apache.doris.analysis.ExplainOptions;
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.nereids.NereidsPlanner;
 import org.apache.doris.nereids.glue.LogicalPlanAdapter;
@@ -112,4 +113,9 @@ public class ExplainCommand extends Command implements 
NoForward {
     public boolean showPlanProcess() {
         return showPlanProcess;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.EXPLAIN;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java
index 263bf43e355..dbf6cf7067e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java
@@ -21,6 +21,7 @@ import org.apache.doris.analysis.BrokerDesc;
 import org.apache.doris.analysis.LoadStmt;
 import org.apache.doris.analysis.OutFileClause;
 import org.apache.doris.analysis.Separator;
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.analysis.StorageBackend;
 import org.apache.doris.analysis.TableName;
 import org.apache.doris.catalog.BrokerMgr;
@@ -400,4 +401,9 @@ public class ExportCommand extends Command implements 
ForwardWithSync {
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitExportCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.EXPORT;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/LoadCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/LoadCommand.java
index 53ee7263b00..59eaa1728b9 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/LoadCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/LoadCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Column;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.catalog.OlapTable;
@@ -500,4 +501,9 @@ public class LoadCommand extends Command implements 
ForwardWithSync {
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitLoadCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.LOAD;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/PauseMTMVCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/PauseMTMVCommand.java
index f2a8cb23360..fadb3bc0c32 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/PauseMTMVCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/PauseMTMVCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.info.PauseMTMVInfo;
@@ -47,4 +48,9 @@ public class PauseMTMVCommand extends Command implements 
ForwardWithSync, NotAll
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitPauseMTMVCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.PAUSE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/PrepareCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/PrepareCommand.java
index 43778a1e005..f8788f0657f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/PrepareCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/PrepareCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.mysql.MysqlCommand;
 import org.apache.doris.nereids.trees.expressions.Placeholder;
 import org.apache.doris.nereids.trees.plans.PlanType;
@@ -122,4 +123,9 @@ public class PrepareCommand extends Command {
     public PrepareCommand withPlaceholders(List<Placeholder> placeholders) {
         return new PrepareCommand(this.name, this.logicalPlan, placeholders, 
this.originalStmt);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.PREPARE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/RefreshMTMVCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/RefreshMTMVCommand.java
index a918112555e..2ed3e446d7b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/RefreshMTMVCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/RefreshMTMVCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.info.RefreshMTMVInfo;
@@ -47,4 +48,9 @@ public class RefreshMTMVCommand extends Command implements 
ForwardWithSync, NotA
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitRefreshMTMVCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.REFRESH;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ResumeMTMVCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ResumeMTMVCommand.java
index a47c65eeb41..5fc933886c2 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ResumeMTMVCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ResumeMTMVCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.commands.info.ResumeMTMVInfo;
@@ -47,4 +48,9 @@ public class ResumeMTMVCommand extends Command implements 
ForwardWithSync, NotAl
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitResumeMTMVCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.RESUME;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowConstraintsCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowConstraintsCommand.java
index 13d1f0c5f6d..5c3c16137bf 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowConstraintsCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowConstraintsCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.TableIf;
 import org.apache.doris.nereids.trees.plans.PlanType;
 import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
@@ -63,4 +64,9 @@ public class ShowConstraintsCommand extends Command 
implements NoForward {
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitShowConstraintsCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.SHOW;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowCreateProcedureCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowCreateProcedureCommand.java
index 1eac3cdc867..1000100c459 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowCreateProcedureCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowCreateProcedureCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Column;
 import org.apache.doris.catalog.ScalarType;
 import org.apache.doris.nereids.trees.plans.PlanType;
@@ -73,4 +74,9 @@ public class ShowCreateProcedureCommand extends Command 
implements NoForward {
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitShowCreateProcedureCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.SHOW;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowProcedureStatusCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowProcedureStatusCommand.java
index b940f104d99..c77c77c875e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowProcedureStatusCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowProcedureStatusCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Column;
 import org.apache.doris.catalog.ScalarType;
 import org.apache.doris.nereids.exceptions.AnalysisException;
@@ -135,4 +136,9 @@ public class ShowProcedureStatusCommand extends Command 
implements NoForward {
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitShowProcedureStatusCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.SHOW;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/UpdateCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/UpdateCommand.java
index 644c5730a37..444bc8aa309 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/UpdateCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/UpdateCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Column;
 import org.apache.doris.catalog.KeysType;
 import org.apache.doris.catalog.OlapTable;
@@ -257,4 +258,9 @@ public class UpdateCommand extends Command implements 
ForwardWithSync, Explainab
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitUpdateCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.UPDATE;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/BatchInsertIntoTableCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/BatchInsertIntoTableCommand.java
index cdb5a4c7eeb..c0ab37e5d08 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/BatchInsertIntoTableCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/BatchInsertIntoTableCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands.insert;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Column;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.catalog.Table;
@@ -159,4 +160,9 @@ public class BatchInsertIntoTableCommand extends Command 
implements NoForward, E
             targetTableIf.readUnlock();
         }
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.INSERT;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertIntoTableCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertIntoTableCommand.java
index efe63884faa..1f1409e41c0 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertIntoTableCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertIntoTableCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands.insert;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.catalog.TableIf;
@@ -258,4 +259,9 @@ public class InsertIntoTableCommand extends Command 
implements ForwardWithSync,
         }
         return false;
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.INSERT;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertOverwriteTableCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertOverwriteTableCommand.java
index 41568097dad..ea9b1faf74f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertOverwriteTableCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertOverwriteTableCommand.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.commands.insert;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.catalog.MTMV;
 import org.apache.doris.catalog.OlapTable;
@@ -309,4 +310,9 @@ public class InsertOverwriteTableCommand extends Command 
implements ForwardWithS
     public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
         return visitor.visitInsertOverwriteTableCommand(this, context);
     }
+
+    @Override
+    public StmtType stmtType() {
+        return StmtType.INSERT;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalPlan.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalPlan.java
index f23d3f8d7a4..b419c5718b0 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalPlan.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalPlan.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.nereids.trees.plans.logical;
 
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.nereids.properties.DataTrait;
 import org.apache.doris.nereids.trees.expressions.Slot;
 import org.apache.doris.nereids.trees.plans.Plan;
@@ -102,4 +103,8 @@ public interface LogicalPlan extends Plan {
     void computeEqualSet(DataTrait.Builder builder);
 
     void computeFd(DataTrait.Builder builder);
+
+    default StmtType stmtType() {
+        return StmtType.OTHER;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/plugin/audit/AuditEvent.java 
b/fe/fe-core/src/main/java/org/apache/doris/plugin/audit/AuditEvent.java
index ac68b38e258..0b64a748a10 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/plugin/audit/AuditEvent.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/plugin/audit/AuditEvent.java
@@ -84,6 +84,8 @@ public class AuditEvent {
     public boolean isNereids = false;
     @AuditField(value = "feIp")
     public String feIp = "";
+    @AuditField(value = "StmtType")
+    public String stmtType = "";
     @AuditField(value = "Stmt")
     public String stmt = "";
     @AuditField(value = "CpuTimeMS")
@@ -230,6 +232,11 @@ public class AuditEvent {
             return this;
         }
 
+        public AuditEventBuilder setStmtType(String stmtType) {
+            auditEvent.stmtType = stmtType;
+            return this;
+        }
+
         public AuditEventBuilder setStmt(String stmt) {
             auditEvent.stmt = stmt;
             return this;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/plugin/audit/AuditLoaderPlugin.java 
b/fe/fe-core/src/main/java/org/apache/doris/plugin/audit/AuditLoaderPlugin.java
index fb4b6153431..4503b5b8802 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/plugin/audit/AuditLoaderPlugin.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/plugin/audit/AuditLoaderPlugin.java
@@ -156,6 +156,7 @@ public class AuditLoaderPlugin extends Plugin implements 
AuditPlugin {
         logBuffer.append(event.scanRows).append("\t");
         logBuffer.append(event.returnRows).append("\t");
         logBuffer.append(event.stmtId).append("\t");
+        logBuffer.append(event.stmtType).append("\t");
         logBuffer.append(event.isQuery ? 1 : 0).append("\t");
         logBuffer.append(event.feIp).append("\t");
         logBuffer.append(event.cpuTimeMs).append("\t");
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/AuditLogHelper.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/AuditLogHelper.java
index bcca751f91c..7d14586bbea 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/AuditLogHelper.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/AuditLogHelper.java
@@ -22,6 +22,7 @@ import org.apache.doris.analysis.Queriable;
 import org.apache.doris.analysis.QueryStmt;
 import org.apache.doris.analysis.SelectStmt;
 import org.apache.doris.analysis.StatementBase;
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.analysis.ValueList;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.cluster.ClusterNamespace;
@@ -242,6 +243,9 @@ public class AuditLogHelper {
         } else {
             auditEventBuilder.setStmt(origStmt);
         }
+
+        auditEventBuilder.setStmtType(getStmtType(parsedStmt));
+
         if (!Env.getCurrentEnv().isMaster()) {
             if (ctx.executor.isForwardToMaster()) {
                 auditEventBuilder.setState(ctx.executor.getProxyStatus());
@@ -254,4 +258,18 @@ public class AuditLogHelper {
         }
         
Env.getCurrentEnv().getWorkloadRuntimeStatusMgr().submitFinishQueryToAudit(auditEventBuilder.build());
     }
+
+    private static String getStmtType(StatementBase stmt) {
+        if (stmt == null) {
+            return StmtType.OTHER.name();
+        }
+        if (stmt.isExplain()) {
+            return StmtType.EXPLAIN.name();
+        }
+        if (stmt instanceof LogicalPlanAdapter) {
+            return ((LogicalPlanAdapter) 
stmt).getLogicalPlan().stmtType().name();
+        } else {
+            return stmt.stmtType().name();
+        }
+    }
 }
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/alter/InternalSchemaAlterTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/alter/InternalSchemaAlterTest.java
index 5e7f5387f57..cf9d31b1cca 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/alter/InternalSchemaAlterTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/alter/InternalSchemaAlterTest.java
@@ -17,8 +17,10 @@
 
 package org.apache.doris.alter;
 
+import org.apache.doris.analysis.ColumnDef;
 import org.apache.doris.catalog.Database;
 import org.apache.doris.catalog.Env;
+import org.apache.doris.catalog.InternalSchema;
 import org.apache.doris.catalog.InternalSchemaInitializer;
 import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.catalog.Partition;
@@ -69,4 +71,16 @@ public class InternalSchemaAlterTest extends 
TestWithFeService {
                     
partitionInfo.getReplicaAllocation(partition.getId()).getTotalReplicaNum());
         }
     }
+
+    @Test
+    public void testCheckAuditLogTable() throws AnalysisException {
+        Database db = Env.getCurrentEnv().getCatalogMgr()
+                
.getInternalCatalog().getDbNullable(FeConstants.INTERNAL_DB_NAME);
+        Assertions.assertNotNull(db);
+        OlapTable table = 
db.getOlapTableOrAnalysisException(AuditLoaderPlugin.AUDIT_LOG_TABLE);
+        Assertions.assertNotNull(table);
+        for (ColumnDef def : InternalSchema.AUDIT_SCHEMA) {
+            Assertions.assertNotNull(table.getColumn(def.getName()));
+        }
+    }
 }
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/analysis/QueryStmtTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/analysis/QueryStmtTest.java
index b42a29b31bd..495063fe48d 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/QueryStmtTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/QueryStmtTest.java
@@ -33,6 +33,7 @@ import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
 
 import java.util.HashMap;
 import java.util.List;
@@ -370,4 +371,32 @@ public class QueryStmtTest {
         }
         return resultMap;
     }
+
+    @Test
+    public void testParseStmtType() throws Exception {
+        ConnectContext ctx = UtFrameUtils.createDefaultCtx();
+        String sql = "select a from c.b";
+        StatementBase stmt = UtFrameUtils.onlyParse(sql, ctx);
+        Assert.assertEquals(stmt.stmtType(), StmtType.SELECT);
+
+        sql = "drop table a";
+        stmt = UtFrameUtils.onlyParse(sql, ctx);
+        Assertions.assertEquals(stmt.stmtType(), StmtType.DROP);
+
+        sql = "use a";
+        stmt = UtFrameUtils.onlyParse(sql, ctx);
+        Assertions.assertEquals(stmt.stmtType(), StmtType.USE);
+
+        sql = "CREATE TABLE tbl (`id` INT NOT NULL) DISTRIBUTED BY HASH(`id`) 
BUCKETS 1";
+        stmt = UtFrameUtils.onlyParse(sql, ctx);
+        Assertions.assertEquals(stmt.stmtType(), StmtType.CREATE);
+
+        sql = "update a set b =1";
+        stmt = UtFrameUtils.onlyParse(sql, ctx);
+        Assertions.assertEquals(stmt.stmtType(), StmtType.UPDATE);
+
+        sql = "insert into a values(1)";
+        stmt = UtFrameUtils.onlyParse(sql, ctx);
+        Assertions.assertEquals(stmt.stmtType(), StmtType.INSERT);
+    }
 }
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/parser/NereidsParserTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/parser/NereidsParserTest.java
index 5773a9f29b5..d39e5cf22a6 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/parser/NereidsParserTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/parser/NereidsParserTest.java
@@ -18,6 +18,7 @@
 package org.apache.doris.nereids.parser;
 
 import org.apache.doris.analysis.StatementBase;
+import org.apache.doris.analysis.StmtType;
 import org.apache.doris.common.Config;
 import org.apache.doris.common.Pair;
 import org.apache.doris.nereids.StatementContext;
@@ -420,4 +421,24 @@ public class NereidsParserTest extends ParserTestBase {
         NereidsParser nereidsParser = new NereidsParser();
         nereidsParser.parseSingle(sql);
     }
+
+    @Test
+    public void testParseStmtType() {
+        NereidsParser nereidsParser = new NereidsParser();
+        String sql = "select a from b";
+        LogicalPlan plan = nereidsParser.parseSingle(sql);
+        Assertions.assertEquals(plan.stmtType(), StmtType.SELECT);
+
+        sql = "use a";
+        plan = nereidsParser.parseSingle(sql);
+        Assertions.assertEquals(plan.stmtType(), StmtType.OTHER);
+
+        sql = "CREATE TABLE tbl (`id` INT NOT NULL) DISTRIBUTED BY HASH(`id`) 
BUCKETS 1";
+        plan = nereidsParser.parseSingle(sql);
+        Assertions.assertEquals(plan.stmtType(), StmtType.CREATE);
+
+        sql = "update a set b =1";
+        plan = nereidsParser.parseSingle(sql);
+        Assertions.assertEquals(plan.stmtType(), StmtType.UPDATE);
+    }
 }
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/qe/AuditEventProcessorTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/qe/AuditEventProcessorTest.java
index 26c51fb66db..6c9f54080a0 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/qe/AuditEventProcessorTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/qe/AuditEventProcessorTest.java
@@ -62,10 +62,12 @@ public class AuditEventProcessorTest {
                 .setScanRows(200000)
                 .setReturnRows(1)
                 .setStmtId(1234)
+                .setStmtType("SELECT")
                 .setStmt("select * from tbl1").build();
 
         Assert.assertEquals("127.0.0.1", event.clientIp);
         Assert.assertEquals(200000, event.scanRows);
+        Assert.assertEquals("SELECT", event.stmtType);
     }
 
     @Test
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/utframe/UtFrameUtils.java 
b/fe/fe-core/src/test/java/org/apache/doris/utframe/UtFrameUtils.java
index 2f1848f4aa3..d09860351bf 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/utframe/UtFrameUtils.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/utframe/UtFrameUtils.java
@@ -145,6 +145,26 @@ public class UtFrameUtils {
         return statementBases;
     }
 
+    public static StatementBase onlyParse(String originStmt, ConnectContext 
ctx) throws Exception {
+        System.out.println("begin to parse stmt: " + originStmt);
+        SqlScanner input = new SqlScanner(new StringReader(originStmt), 
ctx.getSessionVariable().getSqlMode());
+        SqlParser parser = new SqlParser(input);
+        StatementBase statementBase = null;
+        try {
+            statementBase = SqlParserUtils.getFirstStmt(parser);
+        } catch (AnalysisException e) {
+            String errorMessage = parser.getErrorMsg(originStmt);
+            System.err.println("parse failed: " + errorMessage);
+            if (errorMessage == null) {
+                throw e;
+            } else {
+                throw new AnalysisException(errorMessage, e);
+            }
+        }
+        statementBase.setOrigStmt(new OriginStatement(originStmt, 0));
+        return statementBase;
+    }
+
     public static String generateRandomFeRunningDir(Class testSuiteClass) {
         return generateRandomFeRunningDir(testSuiteClass.getSimpleName());
     }
diff --git 
a/fe_plugins/auditdemo/src/main/java/org/apache/doris/plugin/audit/AuditPluginDemo.java
 
b/fe_plugins/auditdemo/src/main/java/org/apache/doris/plugin/audit/AuditPluginDemo.java
index 5cbb4f028bb..26e13c8c043 100755
--- 
a/fe_plugins/auditdemo/src/main/java/org/apache/doris/plugin/audit/AuditPluginDemo.java
+++ 
b/fe_plugins/auditdemo/src/main/java/org/apache/doris/plugin/audit/AuditPluginDemo.java
@@ -17,7 +17,6 @@
 
 package org.apache.doris.plugin.audit;
 
-import org.apache.doris.plugin.AuditEvent;
 import org.apache.doris.plugin.AuditPlugin;
 import org.apache.doris.plugin.Plugin;
 import org.apache.doris.plugin.PluginContext;
diff --git a/fe_plugins/auditloader/src/main/assembly/plugin.properties 
b/fe_plugins/auditloader/src/main/assembly/plugin.properties
index 65b25f87067..eb7ba9c29b0 100755
--- a/fe_plugins/auditloader/src/main/assembly/plugin.properties
+++ b/fe_plugins/auditloader/src/main/assembly/plugin.properties
@@ -20,4 +20,4 @@ type=AUDIT
 description=load audit log to olap load, and user can view the statistic of 
queries
 version=1.0.0
 java.version=1.8.0
-classname=org.apache.doris.plugin.audit.AuditLoaderPlugin
+classname=org.apache.doris.plugin.audit.custom.AuditLoaderPlugin
diff --git 
a/fe_plugins/auditloader/src/main/java/org/apache/doris/plugin/audit/AuditLoaderPlugin.java
 
b/fe_plugins/auditloader/src/main/java/org/apache/doris/plugin/audit/custom/AuditLoaderPlugin.java
similarity index 97%
rename from 
fe_plugins/auditloader/src/main/java/org/apache/doris/plugin/audit/AuditLoaderPlugin.java
rename to 
fe_plugins/auditloader/src/main/java/org/apache/doris/plugin/audit/custom/AuditLoaderPlugin.java
index ed4b7efc651..4d873b57fe8 100755
--- 
a/fe_plugins/auditloader/src/main/java/org/apache/doris/plugin/audit/AuditLoaderPlugin.java
+++ 
b/fe_plugins/auditloader/src/main/java/org/apache/doris/plugin/audit/custom/AuditLoaderPlugin.java
@@ -15,11 +15,10 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package org.apache.doris.plugin.audit;
+package org.apache.doris.plugin.audit.custom;
 
 import org.apache.doris.common.Config;
 import org.apache.doris.catalog.Env;
-import org.apache.doris.plugin.AuditEvent;
 import org.apache.doris.plugin.AuditPlugin;
 import org.apache.doris.plugin.Plugin;
 import org.apache.doris.plugin.PluginContext;
@@ -27,6 +26,7 @@ import org.apache.doris.plugin.PluginException;
 import org.apache.doris.plugin.PluginInfo;
 
 import com.google.common.collect.Queues;
+import org.apache.doris.plugin.audit.AuditEvent;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -163,6 +163,7 @@ public class AuditLoaderPlugin extends Plugin implements 
AuditPlugin {
         logBuffer.append(longToTimeString(event.timestamp)).append("\t");
         logBuffer.append(event.clientIp).append("\t");
         logBuffer.append(event.user).append("\t");
+        logBuffer.append(event.ctl).append("\t");
         logBuffer.append(event.db).append("\t");
         logBuffer.append(event.state).append("\t");
         logBuffer.append(event.errorCode).append("\t");
@@ -172,18 +173,22 @@ public class AuditLoaderPlugin extends Plugin implements 
AuditPlugin {
         logBuffer.append(event.scanRows).append("\t");
         logBuffer.append(event.returnRows).append("\t");
         logBuffer.append(event.stmtId).append("\t");
+        logBuffer.append(event.stmtType).append("\t");
         logBuffer.append(event.isQuery ? 1 : 0).append("\t");
         logBuffer.append(event.feIp).append("\t");
         logBuffer.append(event.cpuTimeMs).append("\t");
         logBuffer.append(event.sqlHash).append("\t");
         logBuffer.append(event.sqlDigest).append("\t");
         logBuffer.append(event.peakMemoryBytes).append("\t");
+        logBuffer.append(event.workloadGroup).append("\t");
         // trim the query to avoid too long
         // use `getBytes().length` to get real byte length
         String stmt = truncateByBytes(event.stmt).replace("\n", " ")
-                                                    .replace("\t", " ")
-                                                    .replace("\r", " ");
-        LOG.debug("receive audit event with stmt: {}", stmt);
+            .replace("\t", " ")
+            .replace("\r", " ");
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("receive audit event with stmt: {}", stmt);
+        }
         logBuffer.append(stmt).append("\n");
     }
 
diff --git 
a/fe_plugins/auditloader/src/main/java/org/apache/doris/plugin/audit/DorisStreamLoader.java
 
b/fe_plugins/auditloader/src/main/java/org/apache/doris/plugin/audit/custom/DorisStreamLoader.java
similarity index 92%
rename from 
fe_plugins/auditloader/src/main/java/org/apache/doris/plugin/audit/DorisStreamLoader.java
rename to 
fe_plugins/auditloader/src/main/java/org/apache/doris/plugin/audit/custom/DorisStreamLoader.java
index d389f0dfa81..b5ea0277986 100644
--- 
a/fe_plugins/auditloader/src/main/java/org/apache/doris/plugin/audit/DorisStreamLoader.java
+++ 
b/fe_plugins/auditloader/src/main/java/org/apache/doris/plugin/audit/custom/DorisStreamLoader.java
@@ -15,7 +15,9 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package org.apache.doris.plugin.audit;
+package org.apache.doris.plugin.audit.custom;
+
+import org.apache.doris.catalog.InternalSchema;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -29,6 +31,7 @@ import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.util.Base64;
 import java.util.Calendar;
+import java.util.stream.Collectors;
 
 public class DorisStreamLoader {
     private final static Logger LOG = 
LogManager.getLogger(DorisStreamLoader.class);
@@ -71,10 +74,8 @@ public class DorisStreamLoader {
 
         conn.addRequestProperty("label", label);
         conn.addRequestProperty("max_filter_ratio", "1.0");
-        conn.addRequestProperty("columns", "query_id, `time`, client_ip, user, 
db, state, error_code, error_message, " +
-                "query_time, scan_bytes, scan_rows, return_rows, stmt_id, 
is_query, frontend_ip, cpu_time_ms, sql_hash, " +
-                "sql_digest, peak_memory_bytes, stmt");
-
+        conn.addRequestProperty("columns",
+            InternalSchema.AUDIT_SCHEMA.stream().map(c -> 
c.getName()).collect(Collectors.joining(",")));
         conn.setDoOutput(true);
         conn.setDoInput(true);
 
@@ -88,9 +89,9 @@ public class DorisStreamLoader {
         sb.append("-H \"").append("Expect\":").append("\"100-continue\" \\\n  
");
         sb.append("-H \"").append("Content-Type\":").append("\"text/plain; 
charset=UTF-8\" \\\n  ");
         sb.append("-H \"").append("max_filter_ratio\":").append("\"1.0\" \\\n  
");
-        sb.append("-H \"").append("columns\":").append("\"query_id, time, 
client_ip, user, db, state, error_code, " +
-                "error_message, query_time, scan_bytes, scan_rows, 
return_rows, stmt_id, is_query, frontend_ip, " +
-                "cpu_time_ms, sql_hash, sql_digest, peak_memory_bytes, stmt\" 
\\\n  ");
+        sb.append("-H \"").append("columns\":")
+            .append("\"" + InternalSchema.AUDIT_SCHEMA.stream().map(c -> 
c.getName()).collect(
+            Collectors.joining(",")) + "\" \\\n  ");
         sb.append("\"").append(conn.getURL()).append("\"");
         return sb.toString();
     }
diff --git 
a/fe_plugins/sparksql-converter/src/main/java/org/apache/doris/plugin/dialect/spark/SparkSql3LogicalPlanBuilder.java
 
b/fe_plugins/sparksql-converter/src/main/java/org/apache/doris/plugin/dialect/spark/SparkSql3LogicalPlanBuilder.java
index e64fc736dcb..d2357fc6578 100644
--- 
a/fe_plugins/sparksql-converter/src/main/java/org/apache/doris/plugin/dialect/spark/SparkSql3LogicalPlanBuilder.java
+++ 
b/fe_plugins/sparksql-converter/src/main/java/org/apache/doris/plugin/dialect/spark/SparkSql3LogicalPlanBuilder.java
@@ -42,7 +42,7 @@ public class SparkSql3LogicalPlanBuilder extends 
LogicalPlanBuilder {
     private final ParserContext parserContext;
 
     public SparkSql3LogicalPlanBuilder() {
-        this.parserContext = new ParserContext(Dialect.SPARK_SQL);
+        this.parserContext = new ParserContext(Dialect.SPARK);
     }
 
     @Override
diff --git 
a/fe_plugins/sparksql-converter/src/main/java/org/apache/doris/plugin/dialect/spark/SparkSqlDialectConverterPlugin.java
 
b/fe_plugins/sparksql-converter/src/main/java/org/apache/doris/plugin/dialect/spark/SparkSqlDialectConverterPlugin.java
index 686c692faf8..a565b64aef0 100644
--- 
a/fe_plugins/sparksql-converter/src/main/java/org/apache/doris/plugin/dialect/spark/SparkSqlDialectConverterPlugin.java
+++ 
b/fe_plugins/sparksql-converter/src/main/java/org/apache/doris/plugin/dialect/spark/SparkSqlDialectConverterPlugin.java
@@ -37,7 +37,7 @@ public class SparkSqlDialectConverterPlugin extends Plugin 
implements DialectCon
 
     @Override
     public ImmutableSet<Dialect> acceptDialects() {
-        return ImmutableSet.of(Dialect.SPARK_SQL);
+        return ImmutableSet.of(Dialect.SPARK);
     }
 
     @Override
diff --git 
a/fe_plugins/trino-converter/src/main/java/org/apache/doris/plugin/dialect/trino/TrinoLogicalPlanBuilder.java
 
b/fe_plugins/trino-converter/src/main/java/org/apache/doris/plugin/dialect/trino/TrinoLogicalPlanBuilder.java
index 75da2236ba5..2e6ace105b1 100644
--- 
a/fe_plugins/trino-converter/src/main/java/org/apache/doris/plugin/dialect/trino/TrinoLogicalPlanBuilder.java
+++ 
b/fe_plugins/trino-converter/src/main/java/org/apache/doris/plugin/dialect/trino/TrinoLogicalPlanBuilder.java
@@ -320,7 +320,7 @@ public class TrinoLogicalPlanBuilder extends 
io.trino.sql.tree.AstVisitor<Object
                 throw new DialectTransformException("transform not standard 
decimal data type ");
             }
             // Trino only support signed, safe unsigned is false here
-            return DataType.convertPrimitiveFromStrings(types, false);
+            return DataType.convertPrimitiveFromStrings(types);
         } else if (dataType instanceof io.trino.sql.tree.DateTimeDataType) {
             // TODO: support date data type mapping
             throw new DialectTransformException("transform date data type");


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to