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

wenchen pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new c802b4739d51 [SPARK-52735][FOLLOWUP] Drop created UDF UDFs in SQL 
query tests
c802b4739d51 is described below

commit c802b4739d51452066d19f88d7164e91910f89c2
Author: Allison Wang <allison.w...@databricks.com>
AuthorDate: Fri Jul 11 09:48:37 2025 +0800

    [SPARK-52735][FOLLOWUP] Drop created UDF UDFs in SQL query tests
    
    ### What changes were proposed in this pull request?
    
    Drop created SQL UDFs to fix `FunctionAlreadyExistsException` in analyzer 
test results.
    
    ### Why are the changes needed?
    
    Fix `FunctionAlreadyExistsException` in analyzer test results.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No
    
    ### How was this patch tested?
    
    Test only
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    No
    
    Closes #51440 from allisonwang-db/spark-52735-follow-up.
    
    Authored-by: Allison Wang <allison.w...@databricks.com>
    Signed-off-by: Wenchen Fan <wenc...@databricks.com>
    (cherry picked from commit 360df7c6c073903dcdb8fdbbd3cc10704b0114c2)
    Signed-off-by: Wenchen Fan <wenc...@databricks.com>
---
 .../sql-tests/analyzer-results/sql-udf.sql.out     | 1537 ++++++++++----------
 .../test/resources/sql-tests/inputs/sql-udf.sql    |  119 +-
 .../resources/sql-tests/results/sql-udf.sql.out    |  944 +++++++++++-
 3 files changed, 1852 insertions(+), 748 deletions(-)

diff --git 
a/sql/core/src/test/resources/sql-tests/analyzer-results/sql-udf.sql.out 
b/sql/core/src/test/resources/sql-tests/analyzer-results/sql-udf.sql.out
index e21c5b053f9d..c3133e45f014 100644
--- a/sql/core/src/test/resources/sql-tests/analyzer-results/sql-udf.sql.out
+++ b/sql/core/src/test/resources/sql-tests/analyzer-results/sql-udf.sql.out
@@ -2,16 +2,7 @@
 -- !query
 CREATE FUNCTION foo1a0() RETURNS INT RETURN 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo1a0`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo1a0, INT, 1, false, false, 
false, false
 
 
 -- !query
@@ -48,16 +39,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 CREATE FUNCTION foo1a1(a INT) RETURNS INT RETURN 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo1a1`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo1a1, a INT, INT, 1, false, 
false, false, false
 
 
 -- !query
@@ -94,16 +76,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 CREATE FUNCTION foo1a2(a INT, b INT, c INT, d INT) RETURNS INT RETURN 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo1a2`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo1a2, a INT, b INT, c INT, d 
INT, INT, 1, false, false, false, false
 
 
 -- !query
@@ -117,16 +90,7 @@ Project [spark_catalog.default.foo1a2(a#x, b#x, c#x, d#x) 
AS spark_catalog.defau
 -- !query
 CREATE FUNCTION foo1b0() RETURNS TABLE (c1 INT) RETURN SELECT 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo1b0`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo1b0, c1 INT, SELECT 1, true, 
false, false, false
 
 
 -- !query
