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

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 6845b7eac98 Support parsing Doris DESC/DROP FUNCTION and SHOW 
FUNCTIONS syntax (#38108)
6845b7eac98 is described below

commit 6845b7eac98fb85eedd1e7235c58b78ebe8c99e3
Author: cxy <[email protected]>
AuthorDate: Sat Feb 21 11:29:51 2026 +0800

    Support parsing Doris DESC/DROP FUNCTION and SHOW FUNCTIONS syntax (#38108)
    
    * Support parsing Doris DESC/DROP FUNCTION and SHOW FUNCTIONS syntax
    
    * Support parsing Doris DESC/DROP FUNCTION and SHOW FUNCTIONS syntax
    
    * Fix typo in SQL case ID for desc function
    
    * Simplify function name owner assertions
    
    Removed owner assertions for function name in 
DorisDescFunctionStatementAssert.
    
    * Add owner assertion for DorisDescFunctionStatement
    
    * Rename SQL case ID for consistency
    
    * Fix typo in XML for DESC FUNCTION case
---
 .../core/database/visitor/SQLVisitorRule.java      |  6 ++
 .../src/main/antlr4/imports/doris/BaseRule.g4      |  1 +
 .../src/main/antlr4/imports/doris/DALStatement.g4  | 10 +++
 .../src/main/antlr4/imports/doris/DDLStatement.g4  |  4 +-
 .../src/main/antlr4/imports/doris/DorisKeyword.g4  |  8 ++
 .../sql/parser/autogen/DorisStatement.g4           |  3 +-
 .../statement/type/DorisDALStatementVisitor.java   | 35 +++++++++
 .../statement/type/DorisDDLStatementVisitor.java   | 14 +++-
 .../doris/dal/DorisDescFunctionStatement.java      | 49 +++++++++++++
 .../doris/dal/DorisShowFunctionsStatement.java     | 67 +++++++++++++++++
 .../doris/ddl/DorisDropFunctionStatement.java      | 56 ++++++++++++++
 .../dal/dialect/doris/DorisDALStatementAssert.java | 10 +++
 .../type/DorisDescFunctionStatementAssert.java     | 62 ++++++++++++++++
 .../type/DorisShowFunctionsStatementAssert.java    | 85 ++++++++++++++++++++++
 .../ddl/dialect/doris/DorisDDLStatementAssert.java |  4 +
 .../doris/DorisDropFunctionStatementAssert.java    | 79 ++++++++++++++++++++
 .../cases/parser/jaxb/RootSQLParserTestCases.java  | 12 +++
 .../doris/DorisDescFunctionStatementTestCase.java  | 36 +++++++++
 .../doris/DorisShowFunctionsStatementTestCase.java | 53 ++++++++++++++
 .../doris/DorisDropFunctionStatementTestCase.java  | 51 +++++++++++++
 .../src/main/resources/case/dal/desc-function.xml  | 39 ++++++++++
 .../src/main/resources/case/dal/show-functions.xml | 42 +++++++++++
 .../src/main/resources/case/ddl/drop-function.xml  | 15 +++-
 .../supported/dal/desc-function.xml}               | 18 ++---
 .../supported/dal/show-functions.xml}              | 20 ++---
 .../resources/sql/supported/ddl/drop-function.xml  |  3 +-
 26 files changed, 749 insertions(+), 33 deletions(-)

diff --git 
a/parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java
 