@@ -143,16 +107,7 @@ Project [c1#x]
 -- !query
 CREATE FUNCTION foo1b1(a INT) RETURNS TABLE (c1 INT) RETURN SELECT 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo1b1`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo1b1, a INT, c1 INT, SELECT 
1, true, false, false, false
 
 
 -- !query
@@ -169,16 +124,7 @@ Project [c1#x]
 -- !query
 CREATE FUNCTION foo1b2(a INT, b INT, c INT, d INT) RETURNS TABLE(c1 INT) 
RETURN SELECT 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo1b2`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo1b2, a INT, b INT, c INT, d 
INT, c1 INT, SELECT 1, true, false, false, false
 
 
 -- !query
@@ -609,16 +555,7 @@ org.apache.spark.sql.catalyst.parser.ParseException
 -- !query
 CREATE FUNCTION foo2a2() RETURNS TABLE(c1 INT, c2 INT) RETURN SELECT 1, 2
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2a2`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2a2, c1 INT, c2 INT, SELECT 
1, 2, true, false, false, false
 
 
 -- !query
@@ -635,16 +572,7 @@ Project [c1#x, c2#x]
 -- !query
 CREATE FUNCTION foo2a4() RETURNS TABLE(c1 INT, c2 INT, c3 INT, c4 INT) RETURN 
SELECT 1, 2, 3, 4
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2a4`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2a4, c1 INT, c2 INT, c3 INT, 
c4 INT, SELECT 1, 2, 3, 4, true, false, false, false
 
 
 -- !query
@@ -754,16 +682,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 CREATE FUNCTION foo41() RETURNS INT RETURN SELECT 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo41`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo41, INT, SELECT 1, false, 
false, false, false
 
 
 -- !query
@@ -782,16 +701,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 CREATE FUNCTION foo51() RETURNS INT RETURN (SELECT a FROM VALUES(1), (2) AS 
T(a))
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo51`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo51, INT, (SELECT a FROM 
VALUES(1), (2) AS T(a)), false, false, false, false
 
 
 -- !query
@@ -808,16 +718,7 @@ Project [spark_catalog.default.foo51() AS 
spark_catalog.default.foo51()#x]
 -- !query
 CREATE FUNCTION foo52() RETURNS INT RETURN (SELECT 1 FROM VALUES(1) WHERE 1 = 
0)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo52`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo52, INT, (SELECT 1 FROM 
VALUES(1) WHERE 1 = 0), false, false, false, false
 
 
 -- !query
@@ -834,16 +735,7 @@ Project [spark_catalog.default.foo52() AS 
spark_catalog.default.foo52()#x]
 -- !query
 CREATE FUNCTION foo6c(` a` INT, a INT, `a b` INT) RETURNS INT RETURN 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo6c`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo6c, ` a` INT, a INT, `a b` 
INT, INT, 1, false, false, false, false
 
 
 -- !query
@@ -857,16 +749,7 @@ Project [spark_catalog.default.foo6c( a#x, a#x, a b#x) AS 
spark_catalog.default.
 -- !query
 CREATE FUNCTION foo6d() RETURNS TABLE(` a` INT, a INT, `a b` INT) RETURN 
SELECT 1, 2, 3
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo6d`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo6d, ` a` INT, a INT, `a b` 
INT, SELECT 1, 2, 3, true, false, false, false
 
 
 -- !query
@@ -886,16 +769,9 @@ SELECT 'Foo.a: ' || a ||  ' Foo.a: ' || foo7a.a
        || ' T.b: ' ||  b || ' Foo.b: ' || foo7a.b
        || ' T.c: ' || c || ' T.c: ' || t.c FROM VALUES('t.b', 't.c') AS T(b, c)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo7a`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo7a, a STRING, b STRING, c 
STRING, STRING, SELECT 'Foo.a: ' || a ||  ' Foo.a: ' || foo7a.a
+       || ' T.b: ' ||  b || ' Foo.b: ' || foo7a.b
+       || ' T.c: ' || c || ' T.c: ' || t.c FROM VALUES('t.b', 't.c') AS T(b, 
c), false, false, false, false
 
 
 -- !query
@@ -915,16 +791,9 @@ SELECT CONCAT('Foo.a: ', a), CONCAT('Foo.b: ', foo7at.b), 
CONCAT('T.b: ', b),
        CONCAT('Foo.c: ', foo7at.c), CONCAT('T.c: ', c)
 FROM VALUES ('t.b', 't.c') AS T(b, c)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo7at`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo7at, a STRING, b STRING, c 
STRING, a STRING, b STRING, c STRING, d STRING, e STRING, SELECT CONCAT('Foo.a: 
', a), CONCAT('Foo.b: ', foo7at.b), CONCAT('T.b: ', b),
+       CONCAT('Foo.c: ', foo7at.c), CONCAT('T.c: ', c)
+FROM VALUES ('t.b', 't.c') AS T(b, c), true, false, false, false
 
 
 -- !query
@@ -942,16 +811,7 @@ Project [a#x, b#x, c#x, d#x, e#x]
 -- !query
 CREATE FUNCTION foo9a(a BOOLEAN) RETURNS BOOLEAN RETURN NOT a
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9a`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9a, a BOOLEAN, BOOLEAN, NOT 
a, false, false, false, false
 
 
 -- !query
@@ -981,16 +841,7 @@ Project [spark_catalog.default.foo9a(a#x) AS 
spark_catalog.default.foo9a(Nonsens
 -- !query
 CREATE FUNCTION foo9b(a BYTE) RETURNS BYTE RETURN CAST(a AS SHORT) + 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9b`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9b, a BYTE, BYTE, CAST(a AS 
SHORT) + 1, false, false, false, false
 
 
 -- !query
@@ -1020,16 +871,7 @@ Project [spark_catalog.default.foo9b(a#x) AS 
spark_catalog.default.foo9b(128)#x]
 -- !query
 CREATE FUNCTION foo9c(a SHORT) RETURNS SHORT RETURN CAST(a AS INTEGER) + 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9c`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9c, a SHORT, SHORT, CAST(a 
AS INTEGER) + 1, false, false, false, false
 
 
 -- !query
@@ -1059,16 +901,7 @@ Project [spark_catalog.default.foo9c(a#x) AS 
spark_catalog.default.foo9c(32768)#
 -- !query
 CREATE FUNCTION foo9d(a INTEGER) RETURNS INTEGER RETURN CAST(a AS BIGINT) + 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9d`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9d, a INTEGER, INTEGER, 
CAST(a AS BIGINT) + 1, false, false, false, false
 
 
 -- !query
@@ -1098,16 +931,7 @@ Project [spark_catalog.default.foo9d(a#x) AS 
spark_catalog.default.foo9d((214748
 -- !query
 CREATE FUNCTION foo9e(a BIGINT) RETURNS BIGINT RETURN CAST(a AS DECIMAL(20, 
0)) + 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9e`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9e, a BIGINT, BIGINT, CAST(a 
AS DECIMAL(20, 0)) + 1, false, false, false, false
 
 
 -- !query
@@ -1137,16 +961,7 @@ Project [spark_catalog.default.foo9e(a#xL) AS 
spark_catalog.default.foo9e((92233
 -- !query
 CREATE FUNCTION foo9f(a DECIMAL( 5, 2 )) RETURNS DECIMAL (5, 2) RETURN CAST(a 
AS DECIMAL(6, 2)) + 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9f`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9f, a DECIMAL( 5, 2 ), 
DECIMAL (5, 2), CAST(a AS DECIMAL(6, 2)) + 1, false, false, false, false
 
 
 -- !query
@@ -1176,16 +991,7 @@ Project [spark_catalog.default.foo9f(a#x) AS 
spark_catalog.default.foo9f((999 +
 -- !query
 CREATE FUNCTION foo9g(a FLOAT, b String) RETURNS FLOAT RETURN b || CAST(a AS 
String)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9g`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9g, a FLOAT, b String, 
FLOAT, b || CAST(a AS String), false, false, false, false
 
 
 -- !query
@@ -1215,16 +1021,7 @@ Project [spark_catalog.default.foo9g(a#x, b#x) AS 
spark_catalog.default.foo9g(12
 -- !query
 CREATE FUNCTION foo9h(a DOUBLE, b String) RETURNS DOUBLE RETURN b || CAST(a AS 
String)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9h`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9h, a DOUBLE, b String, 
DOUBLE, b || CAST(a AS String), false, false, false, false
 
 
 -- !query
@@ -1264,16 +1061,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 CREATE FUNCTION foo9j(a STRING, b STRING) RETURNS STRING RETURN a || b
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9j`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9j, a STRING, b STRING, 
STRING, a || b, false, false, false, false
 
 
 -- !query
@@ -1295,16 +1083,7 @@ Project [spark_catalog.default.foo9j(a#x, b#x) AS 
spark_catalog.default.foo9j(12
 -- !query
 CREATE FUNCTION foo9l(a DATE, b INTERVAL) RETURNS DATE RETURN a + b
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9l`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9l, a DATE, b INTERVAL, 
DATE, a + b, false, false, false, false
 
 
 -- !query
@@ -1397,16 +1176,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
 -- !query
 CREATE FUNCTION foo9m(a TIMESTAMP, b INTERVAL) RETURNS TIMESTAMP RETURN a + b
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9m`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9m, a TIMESTAMP, b INTERVAL, 
TIMESTAMP, a + b, false, false, false, false
 
 
 -- !query
@@ -1478,16 +1248,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
 -- !query
 CREATE FUNCTION foo9n(a ARRAY<INTEGER>) RETURNS ARRAY<INTEGER> RETURN a
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9n`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9n, a ARRAY<INTEGER>, 
ARRAY<INTEGER>, a, false, false, false, false
 
 
 -- !query
@@ -1509,16 +1270,7 @@ Project [spark_catalog.default.foo9n(a#x) AS 
spark_catalog.default.foo9n(from_js
 -- !query
 CREATE FUNCTION foo9o(a MAP<STRING, INTEGER>) RETURNS MAP<STRING, INTEGER> 
RETURN a
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9o`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9o, a MAP<STRING, INTEGER>, 
MAP<STRING, INTEGER>, a, false, false, false, false
 
 
 -- !query
@@ -1540,16 +1292,7 @@ Project [spark_catalog.default.foo9o(a#x) AS 
spark_catalog.default.foo9o(entries
 -- !query
 CREATE FUNCTION foo9p(a STRUCT<a1: INTEGER, a2: STRING>) RETURNS STRUCT<a1: 
INTEGER, a2: STRING> RETURN a
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9p`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9p, a STRUCT<a1: INTEGER, 
a2: STRING>, STRUCT<a1: INTEGER, a2: STRING>, a, false, false, false, false
 
 
 -- !query
@@ -1571,16 +1314,7 @@ Project [spark_catalog.default.foo9p(a#x) AS 
spark_catalog.default.foo9p(from_js
 -- !query
 CREATE FUNCTION foo9q(a ARRAY<STRUCT<a1: INT, a2: STRING>>) RETURNS 
ARRAY<STRUCT<a1: INT, a2: STRING>> RETURN a
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9q`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9q, a ARRAY<STRUCT<a1: INT, 
a2: STRING>>, ARRAY<STRUCT<a1: INT, a2: STRING>>, a, false, false, false, false
 
 
 -- !query
@@ -1610,16 +1344,7 @@ Project [spark_catalog.default.foo9q(a#x) AS 
spark_catalog.default.foo9q(from_js
 -- !query
 CREATE FUNCTION foo9r(a ARRAY<MAP<STRING, INT>>) RETURNS ARRAY<MAP<STRING, 
INT>> RETURN a
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo9r`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo9r, a ARRAY<MAP<STRING, 
INT>>, ARRAY<MAP<STRING, INT>>, a, false, false, false, false
 
 
 -- !query
@@ -1882,16 +1607,7 @@ Project [person_info#x, modified_id#x]
 -- !query
 CREATE FUNCTION foo2_1a(a INT) RETURNS INT RETURN a
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2_1a`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2_1a, a INT, INT, a, false, 
false, false, false
 
 
 -- !query
@@ -1905,16 +1621,7 @@ Project [spark_catalog.default.foo2_1a(a#x) AS 
spark_catalog.default.foo2_1a(5)#
 -- !query
 CREATE FUNCTION foo2_1b(a INT, b INT) RETURNS INT RETURN a + b
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2_1b`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2_1b, a INT, b INT, INT, a + 
b, false, false, false, false
 
 
 -- !query
@@ -1928,16 +1635,7 @@ Project [spark_catalog.default.foo2_1b(a#x, b#x) AS 
spark_catalog.default.foo2_1
 -- !query
 CREATE FUNCTION foo2_1c(a INT, b INT) RETURNS INT RETURN 10 * (a + b) + 100 * 
(a -b)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2_1c`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2_1c, a INT, b INT, INT, 10 
* (a + b) + 100 * (a -b), false, false, false, false
 
 
 -- !query
@@ -1951,16 +1649,7 @@ Project [spark_catalog.default.foo2_1c(a#x, b#x) AS 
spark_catalog.default.foo2_1
 -- !query
 CREATE FUNCTION foo2_1d(a INT, b INT) RETURNS INT RETURN ABS(a) - 
LENGTH(CAST(b AS VARCHAR(10)))
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2_1d`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2_1d, a INT, b INT, INT, 
ABS(a) - LENGTH(CAST(b AS VARCHAR(10))), false, false, false, false
 
 
 -- !query
@@ -1974,16 +1663,7 @@ Project [spark_catalog.default.foo2_1d(a#x, b#x) AS 
spark_catalog.default.foo2_1
 -- !query
 CREATE FUNCTION foo2_2a(a INT) RETURNS INT RETURN SELECT a
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2_2a`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2_2a, a INT, INT, SELECT a, 
false, false, false, false
 
 
 -- !query
@@ -1997,16 +1677,7 @@ Project [spark_catalog.default.foo2_2a(a#x) AS 
spark_catalog.default.foo2_2a(5)#
 -- !query
 CREATE FUNCTION foo2_2b(a INT) RETURNS INT RETURN 1 + (SELECT a)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2_2b`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2_2b, a INT, INT, 1 + 
(SELECT a), false, false, false, false
 
 
 -- !query
@@ -2065,16 +1736,9 @@ SELECT a FROM (VALUES 1) AS V(c1) WHERE c1 = 2
 UNION ALL
 SELECT a + 1 FROM (VALUES 1) AS V(c1)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2_2e`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2_2e, a INT, INT, SELECT a 
FROM (VALUES 1) AS V(c1) WHERE c1 = 2
+UNION ALL
+SELECT a + 1 FROM (VALUES 1) AS V(c1), false, false, false, false
 
 
 -- !query
@@ -2083,16 +1747,9 @@ SELECT a FROM (VALUES 1) AS V(c1)
 EXCEPT
 SELECT a + 1 FROM (VALUES 1) AS V(a)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2_2f`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2_2f, a INT, INT, SELECT a 
FROM (VALUES 1) AS V(c1)
+EXCEPT
+SELECT a + 1 FROM (VALUES 1) AS V(a), false, false, false, false
 
 
 -- !query
@@ -2101,16 +1758,9 @@ SELECT a FROM (VALUES 1) AS V(c1)
 INTERSECT
 SELECT a FROM (VALUES 1) AS V(a)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2_2g`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2_2g, a INT, INT, SELECT a 
FROM (VALUES 1) AS V(c1)
+INTERSECT
+SELECT a FROM (VALUES 1) AS V(a), false, false, false, false
 
 
 -- !query
@@ -2237,16 +1887,7 @@ DropTableCommand `spark_catalog`.`default`.`V2`, true, 
true, false
 -- !query
 CREATE FUNCTION foo2_3(a INT, b INT) RETURNS INT RETURN a + b
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2_3`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2_3, a INT, b INT, INT, a + 
b, false, false, false, false
 
 
 -- !query
@@ -2306,16 +1947,7 @@ Project [spark_catalog.default.foo2_3(a#x, b#x) AS 
spark_catalog.default.foo2_3(
 CREATE FUNCTION foo2_4a(a ARRAY<STRING>) RETURNS STRING RETURN
 SELECT array_sort(a, (i, j) -> rank[i] - rank[j])[0] FROM (SELECT MAP('a', 1, 
'b', 2) rank)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2_4a`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2_4a, a ARRAY<STRING>, 
STRING, SELECT array_sort(a, (i, j) -> rank[i] - rank[j])[0] FROM (SELECT 
MAP('a', 1, 'b', 2) rank), false, false, false, false
 
 
 -- !query
@@ -2334,16 +1966,7 @@ Project [spark_catalog.default.foo2_4a(a#x) AS 
spark_catalog.default.foo2_4a(arr
 CREATE FUNCTION foo2_4b(m MAP<STRING, STRING>, k STRING) RETURNS STRING RETURN
 SELECT v || ' ' || v FROM (SELECT upper(m[k]) AS v)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo2_4b`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo2_4b, m MAP<STRING, STRING>, 
k STRING, STRING, SELECT v || ' ' || v FROM (SELECT upper(m[k]) AS v), false, 
false, false, false
 
 
 -- !query
@@ -2408,106 +2031,43 @@ CreateViewCommand `spark_catalog`.`default`.`ta`, 
[(x,None)], VALUES ARRAY(1, 2,
 -- !query
 CREATE FUNCTION foo3_1a(a DOUBLE, b DOUBLE) RETURNS DOUBLE RETURN a * b
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_1a`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_1a, a DOUBLE, b DOUBLE, 
DOUBLE, a * b, false, false, false, false
 
 
 -- !query
 CREATE FUNCTION foo3_1b(x INT) RETURNS INT RETURN x
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_1b`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_1b, x INT, INT, x, false, 
false, false, false
 
 
 -- !query
 CREATE FUNCTION foo3_1c(x INT) RETURNS INT RETURN SELECT x
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_1c`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_1c, x INT, INT, SELECT x, 
false, false, false, false
 
 
 -- !query
 CREATE FUNCTION foo3_1d(x INT) RETURNS INT RETURN (SELECT SUM(c2) FROM t2 
WHERE c1 = x)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_1d`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_1d, x INT, INT, (SELECT 
SUM(c2) FROM t2 WHERE c1 = x), false, false, false, false
 
 
 -- !query
 CREATE FUNCTION foo3_1e() RETURNS INT RETURN foo3_1d(0)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_1e`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_1e, INT, foo3_1d(0), 
false, false, false, false
 
 
 -- !query
 CREATE FUNCTION foo3_1f() RETURNS INT RETURN SELECT SUM(c2) FROM t2 WHERE c1 = 0
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_1f`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_1f, INT, SELECT SUM(c2) 
FROM t2 WHERE c1 = 0, false, false, false, false
 
 
 -- !query
 CREATE FUNCTION foo3_1g(x INT) RETURNS INT RETURN SELECT (SELECT x)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_1g`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_1g, x INT, INT, SELECT 
(SELECT x), false, false, false, false
 
 
 -- !query
@@ -3586,31 +3146,13 @@ Project [c2#x, r#x]
 -- !query
 CREATE FUNCTION foo3_1x(x STRUCT<a: INT, b: INT>) RETURNS INT RETURN x.a + x.b
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_1x`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_1x, x STRUCT<a: INT, b: 
INT>, INT, x.a + x.b, false, false, false, false
 
 
 -- !query
 CREATE FUNCTION foo3_1y(x ARRAY<INT>) RETURNS INT RETURN aggregate(x, 
BIGINT(0), (x, y) -> x + y)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_1y`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_1y, x ARRAY<INT>, INT, 
aggregate(x, BIGINT(0), (x, y) -> x + y), false, false, false, false
 
 
 -- !query
@@ -3671,16 +3213,7 @@ Project [spark_catalog.default.foo3_1y(x#x) AS 
spark_catalog.default.foo3_1y(x)#
 -- !query
 CREATE FUNCTION foo3_2a() RETURNS INT RETURN FLOOR(RAND() * 6) + 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_2a`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_2a, INT, FLOOR(RAND() * 6) 
+ 1, false, false, false, false
 
 
 -- !query
@@ -3705,16 +3238,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
 -- !query
 CREATE FUNCTION foo3_2b1(x INT) RETURNS BOOLEAN RETURN x IN (SELECT 1)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_2b1`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_2b1, x INT, BOOLEAN, x IN 
(SELECT 1), false, false, false, false
 
 
 -- !query
@@ -3735,16 +3259,7 @@ Project [c1#x, c2#x]
 -- !query
 CREATE FUNCTION foo3_2b2(x INT) RETURNS INT RETURN IF(x IN (SELECT 1), 1, 0)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_2b2`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_2b2, x INT, INT, IF(x IN 
(SELECT 1), 1, 0), false, false, false, false
 
 
 -- !query
@@ -3778,16 +3293,7 @@ Project [spark_catalog.default.foo3_2b2(x#x) AS 
spark_catalog.default.foo3_2b2(c
 -- !query
 CREATE FUNCTION foo3_2b3(x INT) RETURNS BOOLEAN RETURN x IN (SELECT c1 FROM t2)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_2b3`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_2b3, x INT, BOOLEAN, x IN 
(SELECT c1 FROM t2), false, false, false, false
 
 
 -- !query
@@ -3811,16 +3317,7 @@ Project [c1#x, c2#x]
 -- !query
 CREATE FUNCTION foo3_2b4(x INT) RETURNS BOOLEAN RETURN x NOT IN (SELECT c2 
FROM t2 WHERE x = c1)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_2b4`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_2b4, x INT, BOOLEAN, x NOT 
IN (SELECT c2 FROM t2 WHERE x = c1), false, false, false, false
 
 
 -- !query
@@ -3879,31 +3376,13 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
 -- !query
 CREATE FUNCTION foo3_2b5(x INT) RETURNS BOOLEAN RETURN x IN (SELECT x WHERE x 
= 1)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_2b5`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_2b5, x INT, BOOLEAN, x IN 
(SELECT x WHERE x = 1), false, false, false, false
 
 
 -- !query
 CREATE FUNCTION foo3_2c1(x INT) RETURNS BOOLEAN RETURN EXISTS(SELECT 1)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_2c1`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_2c1, x INT, BOOLEAN, 
EXISTS(SELECT 1), false, false, false, false
 
 
 -- !query
@@ -3924,16 +3403,7 @@ Project [c1#x, c2#x]
 -- !query
 CREATE FUNCTION foo3_2c2(x INT) RETURNS BOOLEAN RETURN NOT EXISTS(SELECT * 
FROM t2 WHERE c1 = x)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_2c2`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_2c2, x INT, BOOLEAN, NOT 
EXISTS(SELECT * FROM t2 WHERE c1 = x), false, false, false, false
 
 
 -- !query
@@ -3958,16 +3428,7 @@ Project [c1#x, c2#x]
 -- !query
 CREATE FUNCTION foo3_2d1(x INT) RETURNS INT RETURN SELECT (SELECT x)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_2d1`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_2d1, x INT, INT, SELECT 
(SELECT x), false, false, false, false
 
 
 -- !query
@@ -4007,19 +3468,20 @@ SELECT CASE WHEN occurrences IS NULL OR 
size(occurrences) = 0
        ELSE sort_array(diffs)[0].id END AS id
 FROM t
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_2e1`"
-  }
-}
-
-
--- !query
+CreateSQLFunctionCommand spark_catalog.default.foo3_2e1, occurrences 
ARRAY<STRUCT<start_time: TIMESTAMP, occurrence_id: STRING>>,
+    instance_start_time TIMESTAMP, STRING, WITH t AS (
+    SELECT transform(occurrences, x -> named_struct(
+        'diff', abs(unix_millis(x.start_time) - 
unix_millis(instance_start_time)),
+        'id', x.occurrence_id
+    )) AS diffs
+)
+SELECT CASE WHEN occurrences IS NULL OR size(occurrences) = 0
+       THEN NULL
+       ELSE sort_array(diffs)[0].id END AS id
+FROM t, false, false, false, false
+
+
+-- !query
 SELECT foo3_2e1(
     ARRAY(STRUCT('2022-01-01 10:11:12', '1'), STRUCT('2022-01-01 10:11:15', 
'2')),
     '2022-01-01')
@@ -4043,25 +3505,10 @@ SET spark.sql.ansi.enabled=true
 SetCommand (spark.sql.ansi.enabled,Some(true))
 
 
--- !query
-DROP FUNCTION IF EXISTS foo3_3at
--- !query analysis
-DropFunctionCommand spark_catalog.default.foo3_3at, true, false
-
-
 -- !query
 CREATE FUNCTION foo3_3a(x INT) RETURNS DOUBLE RETURN 1 / x
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_3a`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_3a, x INT, DOUBLE, 1 / x, 
false, false, false, false
 
 
 -- !query
@@ -4157,61 +3604,25 @@ Project [a#x]
 -- !query
 CREATE FUNCTION foo3_3c() RETURNS INT RETURN CAST('a' AS INT)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_3c`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_3c, INT, CAST('a' AS INT), 
false, false, false, false
 
 
 -- !query
 CREATE FUNCTION foo3_3ct() RETURNS TABLE (a INT) RETURN SELECT CAST('a' AS INT)
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_3ct`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_3ct, a INT, SELECT 
CAST('a' AS INT), true, false, false, false
 
 
 -- !query
 CREATE FUNCTION foo3_3d() RETURNS INT RETURN 'a' + 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_3d`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_3d, INT, 'a' + 1, false, 
false, false, false
 
 
 -- !query
 CREATE FUNCTION foo3_3dt() RETURNS TABLE (a INT) RETURN SELECT 'a' + 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_3dt`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_3dt, a INT, SELECT 'a' + 
1, true, false, false, false
 
 
 -- !query
@@ -4305,31 +3716,13 @@ ResetCommand spark.sql.ansi.enabled
 -- !query
 CREATE FUNCTION foo3_14a() RETURNS INT RETURN 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_14a`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_14a, INT, 1, false, false, 
false, false
 
 
 -- !query
 CREATE FUNCTION foo3_14b() RETURNS TABLE (a INT) RETURN SELECT 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo3_14b`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo3_14b, a INT, SELECT 1, 
true, false, false, false
 
 
 -- !query
@@ -4375,61 +3768,25 @@ org.apache.spark.sql.AnalysisException
 -- !query
 CREATE FUNCTION foo4_0() RETURNS TABLE (x INT) RETURN SELECT 1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo4_0`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo4_0, x INT, SELECT 1, true, 
false, false, false
 
 
 -- !query
 CREATE FUNCTION foo4_1(x INT) RETURNS TABLE (a INT) RETURN SELECT x
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo4_1`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo4_1, x INT, a INT, SELECT x, 
true, false, false, false
 
 
 -- !query
 CREATE FUNCTION foo4_2(x INT) RETURNS TABLE (a INT) RETURN SELECT c2 FROM t2 
WHERE c1 = x
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo4_2`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo4_2, x INT, a INT, SELECT c2 
FROM t2 WHERE c1 = x, true, false, false, false
 
 
 -- !query
 CREATE FUNCTION foo4_3(x INT) RETURNS TABLE (a INT, cnt INT) RETURN SELECT c1, 
COUNT(*) FROM t2 WHERE c1 = x GROUP BY c1
 -- !query analysis
-org.apache.spark.sql.catalyst.analysis.FunctionAlreadyExistsException
-{
-  "errorClass" : "ROUTINE_ALREADY_EXISTS",
-  "sqlState" : "42723",
-  "messageParameters" : {
-    "existingRoutineType" : "routine",
-    "newRoutineType" : "routine",
-    "routineName" : "`default`.`foo4_3`"
-  }
-}
+CreateSQLFunctionCommand spark_catalog.default.foo4_3, x INT, a INT, cnt INT, 
SELECT c1, COUNT(*) FROM t2 WHERE c1 = x GROUP BY c1, true, false, false, false
 
 
 -- !query
@@ -4735,3 +4092,705 @@ DropTableCommand `spark_catalog`.`default`.`t1`, false, 
true, false
 DROP VIEW t2
 -- !query analysis
 DropTableCommand `spark_catalog`.`default`.`t2`, false, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1a0
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1a0, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1a1
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1a1, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1a2
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1a2, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1b0
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1b0, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1b1
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1b1, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1b2
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1b2, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1c1
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo1c1]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1c2
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo1c2]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1d1
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1d1, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1d2
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1d2, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1d4
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1d4, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1d5
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1d5, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1d6
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1d6, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1e1
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo1e1]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1e2
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo1e2]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1e3
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo1e3]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1f1
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo1f1]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1f2
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo1f2]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1g1
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo1g1]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1g2
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo1g2]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2a0
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo2a0]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2a2
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2a2, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2a4
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2a4, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2b1
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo2b1]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2b2
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo2b2]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2c1
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo2c1]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo31
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo31]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo32
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo32]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo33
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo33]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo41
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo41, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo42
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo42]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo51
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo51, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo52
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo52, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo6c
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo6c, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo6d
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo6d, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo7a
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo7a, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo7at
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo7at, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9a
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9a, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9b
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9b, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9c
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9c, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9d
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9d, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9e
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9e, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9f
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9f, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9g
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9g, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9h
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9h, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9i
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo9i]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9j
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9j, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9l
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9l, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9m
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9m, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9n
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9n, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9o
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9o, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9p
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9p, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9q
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9q, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9r
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo9r, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_10
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_10, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS bar1_10
+-- !query analysis
+DropFunctionCommand spark_catalog.default.bar1_10, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11a
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11a, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11b
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11b, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11c
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11c, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11d
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11d, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11e
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11e, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11f
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11f, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11g
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11g, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11h
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11h, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11i
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11i, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11j
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11j, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11k
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11k, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11l
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11l, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11m
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11m, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11n
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11n, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11o
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo1_11o, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_1a
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2_1a, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_1b
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2_1b, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_1c
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2_1c, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_1d
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2_1d, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2a
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2_2a, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2b
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2_2b, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2c
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo2_2c]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2d
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo2_2d]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2e
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2_2e, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2f
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2_2f, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2g
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2_2g, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_3
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2_3, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_4a
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2_4a, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_4b
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo2_4b, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1a
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_1a, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1b
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_1b, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1c
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_1c, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1d
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_1d, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1e
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_1e, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1f
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_1f, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1g
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_1g, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1x
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_1x, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1y
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_1y, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2a
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_2a, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2b1
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_2b1, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2b2
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_2b2, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2b3
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_2b3, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2b4
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_2b4, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2b5
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_2b5, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2c1
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_2c1, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2c2
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_2c2, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2d1
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_2d1, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2d2
+-- !query analysis
+NoopCommand DROP FUNCTION, [foo3_2d2]
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2e1
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_2e1, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_3a
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_3a, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_3at
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_3at, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_14a
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_14a, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_14b
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_14b, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_3c
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_3c, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_3ct
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_3ct, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_3d
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_3d, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_3dt
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo3_3dt, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo4_0
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo4_0, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo4_1
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo4_1, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo4_2
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo4_2, true, false
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo4_3
+-- !query analysis
+DropFunctionCommand spark_catalog.default.foo4_3, true, false
diff --git a/sql/core/src/test/resources/sql-tests/inputs/sql-udf.sql 
b/sql/core/src/test/resources/sql-tests/inputs/sql-udf.sql
index 3d535366434f..b1e3bd57f7c6 100644
--- a/sql/core/src/test/resources/sql-tests/inputs/sql-udf.sql
+++ b/sql/core/src/test/resources/sql-tests/inputs/sql-udf.sql
@@ -745,7 +745,6 @@ SELECT foo3_2e1(
 
 -- 3.3 Create and invoke function with different SQL configurations
 SET spark.sql.ansi.enabled=true;
-DROP FUNCTION IF EXISTS foo3_3at;
 CREATE FUNCTION foo3_3a(x INT) RETURNS DOUBLE RETURN 1 / x;
 CREATE FUNCTION foo3_3at(x INT) RETURNS TABLE (a DOUBLE) RETURN SELECT 1 / x;
 CREATE TEMPORARY FUNCTION foo3_3b(x INT) RETURNS DOUBLE RETURN 1 / x;
@@ -826,3 +825,121 @@ SELECT (SELECT MAX(cnt) FROM foo4_3(c1)) FROM t1;
 -- Clean up
 DROP VIEW t1;
 DROP VIEW t2;
+
+DROP FUNCTION IF EXISTS foo1a0;
+DROP FUNCTION IF EXISTS foo1a1;
+DROP FUNCTION IF EXISTS foo1a2;
+DROP FUNCTION IF EXISTS foo1b0;
+DROP FUNCTION IF EXISTS foo1b1;
+DROP FUNCTION IF EXISTS foo1b2;
+DROP FUNCTION IF EXISTS foo1c1;
+DROP FUNCTION IF EXISTS foo1c2;
+DROP FUNCTION IF EXISTS foo1d1;
+DROP FUNCTION IF EXISTS foo1d2;
+DROP FUNCTION IF EXISTS foo1d4;
+DROP FUNCTION IF EXISTS foo1d5;
+DROP FUNCTION IF EXISTS foo1d6;
+DROP FUNCTION IF EXISTS foo1e1;
+DROP FUNCTION IF EXISTS foo1e2;
+DROP FUNCTION IF EXISTS foo1e3;
+DROP FUNCTION IF EXISTS foo1f1;
+DROP FUNCTION IF EXISTS foo1f2;
+DROP FUNCTION IF EXISTS foo1g1;
+DROP FUNCTION IF EXISTS foo1g2;
+DROP FUNCTION IF EXISTS foo2a0;
+DROP FUNCTION IF EXISTS foo2a2;
+DROP FUNCTION IF EXISTS foo2a4;
+DROP FUNCTION IF EXISTS foo2b1;
+DROP FUNCTION IF EXISTS foo2b2;
+DROP FUNCTION IF EXISTS foo2c1;
+DROP FUNCTION IF EXISTS foo31;
+DROP FUNCTION IF EXISTS foo32;
+DROP FUNCTION IF EXISTS foo33;
+DROP FUNCTION IF EXISTS foo41;
+DROP FUNCTION IF EXISTS foo42;
+DROP FUNCTION IF EXISTS foo51;
+DROP FUNCTION IF EXISTS foo52;
+DROP FUNCTION IF EXISTS foo6c;
+DROP FUNCTION IF EXISTS foo6d;
+DROP FUNCTION IF EXISTS foo7a;
+DROP FUNCTION IF EXISTS foo7at;
+DROP FUNCTION IF EXISTS foo9a;
+DROP FUNCTION IF EXISTS foo9b;
+DROP FUNCTION IF EXISTS foo9c;
+DROP FUNCTION IF EXISTS foo9d;
+DROP FUNCTION IF EXISTS foo9e;
+DROP FUNCTION IF EXISTS foo9f;
+DROP FUNCTION IF EXISTS foo9g;
+DROP FUNCTION IF EXISTS foo9h;
+DROP FUNCTION IF EXISTS foo9i;
+DROP FUNCTION IF EXISTS foo9j;
+DROP FUNCTION IF EXISTS foo9l;
+DROP FUNCTION IF EXISTS foo9m;
+DROP FUNCTION IF EXISTS foo9n;
+DROP FUNCTION IF EXISTS foo9o;
+DROP FUNCTION IF EXISTS foo9p;
+DROP FUNCTION IF EXISTS foo9q;
+DROP FUNCTION IF EXISTS foo9r;
+DROP FUNCTION IF EXISTS foo1_10;
+DROP FUNCTION IF EXISTS bar1_10;
+DROP FUNCTION IF EXISTS foo1_11a;
+DROP FUNCTION IF EXISTS foo1_11b;
+DROP FUNCTION IF EXISTS foo1_11c;
+DROP FUNCTION IF EXISTS foo1_11d;
+DROP FUNCTION IF EXISTS foo1_11e;
+DROP FUNCTION IF EXISTS foo1_11f;
+DROP FUNCTION IF EXISTS foo1_11g;
+DROP FUNCTION IF EXISTS foo1_11h;
+DROP FUNCTION IF EXISTS foo1_11i;
+DROP FUNCTION IF EXISTS foo1_11j;
+DROP FUNCTION IF EXISTS foo1_11k;
+DROP FUNCTION IF EXISTS foo1_11l;
+DROP FUNCTION IF EXISTS foo1_11m;
+DROP FUNCTION IF EXISTS foo1_11n;
+DROP FUNCTION IF EXISTS foo1_11o;
+DROP FUNCTION IF EXISTS foo2_1a;
+DROP FUNCTION IF EXISTS foo2_1b;
+DROP FUNCTION IF EXISTS foo2_1c;
+DROP FUNCTION IF EXISTS foo2_1d;
+DROP FUNCTION IF EXISTS foo2_2a;
+DROP FUNCTION IF EXISTS foo2_2b;
+DROP FUNCTION IF EXISTS foo2_2c;
+DROP FUNCTION IF EXISTS foo2_2d;
+DROP FUNCTION IF EXISTS foo2_2e;
+DROP FUNCTION IF EXISTS foo2_2f;
+DROP FUNCTION IF EXISTS foo2_2g;
+DROP FUNCTION IF EXISTS foo2_3;
+DROP FUNCTION IF EXISTS foo2_4a;
+DROP FUNCTION IF EXISTS foo2_4b;
+DROP FUNCTION IF EXISTS foo3_1a;
+DROP FUNCTION IF EXISTS foo3_1b;
+DROP FUNCTION IF EXISTS foo3_1c;
+DROP FUNCTION IF EXISTS foo3_1d;
+DROP FUNCTION IF EXISTS foo3_1e;
+DROP FUNCTION IF EXISTS foo3_1f;
+DROP FUNCTION IF EXISTS foo3_1g;
+DROP FUNCTION IF EXISTS foo3_1x;
+DROP FUNCTION IF EXISTS foo3_1y;
+DROP FUNCTION IF EXISTS foo3_2a;
+DROP FUNCTION IF EXISTS foo3_2b1;
+DROP FUNCTION IF EXISTS foo3_2b2;
+DROP FUNCTION IF EXISTS foo3_2b3;
+DROP FUNCTION IF EXISTS foo3_2b4;
+DROP FUNCTION IF EXISTS foo3_2b5;
+DROP FUNCTION IF EXISTS foo3_2c1;
+DROP FUNCTION IF EXISTS foo3_2c2;
+DROP FUNCTION IF EXISTS foo3_2d1;
+DROP FUNCTION IF EXISTS foo3_2d2;
+DROP FUNCTION IF EXISTS foo3_2e1;
+DROP FUNCTION IF EXISTS foo3_3a;
+DROP FUNCTION IF EXISTS foo3_3at;
+DROP FUNCTION IF EXISTS foo3_14a;
+DROP FUNCTION IF EXISTS foo3_14b;
+DROP FUNCTION IF EXISTS foo3_3c;
+DROP FUNCTION IF EXISTS foo3_3ct;
+DROP FUNCTION IF EXISTS foo3_3d;
+DROP FUNCTION IF EXISTS foo3_3dt;
+DROP FUNCTION IF EXISTS foo4_0;
+DROP FUNCTION IF EXISTS foo4_1;
+DROP FUNCTION IF EXISTS foo4_2;
+DROP FUNCTION IF EXISTS foo4_3;
diff --git a/sql/core/src/test/resources/sql-tests/results/sql-udf.sql.out 
b/sql/core/src/test/resources/sql-tests/results/sql-udf.sql.out
index fb39ae8b79e7..9bef00a77854 100644
--- a/sql/core/src/test/resources/sql-tests/results/sql-udf.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/sql-udf.sql.out
@@ -3591,14 +3591,6 @@ struct<key:string,value:string>
 spark.sql.ansi.enabled true
 
 
--- !query
-DROP FUNCTION IF EXISTS foo3_3at
--- !query schema
-struct<>
--- !query output
-
-
-
 -- !query
 CREATE FUNCTION foo3_3a(x INT) RETURNS DOUBLE RETURN 1 / x
 -- !query schema
@@ -4129,3 +4121,939 @@ DROP VIEW t2
 struct<>
 -- !query output
 
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1a0
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1a1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1a2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1b0
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1b1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1b2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1c1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1c2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1d1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1d2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1d4
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1d5
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1d6
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1e1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1e2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1e3
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1f1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1f2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1g1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1g2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2a0
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2a2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2a4
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2b1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2b2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2c1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo31
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo32
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo33
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo41
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo42
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo51
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo52
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo6c
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo6d
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo7a
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo7at
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9a
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9b
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9c
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9d
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9e
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9f
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9g
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9h
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9i
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9j
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9l
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9m
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9n
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9o
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9p
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9q
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo9r
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_10
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS bar1_10
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11a
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11b
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11c
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11d
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11e
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11f
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11g
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11h
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11i
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11j
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11k
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11l
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11m
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11n
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo1_11o
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_1a
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_1b
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_1c
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_1d
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2a
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2b
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2c
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2d
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2e
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2f
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_2g
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_3
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_4a
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo2_4b
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1a
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1b
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1c
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1d
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1e
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1f
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1g
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1x
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_1y
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2a
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2b1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2b2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2b3
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2b4
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2b5
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2c1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2c2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2d1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2d2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_2e1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_3a
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_3at
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_14a
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_14b
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_3c
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_3ct
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_3d
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo3_3dt
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo4_0
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo4_1
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo4_2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+DROP FUNCTION IF EXISTS foo4_3
+-- !query schema
+struct<>
+-- !query output
+


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

Reply via email to