b/parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java
index 09e4d68d35d..fcfddecf049 100644
--- 
a/parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java
+++ 
b/parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java
@@ -135,6 +135,8 @@ public enum SQLVisitorRule {
     
     DROP_GROUP("DropGroup", SQLStatementType.DDL),
     
+    DORIS_DROP_FUNCTION("DorisDropFunction", SQLStatementType.DDL),
+    
     CREATE_DATABASE("CreateDatabase", SQLStatementType.DDL),
     
     CREATE_DATABASE_LINK("CreateDatabaseLink", SQLStatementType.DDL),
@@ -437,6 +439,10 @@ public enum SQLVisitorRule {
     
     SHOW_TRIGGERS("ShowTriggers", SQLStatementType.DAL),
     
+    SHOW_FUNCTIONS("ShowFunctions", SQLStatementType.DAL),
+    
+    DESC_FUNCTION("DescFunction", SQLStatementType.DAL),
+    
     SET_VARIABLE("SetVariable", SQLStatementType.DAL),
     
     UNSET_VARIABLE("UnsetVariable", SQLStatementType.DAL),
diff --git 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4
index bb722e22554..3930e451602 100644
--- a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4
+++ b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4
@@ -162,6 +162,7 @@ identifierKeywordsUnambiguous
     | BOOL
     | BTREE
     | BUCKETS
+    | BUILTIN
     | CASCADED
     | CATALOG_NAME
     | CHAIN
diff --git 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DALStatement.g4 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DALStatement.g4
index 1ce2e429c5f..c269dc08105 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DALStatement.g4
+++ 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DALStatement.g4
@@ -31,6 +31,10 @@ help
     : HELP textOrIdentifier
     ;
 
+descFunction
+    : DESC FUNCTION functionName (LP_ RP_)?
+    ;
+
 explain
     : (DESC | DESCRIBE | EXPLAIN)
     (tableName (columnRef | textString)? ALL?
@@ -170,6 +174,11 @@ showFunctionCode
     : SHOW FUNCTION CODE functionName
     ;
 
+showFunctions
+    : SHOW GLOBAL FULL? FUNCTIONS showLike?
+    | SHOW FULL? BUILTIN? FUNCTIONS fromDatabase? showLike?
+    ;
+
 showFunctionStatus
     : SHOW FUNCTION STATUS showFilter?
     ;
@@ -782,6 +791,7 @@ show
     | showErrors
     | showEvents
     | showFunctionCode
+    | showFunctions
     | showFunctionStatus
     | showGrants
     | showMasterStatus
diff --git 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
index 32367d83747..943cbb02dd8 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
+++ 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
@@ -357,8 +357,8 @@ alterFunction
     : ALTER FUNCTION functionName routineOption*
     ;
 
-dropFunction
-    : DROP FUNCTION ifExists? functionName
+dorisDropFunction
+    : DROP GLOBAL? FUNCTION functionName LP_ dataType (COMMA_ dataType)* RP_
     ;
 
 createFile
diff --git 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4
index 2f55522749f..20b41379057 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4
+++ 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4
@@ -217,6 +217,10 @@ BUILD
     : B U I L D
     ;
 
+BUILTIN
+    : B U I L T I N
+    ;
+
 BY
     : B Y
     ;
@@ -927,6 +931,10 @@ FUNCTION
     : F U N C T I O N
     ;
 
+FUNCTIONS
+    : F U N C T I O N S
+    ;
+
 GENERAL
     : G E N E R A L
     ;
diff --git 
a/parser/sql/engine/dialect/doris/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/DorisStatement.g4
 
b/parser/sql/engine/dialect/doris/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/DorisStatement.g4
index 53207b366dd..30c21116d75 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/DorisStatement.g4
+++ 
b/parser/sql/engine/dialect/doris/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/DorisStatement.g4
@@ -36,7 +36,8 @@ execute
     | createProcedure
     | dropProcedure
     | createFunction
-    | dropFunction
+    | dorisDropFunction
+    | descFunction
     | createDatabase
     | dropDatabase
     | createEvent
diff --git 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java
 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java
index c90e53a1561..024f1adccdc 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java
@@ -39,6 +39,7 @@ import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateL
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateRepositoryContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateResourceGroupContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DelimiterContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DescFunctionContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DropResourceGroupContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DropRepositoryContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ExplainContext;
@@ -91,6 +92,7 @@ import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ShowErr
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ShowEventsContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ShowFilterContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ShowFunctionCodeContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ShowFunctionsContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ShowFunctionStatusContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ShowGrantsContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ShowIndexContext;
@@ -171,6 +173,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.RuleNameS
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.property.PropertiesSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.property.PropertySegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.routine.FunctionNameSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.FunctionSegment;
@@ -178,6 +181,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.order.Ord
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.pagination.limit.LimitSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.predicate.WhereSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.DatabaseSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.OwnerSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.AnalyzeTableStatement;
@@ -202,8 +206,10 @@ import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisCreateSqlBl
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisCreateRepositoryStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisSwitchStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisAlterSqlBlockRuleStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisDescFunctionStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisDropRepositoryStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisDropSqlBlockRuleStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisShowFunctionsStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisShowSqlBlockRuleStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisShowRoutineLoadTaskStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisShowRoutineLoadStatement;
@@ -851,6 +857,35 @@ public final class DorisDALStatementVisitor extends 
DorisStatementVisitor implem
         return result;
     }
     
+    @Override
+    public ASTNode visitDescFunction(final DescFunctionContext ctx) {
+        DorisDescFunctionStatement result = new 
DorisDescFunctionStatement(getDatabaseType());
+        FunctionNameSegment functionName =
+                new 
FunctionNameSegment(ctx.functionName().start.getStartIndex(), 
ctx.functionName().stop.getStopIndex(), (IdentifierValue) 
visit(ctx.functionName().identifier()));
+        if (null != ctx.functionName().owner()) {
+            functionName.setOwner((OwnerSegment) 
visit(ctx.functionName().owner()));
+        }
+        result.setFunctionName(functionName);
+        result.addParameterMarkers(getParameterMarkerSegments());
+        return result;
+    }
+    
+    @Override
+    public ASTNode visitShowFunctions(final ShowFunctionsContext ctx) {
+        DorisShowFunctionsStatement result = new 
DorisShowFunctionsStatement(getDatabaseType());
+        result.setGlobal(null != ctx.GLOBAL());
+        result.setFull(null != ctx.FULL());
+        result.setBuiltin(null != ctx.BUILTIN());
+        if (null != ctx.fromDatabase()) {
+            result.setFromDatabase((FromDatabaseSegment) 
visit(ctx.fromDatabase()));
+        }
+        if (null != ctx.showLike()) {
+            result.setLikeSegment((ShowLikeSegment) visit(ctx.showLike()));
+        }
+        result.addParameterMarkers(getParameterMarkerSegments());
+        return result;
+    }
+    
     @Override
     public ASTNode visitShowProcedureStatus(final ShowProcedureStatusContext 
ctx) {
         MySQLShowProcedureStatusStatement result = new 
MySQLShowProcedureStatusStatement(getDatabaseType(), null == ctx.showFilter() ? 
null : (ShowFilterSegment) visit(ctx.showFilter()));
diff --git 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
index 134029ed4b7..34da1176ab9 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
@@ -75,7 +75,7 @@ import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateV
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DeallocateContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DropDatabaseContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DropEventContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DropFunctionContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DorisDropFunctionContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DropIndexContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DropLogfileGroupContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DropProcedureContext;
@@ -185,7 +185,6 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.da
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.database.CreateDatabaseStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.database.DropDatabaseStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.function.AlterFunctionStatement;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.function.DropFunctionStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index.CreateIndexStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index.DropIndexStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index.BuildIndexStatement;
@@ -221,6 +220,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.value.collection.Coll
 import 
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisAlterStoragePolicyStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisCreateFunctionStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisDropFunctionStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisResumeJobStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.ddl.event.MySQLAlterEventStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.mysql.ddl.event.MySQLCreateEventStatement;
@@ -1234,8 +1234,14 @@ public final class DorisDDLStatementVisitor extends 
DorisStatementVisitor implem
     }
     
     @Override
-    public ASTNode visitDropFunction(final DropFunctionContext ctx) {
-        return new DropFunctionStatement(getDatabaseType());
+    public ASTNode visitDorisDropFunction(final DorisDropFunctionContext ctx) {
+        DorisDropFunctionStatement result = new 
DorisDropFunctionStatement(getDatabaseType());
+        result.setGlobal(null != ctx.GLOBAL());
+        result.setFunctionName((FunctionNameSegment) 
visit(ctx.functionName()));
+        for (int i = 0; i < ctx.dataType().size(); i++) {
+            result.getParameterDataTypes().add((DataTypeSegment) 
visit(ctx.dataType(i)));
+        }
+        return result;
     }
     
     @Override
diff --git 
a/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/dal/DorisDescFunctionStatement.java
 
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/dal/DorisDescFunctionStatement.java
new file mode 100644
index 00000000000..36c88e8aee5
--- /dev/null
+++ 
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/dal/DorisDescFunctionStatement.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.sql.parser.statement.doris.dal;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.routine.FunctionNameSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DALStatement;
+
+import java.util.Optional;
+
+/**
+ * Desc function statement for Doris.
+ */
+@Getter
+@Setter
+public final class DorisDescFunctionStatement extends DALStatement {
+    
+    private FunctionNameSegment functionName;
+    
+    public DorisDescFunctionStatement(final DatabaseType databaseType) {
+        super(databaseType);
+    }
+    
+    /**
+     * Get function name segment.
+     *
+     * @return function name segment
+     */
+    public Optional<FunctionNameSegment> getFunctionName() {
+        return Optional.ofNullable(functionName);
+    }
+}
diff --git 
a/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/dal/DorisShowFunctionsStatement.java
 
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/dal/DorisShowFunctionsStatement.java
new file mode 100644
index 00000000000..e65444d65d8
--- /dev/null
+++ 
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/dal/DorisShowFunctionsStatement.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.sql.parser.statement.doris.dal;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.ShowLikeSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DALStatement;
+
+import java.util.Optional;
+
+/**
+ * Show functions statement for Doris.
+ */
+@Getter
+@Setter
+public final class DorisShowFunctionsStatement extends DALStatement {
+    
+    private boolean global;
+    
+    private boolean full;
+    
+    private boolean builtin;
+    
+    private FromDatabaseSegment fromDatabase;
+    
+    private ShowLikeSegment likeSegment;
+    
+    public DorisShowFunctionsStatement(final DatabaseType databaseType) {
+        super(databaseType);
+    }
+    
+    /**
+     * Get from database segment.
+     *
+     * @return from database segment
+     */
+    public Optional<FromDatabaseSegment> getFromDatabase() {
+        return Optional.ofNullable(fromDatabase);
+    }
+    
+    /**
+     * Get like segment.
+     *
+     * @return like segment
+     */
+    public Optional<ShowLikeSegment> getLike() {
+        return Optional.ofNullable(likeSegment);
+    }
+}
diff --git 
a/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisDropFunctionStatement.java
 
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisDropFunctionStatement.java
new file mode 100644
index 00000000000..125fbaa5f25
--- /dev/null
+++ 
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisDropFunctionStatement.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.sql.parser.statement.doris.ddl;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.routine.FunctionNameSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.DataTypeSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DDLStatement;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * Drop function statement for Doris.
+ */
+@Getter
+@Setter
+public final class DorisDropFunctionStatement extends DDLStatement {
+    
+    private FunctionNameSegment functionName;
+    
+    private boolean global;
+    
+    private final List<DataTypeSegment> parameterDataTypes = new 
LinkedList<>();
+    
+    public DorisDropFunctionStatement(final DatabaseType databaseType) {
+        super(databaseType);
+    }
+    
+    /**
+     * Get function name segment.
+     *
+     * @return function name segment
+     */
+    public Optional<FunctionNameSegment> getFunctionName() {
+        return Optional.ofNullable(functionName);
+    }
+}
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/doris/DorisDALStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/doris/DorisDALStatementAssert.java
index db154990d64..156ea1b28a9 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/doris/DorisDALStatementAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/doris/DorisDALStatementAssert.java
@@ -25,7 +25,9 @@ import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisAlterResour
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisAlterSystemStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisCreateSqlBlockRuleStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisCreateRepositoryStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisDescFunctionStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisDropRepositoryStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisShowFunctionsStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisSwitchStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.show.DorisShowQueryStatsStatement;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
@@ -33,7 +35,9 @@ import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.d
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.dal.dialect.doris.type.DorisAlterSystemStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.dal.dialect.doris.type.DorisCreateSqlBlockRuleStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.dal.dialect.doris.type.DorisCreateRepositoryStatementAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.dal.dialect.doris.type.DorisDescFunctionStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.dal.dialect.doris.type.DorisDropRepositoryStatementAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.dal.dialect.doris.type.DorisShowFunctionsStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.dal.dialect.doris.type.DorisShowQueryStatsStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.dal.dialect.doris.type.DorisSwitchStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.dal.dialect.doris.type.DorisUnsetVariableStatementAssert;
@@ -42,7 +46,9 @@ import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisAlterSystemStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisCreateSqlBlockRuleStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisCreateRepositoryStatementTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisDescFunctionStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisDropRepositoryStatementTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisShowFunctionsStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisSwitchStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisUnsetVariableStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.show.DorisShowQueryStatsStatementTestCase;
@@ -77,6 +83,10 @@ public final class DorisDALStatementAssert {
             DorisCreateRepositoryStatementAssert.assertIs(assertContext, 
(DorisCreateRepositoryStatement) actual, 
(DorisCreateRepositoryStatementTestCase) expected);
         } else if (actual instanceof DorisDropRepositoryStatement) {
             DorisDropRepositoryStatementAssert.assertIs(assertContext, 
(DorisDropRepositoryStatement) actual, (DorisDropRepositoryStatementTestCase) 
expected);
+        } else if (actual instanceof DorisShowFunctionsStatement) {
+            DorisShowFunctionsStatementAssert.assertIs(assertContext, 
(DorisShowFunctionsStatement) actual, (DorisShowFunctionsStatementTestCase) 
expected);
+        } else if (actual instanceof DorisDescFunctionStatement) {
+            DorisDescFunctionStatementAssert.assertIs(assertContext, 
(DorisDescFunctionStatement) actual, (DorisDescFunctionStatementTestCase) 
expected);
         }
     }
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/doris/type/DorisDescFunctionStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/doris/type/DorisDescFunctionStatementAssert.java
new file mode 100644
index 00000000000..eae7bfc1f7e
--- /dev/null
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/doris/type/DorisDescFunctionStatementAssert.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.dal.dialect.doris.type;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisDescFunctionStatement;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.SQLSegmentAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.owner.OwnerAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisDescFunctionStatementTestCase;
+import org.hamcrest.MatcherAssert;
+import org.hamcrest.Matchers;
+import org.junit.jupiter.api.Assertions;
+
+/**
+ * Desc function statement assert for Doris.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DorisDescFunctionStatementAssert {
+    
+    /**
+     * Assert desc function statement is correct with expected parser result.
+     *
+     * @param assertContext assert context
+     * @param actual actual desc function statement
+     * @param expected expected desc function statement test case
+     */
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final DorisDescFunctionStatement actual, final 
DorisDescFunctionStatementTestCase expected) {
+        assertFunctionName(assertContext, actual, expected);
+    }
+    
+    private static void assertFunctionName(final SQLCaseAssertContext 
assertContext, final DorisDescFunctionStatement actual, final 
DorisDescFunctionStatementTestCase expected) {
+        if (null != expected.getFunctionName()) {
+            Assertions.assertTrue(actual.getFunctionName().isPresent(), 
assertContext.getText("Function name should not be null"));
+            MatcherAssert.assertThat(assertContext.getText("Function name 
assertion error: "), actual.getFunctionName().get().getIdentifier().getValue(),
+                    Matchers.is(expected.getFunctionName().getFunctionName()));
+            SQLSegmentAssert.assertIs(assertContext, 
actual.getFunctionName().get(), expected.getFunctionName());
+            if (null == expected.getFunctionName().getOwner()) {
+                
Assertions.assertFalse(actual.getFunctionName().get().getOwner().isPresent(), 
assertContext.getText("Actual function owner should not exist."));
+            } else {
+                
Assertions.assertTrue(actual.getFunctionName().get().getOwner().isPresent(), 
assertContext.getText("Actual function owner should exist."));
+                OwnerAssert.assertIs(assertContext, 
actual.getFunctionName().get().getOwner().get(), 
expected.getFunctionName().getOwner());
+            }
+        }
+    }
+}
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/doris/type/DorisShowFunctionsStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/doris/type/DorisShowFunctionsStatementAssert.java
new file mode 100644
index 00000000000..a7fb0114470
--- /dev/null
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/doris/type/DorisShowFunctionsStatementAssert.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.dal.dialect.doris.type;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.sql.parser.statement.doris.dal.DorisShowFunctionsStatement;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.SQLSegmentAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.database.DatabaseAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisShowFunctionsStatementTestCase;
+import org.hamcrest.MatcherAssert;
+import org.hamcrest.Matchers;
+import org.junit.jupiter.api.Assertions;
+
+/**
+ * Show functions statement assert for Doris.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DorisShowFunctionsStatementAssert {
+    
+    /**
+     * Assert show functions statement is correct with expected parser result.
+     *
+     * @param assertContext assert context
+     * @param actual actual show functions statement
+     * @param expected expected show functions statement test case
+     */
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final DorisShowFunctionsStatement actual, final 
DorisShowFunctionsStatementTestCase expected) {
+        assertGlobal(assertContext, actual, expected);
+        assertFull(assertContext, actual, expected);
+        assertBuiltin(assertContext, actual, expected);
+        assertFromDatabase(assertContext, actual, expected);
+        assertLike(assertContext, actual, expected);
+    }
+    
+    private static void assertGlobal(final SQLCaseAssertContext assertContext, 
final DorisShowFunctionsStatement actual, final 
DorisShowFunctionsStatementTestCase expected) {
+        if (null != expected.getGlobal()) {
+            MatcherAssert.assertThat(assertContext.getText("Global flag 
assertion error: "), actual.isGlobal(), Matchers.is(expected.getGlobal()));
+        }
+    }
+    
+    private static void assertFull(final SQLCaseAssertContext assertContext, 
final DorisShowFunctionsStatement actual, final 
DorisShowFunctionsStatementTestCase expected) {
+        if (null != expected.getFull()) {
+            MatcherAssert.assertThat(assertContext.getText("Full flag 
assertion error: "), actual.isFull(), Matchers.is(expected.getFull()));
+        }
+    }
+    
+    private static void assertBuiltin(final SQLCaseAssertContext 
assertContext, final DorisShowFunctionsStatement actual, final 
DorisShowFunctionsStatementTestCase expected) {
+        if (null != expected.getBuiltin()) {
+            MatcherAssert.assertThat(assertContext.getText("Builtin flag 
assertion error: "), actual.isBuiltin(), Matchers.is(expected.getBuiltin()));
+        }
+    }
+    
+    private static void assertFromDatabase(final SQLCaseAssertContext 
assertContext, final DorisShowFunctionsStatement actual, final 
DorisShowFunctionsStatementTestCase expected) {
+        if (null != expected.getFromDatabase()) {
+            Assertions.assertTrue(actual.getFromDatabase().isPresent(), 
assertContext.getText("Actual from database should exist."));
+            DatabaseAssert.assertIs(assertContext, 
actual.getFromDatabase().get().getDatabase(), 
expected.getFromDatabase().getDatabase());
+            SQLSegmentAssert.assertIs(assertContext, 
actual.getFromDatabase().get(), expected.getFromDatabase());
+        }
+    }
+    
+    private static void assertLike(final SQLCaseAssertContext assertContext, 
final DorisShowFunctionsStatement actual, final 
DorisShowFunctionsStatementTestCase expected) {
+        if (null != expected.getLike()) {
+            Assertions.assertTrue(actual.getLike().isPresent(), 
assertContext.getText("Actual like segment should exist."));
+            MatcherAssert.assertThat(assertContext.getText("Like pattern 
assertion error: "), actual.getLike().get().getPattern(), 
Matchers.is(expected.getLike().getPattern()));
+            SQLSegmentAssert.assertIs(assertContext, actual.getLike().get(), 
expected.getLike());
+        }
+    }
+}
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDDLStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDDLStatementAssert.java
index db673cd7a5c..9408637b3af 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDDLStatementAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDDLStatementAssert.java
@@ -22,11 +22,13 @@ import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DDLStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisAlterStoragePolicyStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisCreateFunctionStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisDropFunctionStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisResumeJobStatement;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.dialect.doris.type.DorisAlterStoragePolicyStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisAlterStoragePolicyStatementTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisDropFunctionStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisResumeJobStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.function.CreateFunctionStatementTestCase;
 
@@ -50,6 +52,8 @@ public final class DorisDDLStatementAssert {
             DorisCreateFunctionStatementAssert.assertIs(assertContext, 
(DorisCreateFunctionStatement) actual, (CreateFunctionStatementTestCase) 
expected);
         } else if (actual instanceof DorisAlterStoragePolicyStatement) {
             DorisAlterStoragePolicyStatementAssert.assertIs(assertContext, 
(DorisAlterStoragePolicyStatement) actual, 
(DorisAlterStoragePolicyStatementTestCase) expected);
+        } else if (actual instanceof DorisDropFunctionStatement) {
+            DorisDropFunctionStatementAssert.assertIs(assertContext, 
(DorisDropFunctionStatement) actual, (DorisDropFunctionStatementTestCase) 
expected);
         }
     }
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDropFunctionStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDropFunctionStatementAssert.java
new file mode 100644
index 00000000000..e1bafff62b1
--- /dev/null
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/dialect/doris/DorisDropFunctionStatementAssert.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.dialect.doris;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.DataTypeSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.doris.ddl.DorisDropFunctionStatement;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.SQLSegmentAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.type.ExpectedDataTypeSegment;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisDropFunctionStatementTestCase;
+import org.hamcrest.MatcherAssert;
+import org.hamcrest.Matchers;
+import org.junit.jupiter.api.Assertions;
+
+import java.util.List;
+
+/**
+ * Drop function statement assert for Doris.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class DorisDropFunctionStatementAssert {
+    
+    /**
+     * Assert drop function statement is correct with expected parser result.
+     *
+     * @param assertContext assert context
+     * @param actual actual drop function statement
+     * @param expected expected drop function statement test case
+     */
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final DorisDropFunctionStatement actual, final 
DorisDropFunctionStatementTestCase expected) {
+        assertFunctionName(assertContext, actual, expected);
+        assertGlobal(assertContext, actual, expected);
+        assertParameterDataTypes(assertContext, actual, expected);
+    }
+    
+    private static void assertFunctionName(final SQLCaseAssertContext 
assertContext, final DorisDropFunctionStatement actual, final 
DorisDropFunctionStatementTestCase expected) {
+        if (null != expected.getFunctionName()) {
+            Assertions.assertTrue(actual.getFunctionName().isPresent(), 
assertContext.getText("Function name should not be null"));
+            MatcherAssert.assertThat(assertContext.getText("Function name 
assertion error: "), actual.getFunctionName().get().getIdentifier().getValue(),
+                    Matchers.is(expected.getFunctionName().getName()));
+            SQLSegmentAssert.assertIs(assertContext, 
actual.getFunctionName().get(), expected.getFunctionName());
+        }
+    }
+    
+    private static void assertGlobal(final SQLCaseAssertContext assertContext, 
final DorisDropFunctionStatement actual, final 
DorisDropFunctionStatementTestCase expected) {
+        if (null != expected.getGlobal()) {
+            MatcherAssert.assertThat(assertContext.getText("Global flag 
assertion error: "), actual.isGlobal(), Matchers.is(expected.getGlobal()));
+        }
+    }
+    
+    private static void assertParameterDataTypes(final SQLCaseAssertContext 
assertContext, final DorisDropFunctionStatement actual, final 
DorisDropFunctionStatementTestCase expected) {
+        if (!expected.getParameterDataTypes().isEmpty()) {
+            List<DataTypeSegment> actualParams = 
actual.getParameterDataTypes();
+            List<ExpectedDataTypeSegment> expectedParams = 
expected.getParameterDataTypes();
+            MatcherAssert.assertThat(assertContext.getText("Parameter count 
assertion error: "), actualParams.size(), Matchers.is(expectedParams.size()));
+            for (int i = 0; i < actualParams.size(); i++) {
+                
MatcherAssert.assertThat(assertContext.getText(String.format("Parameter %d type 
assertion error: ", i)), actualParams.get(i).getDataTypeName(),
+                        Matchers.is(expectedParams.get(i).getName()));
+            }
+        }
+    }
+}
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
index ef832823470..c6713e7a211 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
@@ -28,6 +28,7 @@ import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisSwitchStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.CreateEncryptKeyStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisAlterStoragePolicyStatementTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisDropFunctionStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisResumeJobStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisAlterSqlBlockRuleStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisDropSqlBlockRuleStatementTestCase;
@@ -90,6 +91,8 @@ import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.mysql.table.MySQLRepairTableStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisAlterResourceStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisSyncStatementTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisDescFunctionStatementTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisShowFunctionsStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.show.DorisShowQueryStatsStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.oracle.OracleSpoolStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.postgresql.PostgreSQLResetParameterStatementTestCase;
@@ -928,6 +931,9 @@ public final class RootSQLParserTestCases {
     @XmlElement(name = "drop-trigger")
     private final List<DropTriggerStatementTestCase> dropTriggerTestCases = 
new LinkedList<>();
     
+    @XmlElement(name = "doris-drop-function")
+    private final List<DorisDropFunctionStatementTestCase> 
dorisDropFunctionTestCases = new LinkedList<>();
+    
     @XmlElement(name = "alter-trigger")
     private final List<AlterTriggerStatementTestCase> alterTriggerTestCases = 
new LinkedList<>();
     
@@ -1348,6 +1354,12 @@ public final class RootSQLParserTestCases {
     @XmlElement(name = "show-query-stats")
     private final List<DorisShowQueryStatsStatementTestCase> 
showQueryStatsTestCases = new LinkedList<>();
     
+    @XmlElement(name = "doris-show-functions")
+    private final List<DorisShowFunctionsStatementTestCase> 
dorisShowFunctionsTestCases = new LinkedList<>();
+    
+    @XmlElement(name = "doris-desc-function")
+    private final List<DorisDescFunctionStatementTestCase> 
dorisDescFunctionTestCases = new LinkedList<>();
+    
     @XmlElement(name = "check-table")
     private final List<MySQLCheckTableStatementTestCase> checkTableTestCases = 
new LinkedList<>();
     
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/doris/DorisDescFunctionStatementTestCase.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/doris/DorisDescFunctionStatementTestCase.java
new file mode 100644
index 00000000000..48badfbdea8
--- /dev/null
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/doris/DorisDescFunctionStatementTestCase.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris;
+
+import lombok.Getter;
+import lombok.Setter;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.function.ExpectedFunction;
+
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * Desc function statement test case for Doris.
+ */
+@Getter
+@Setter
+public final class DorisDescFunctionStatementTestCase extends 
SQLParserTestCase {
+    
+    @XmlElement(name = "function-name")
+    private ExpectedFunction functionName;
+}
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/doris/DorisShowFunctionsStatementTestCase.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/doris/DorisShowFunctionsStatementTestCase.java
new file mode 100644
index 00000000000..0bbec51d49c
--- /dev/null
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/dal/dialect/doris/DorisShowFunctionsStatementTestCase.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris;
+
+import lombok.Getter;
+import lombok.Setter;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.from.ExpectedFromDatabase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.like.ExpectedLikeClause;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * Show functions statement test case for Doris.
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@Getter
+@Setter
+public final class DorisShowFunctionsStatementTestCase extends 
SQLParserTestCase {
+    
+    @XmlAttribute(name = "global")
+    private Boolean global;
+    
+    @XmlAttribute(name = "full")
+    private Boolean full;
+    
+    @XmlAttribute(name = "builtin")
+    private Boolean builtin;
+    
+    @XmlElement(name = "from-database")
+    private ExpectedFromDatabase fromDatabase;
+    
+    @XmlElement(name = "like")
+    private ExpectedLikeClause like;
+}
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisDropFunctionStatementTestCase.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisDropFunctionStatementTestCase.java
new file mode 100644
index 00000000000..b1d29421be4
--- /dev/null
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/doris/DorisDropFunctionStatementTestCase.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris;
+
+import lombok.Getter;
+import lombok.Setter;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.plsql.ExpectedRoutineName;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.type.ExpectedDataTypeSegment;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Drop function statement test case for Doris.
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@Getter
+@Setter
+public final class DorisDropFunctionStatementTestCase extends 
SQLParserTestCase {
+    
+    @XmlElement(name = "function-name")
+    private ExpectedRoutineName functionName;
+    
+    @XmlAttribute(name = "global")
+    private Boolean global;
+    
+    @XmlElementWrapper(name = "parameter-data-types")
+    @XmlElement(name = "data-type")
+    private List<ExpectedDataTypeSegment> parameterDataTypes = new 
LinkedList<>();
+}
diff --git a/test/it/parser/src/main/resources/case/dal/desc-function.xml 
b/test/it/parser/src/main/resources/case/dal/desc-function.xml
new file mode 100644
index 00000000000..7473875d8f6
--- /dev/null
+++ b/test/it/parser/src/main/resources/case/dal/desc-function.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<sql-parser-test-cases>
+    <doris-desc-function sql-case-id="desc_function_doris">
+        <function-name function-name="catalogs" start-index="14" 
stop-index="21" />
+    </doris-desc-function>
+    
+    <doris-desc-function sql-case-id="desc_function_with_schema_doris">
+        <function-name function-name="my_func" start-index="14" 
stop-index="26">
+            <owner name="my_db" start-index="14" stop-index="18" />
+        </function-name>
+    </doris-desc-function>
+    
+    <doris-desc-function sql-case-id="desc_function_with_parentheses_doris">
+        <function-name function-name="catalogs" start-index="14" 
stop-index="21" />
+    </doris-desc-function>
+    
+    <doris-desc-function 
sql-case-id="desc_function_with_schema_and_parentheses_doris">
+        <function-name function-name="my_func" start-index="14" 
stop-index="26">
+            <owner name="my_db" start-index="14" stop-index="18" />
+        </function-name>
+    </doris-desc-function>
+</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/dal/show-functions.xml 
b/test/it/parser/src/main/resources/case/dal/show-functions.xml
new file mode 100644
index 00000000000..2ad311d2b90
--- /dev/null
+++ b/test/it/parser/src/main/resources/case/dal/show-functions.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<sql-parser-test-cases>
+    <doris-show-functions sql-case-id="show_functions_basic_doris" />
+    
+    <doris-show-functions sql-case-id="show_full_functions_in_db_doris" 
full="true">
+        <from-database start-index="20" stop-index="28">
+            <database name="testDb" start-index="23" stop-index="28" />
+        </from-database>
+    </doris-show-functions>
+    
+    <doris-show-functions 
sql-case-id="show_builtin_functions_in_db_like_doris" builtin="true">
+        <from-database start-index="23" stop-index="31">
+            <database name="testDb" start-index="26" stop-index="31" />
+        </from-database>
+        <like pattern="year%" start-index="33" stop-index="44" />
+    </doris-show-functions>
+    
+    <doris-show-functions sql-case-id="show_global_full_functions_doris" 
global="true" full="true" />
+    
+    <doris-show-functions sql-case-id="show_global_functions_doris" 
global="true" />
+    
+    <doris-show-functions sql-case-id="show_global_functions_like_doris" 
global="true">
+        <like pattern="my_%" start-index="22" stop-index="32" />
+    </doris-show-functions>
+</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/ddl/drop-function.xml 
b/test/it/parser/src/main/resources/case/ddl/drop-function.xml
index b406b897b02..4643487a6a8 100644
--- a/test/it/parser/src/main/resources/case/ddl/drop-function.xml
+++ b/test/it/parser/src/main/resources/case/ddl/drop-function.xml
@@ -25,6 +25,19 @@
     <drop-function sql-case-id="drop_temporary_function_with_if_exists" />
     <drop-function sql-case-id="drop_function_basic" />
     <drop-function sql-case-id="drop_function_with_if_exists" />
-    <drop-function sql-case-id="drop_function_doris" />
     <drop-function sql-case-id="drop_function_mysql" />
+    <doris-drop-function sql-case-id="drop_global_function_doris" 
global="true">
+        <function-name name="my_add" start-index="21" stop-index="26" />
+        <parameter-data-types>
+            <data-type name="INT" />
+            <data-type name="INT" />
+        </parameter-data-types>
+    </doris-drop-function>
+    <doris-drop-function sql-case-id="drop_function_with_params_doris">
+        <function-name name="my_add" start-index="14" stop-index="19" />
+        <parameter-data-types>
+            <data-type name="INT" />
+            <data-type name="INT" />
+        </parameter-data-types>
+    </doris-drop-function>
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/ddl/drop-function.xml 
b/test/it/parser/src/main/resources/sql/supported/dal/desc-function.xml
similarity index 56%
copy from test/it/parser/src/main/resources/case/ddl/drop-function.xml
copy to test/it/parser/src/main/resources/sql/supported/dal/desc-function.xml
index b406b897b02..ef31f7fb99c 100644
--- a/test/it/parser/src/main/resources/case/ddl/drop-function.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dal/desc-function.xml
@@ -16,15 +16,9 @@
   ~ limitations under the License.
   -->
 
-<sql-parser-test-cases>
-    <drop-function sql-case-id="drop_function" />
-    <drop-function sql-case-id="drop_functions" />
-    <drop-function sql-case-id="drop_function_without_argument_list" />
-    <drop-function sql-case-id="drop_function_with_schema" />
-    <drop-function sql-case-id="drop_temporary_function_basic" />
-    <drop-function sql-case-id="drop_temporary_function_with_if_exists" />
-    <drop-function sql-case-id="drop_function_basic" />
-    <drop-function sql-case-id="drop_function_with_if_exists" />
-    <drop-function sql-case-id="drop_function_doris" />
-    <drop-function sql-case-id="drop_function_mysql" />
-</sql-parser-test-cases>
+<sql-cases>
+    <sql-case id="desc_function_doris" value="DESC FUNCTION catalogs" 
db-types="Doris" />
+    <sql-case id="desc_function_with_schema_doris" value="DESC FUNCTION 
my_db.my_func" db-types="Doris" />
+    <sql-case id="desc_function_with_parentheses_doris" value="DESC FUNCTION 
catalogs()" db-types="Doris" />
+    <sql-case id="desc_function_with_schema_and_parentheses_doris" value="DESC 
FUNCTION my_db.my_func()" db-types="Doris" />
+</sql-cases>
diff --git a/test/it/parser/src/main/resources/case/ddl/drop-function.xml 
b/test/it/parser/src/main/resources/sql/supported/dal/show-functions.xml
similarity index 56%
copy from test/it/parser/src/main/resources/case/ddl/drop-function.xml
copy to test/it/parser/src/main/resources/sql/supported/dal/show-functions.xml
index b406b897b02..43ad5caa4de 100644
--- a/test/it/parser/src/main/resources/case/ddl/drop-function.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dal/show-functions.xml
@@ -16,15 +16,11 @@
   ~ limitations under the License.
   -->
 
-<sql-parser-test-cases>
-    <drop-function sql-case-id="drop_function" />
-    <drop-function sql-case-id="drop_functions" />
-    <drop-function sql-case-id="drop_function_without_argument_list" />
-    <drop-function sql-case-id="drop_function_with_schema" />
-    <drop-function sql-case-id="drop_temporary_function_basic" />
-    <drop-function sql-case-id="drop_temporary_function_with_if_exists" />
-    <drop-function sql-case-id="drop_function_basic" />
-    <drop-function sql-case-id="drop_function_with_if_exists" />
-    <drop-function sql-case-id="drop_function_doris" />
-    <drop-function sql-case-id="drop_function_mysql" />
-</sql-parser-test-cases>
+<sql-cases>
+    <sql-case id="show_functions_basic_doris" value="SHOW FUNCTIONS" 
db-types="Doris" />
+    <sql-case id="show_full_functions_in_db_doris" value="show full functions 
in testDb" db-types="Doris" />
+    <sql-case id="show_builtin_functions_in_db_like_doris" value="show builtin 
functions in testDb like 'year%'" db-types="Doris" />
+    <sql-case id="show_global_full_functions_doris" value="show global full 
functions" db-types="Doris" />
+    <sql-case id="show_global_functions_doris" value="show global functions" 
db-types="Doris" />
+    <sql-case id="show_global_functions_like_doris" value="SHOW GLOBAL 
FUNCTIONS LIKE 'my_%'" db-types="Doris" />
+</sql-cases>
diff --git 
a/test/it/parser/src/main/resources/sql/supported/ddl/drop-function.xml 
b/test/it/parser/src/main/resources/sql/supported/ddl/drop-function.xml
index 6ced0945f48..83e492773ae 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/drop-function.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/drop-function.xml
@@ -25,6 +25,7 @@
     <sql-case id="drop_temporary_function_with_if_exists" value="DROP 
TEMPORARY FUNCTION IF EXISTS parse_json;" db-types="Hive" />
     <sql-case id="drop_function_basic" value="DROP FUNCTION calculate_score;" 
db-types="Hive" />
     <sql-case id="drop_function_with_if_exists" value="DROP FUNCTION IF EXISTS 
db1.calculate_score;" db-types="Hive" />
-    <sql-case id="drop_function_doris" value="DROP FUNCTION udf_drop" 
db-types="Doris" />
     <sql-case id="drop_function_mysql" value="DROP FUNCTION func1" 
db-types="MySQL" />
+    <sql-case id="drop_global_function_doris" value="DROP GLOBAL FUNCTION 
my_add(INT, INT)" db-types="Doris" />
+    <sql-case id="drop_function_with_params_doris" value="DROP FUNCTION 
my_add(INT, INT)" db-types="Doris" />
 </sql-cases>

Reply via email to