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

rui-mo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new 531f76a319 [GLUTEN-13177][VL] Refresh the remaining Spark 4.2 
SQLQueryTest golden files (#13444)
531f76a319 is described below

commit 531f76a3193ead8119f2167961dd0c3438574e73
Author: Akshay Tayal <[email protected]>
AuthorDate: Mon Oct 26 14:49:02 2026 -0700

    [GLUTEN-13177][VL] Refresh the remaining Spark 4.2 SQLQueryTest golden 
files (#13444)
---
 .../sql-tests/inputs/collations-basic.sql          |   4 +
 .../sql-tests/inputs/cte-recursion.sql             |  10 +-
 .../backends-velox/sql-tests/inputs/cte.sql        |  11 +
 .../sql-tests/inputs/grouping_set.sql              |  76 ++++
 .../sql-tests/inputs/kllquantiles.sql              | 206 ++++++++-
 .../sql-tests/inputs/show-create-table.sql         |  12 +
 .../sql-tests/results/charvarchar.sql.out          |  12 +-
 .../sql-tests/results/collations-basic.sql.out     |  58 ++-
 .../results/collations-padding-trim.sql.out        |  52 +--
 .../results/collations-string-functions.sql.out    |  96 ++--
 .../backends-velox/sql-tests/results/count.sql.out |   5 +-
 .../sql-tests/results/cte-recursion.sql.out        |  28 +-
 .../backends-velox/sql-tests/results/cte.sql.out   |  48 +-
 .../sql-tests/results/grouping_set.sql.out         | 262 ++++++++++-
 .../sql-tests/results/kllquantiles.sql.out         | 493 ++++++++++++++++++++-
 .../results/postgreSQL/create_view.sql.out         |   9 +-
 .../sql-tests/results/postgreSQL/float8.sql.out    |   2 +-
 .../results/postgreSQL/window_part2.sql.out        |   4 +-
 .../results/postgreSQL/window_part3.sql.out        |  16 +-
 .../sql-tests/results/postgreSQL/with.sql.out      |   6 +-
 .../sql-tests/results/show-create-table.sql.out    |  79 +++-
 .../sql-tests/results/show-tables.sql.out          |   3 +-
 .../sql-tests/results/show_columns.sql.out         |  12 +-
 .../sql-tests/results/thetasketch.sql.out          |  32 +-
 .../results/union-resolution-edge-cases.sql.out    |   3 +-
 .../utils/velox/VeloxSQLQueryTestSettings.scala    |  19 +
 26 files changed, 1362 insertions(+), 196 deletions(-)

diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/collations-basic.sql
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/collations-basic.sql
index 6ff3ef4f4a..bd94b17296 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/collations-basic.sql
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/collations-basic.sql
@@ -1,5 +1,9 @@
 -- test cases for collation support
 
+-- Clean up any leftover tables from previous runs (e.g. shared warehouse 
across config dimensions)
+drop table if exists t2;
+drop table if exists t1;
+
 -- Create a test table with data
 create table t1(utf8_binary string collate utf8_binary, utf8_lcase string 
collate utf8_lcase) using parquet;
 insert into t1 values('aaa', 'aaa');
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/cte-recursion.sql
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/cte-recursion.sql
index 4aa7be79a0..e5291771f7 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/cte-recursion.sql
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/cte-recursion.sql
@@ -1,5 +1,6 @@
 --SET spark.sql.cteRecursionLevelLimit=25
 --SET spark.sql.cteRecursionRowLimit=50
+--SET spark.sql.analyzer.singlePassResolver.dualRunWithLegacy=true
 
 -- fails due to recursion isn't allowed without RECURSIVE keyword
 WITH r(level) AS (
@@ -248,7 +249,6 @@ WITH
     SELECT * FROM t1
   )
 SELECT * FROM t2;
-SET spark.sql.legacy.ctePrecedencePolicy=EXCEPTION;
 
 -- recursive reference can't be used multiple times in a recursive term
 WITH RECURSIVE r(level, data) AS (
@@ -728,6 +728,14 @@ WITH RECURSIVE t1(n, m) AS (
     SELECT n+1, CAST(n+1 AS BIGINT) FROM t1 WHERE n < 5)
 SELECT * FROM t1;
 
+-- Type coercion with timeZone sensitive type
+WITH RECURSIVE t1(n, str, ts) AS (
+    SELECT 1, '2024-01-15 00:00:00' ,CAST('2024-01-15 00:00:00' AS TIMESTAMP)
+    UNION ALL
+    SELECT n + 1, str, str FROM t1 WHERE n < 5
+)
+SELECT * FROM t1;
+
 -- Recursive CTE with nullable recursion and non-recursive anchor
 WITH RECURSIVE t1(n) AS (
     SELECT 1
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/cte.sql 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/cte.sql
index abcf2416a3..e691cfb14e 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/cte.sql
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/cte.sql
@@ -288,6 +288,17 @@ SELECT * FROM (
   WITH cte1 AS (SELECT * FROM t4) SELECT cte1.col1 FROM cte1 JOIN t4 USING 
(col1)
 );
 
+-- Column reference with different casing should preserve alias casing in 
self-join
+WITH cte AS (SELECT 1 AS id, 'test' AS COLNAME),
+     cte2 AS (SELECT id, COLNAME, colname FROM cte)
+SELECT * FROM cte2 a JOIN cte2 b ON (a.id = b.id);
+
+-- Same test with an unused CTE, used to return all columns in lower case
+WITH cte AS (SELECT 1 AS id, 'test' AS COLNAME),
+     cte2 AS (SELECT id, COLNAME, colname FROM cte),
+     cte3 AS (SELECT id, COLNAME, colname FROM cte2)
+SELECT * FROM cte2 a JOIN cte2 b ON (a.id = b.id);
+
 -- Clean up
 DROP VIEW IF EXISTS t;
 DROP VIEW IF EXISTS t2;
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/grouping_set.sql
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/grouping_set.sql
index 013a5419f8..eb1d06a50b 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/grouping_set.sql
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/grouping_set.sql
@@ -55,6 +55,82 @@ SELECT a, b, c, count(d) FROM grouping GROUP BY WITH CUBE;
 
 SELECT c1 FROM (values (1,2), (3,2)) t(c1, c2) GROUP BY GROUPING SETS (());
 
+-- GROUP BY GROUPING SETS (()) is a grand total and must return one row over 
empty input, just
+-- like an aggregation without a GROUP BY clause.
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) WHERE k > 100 GROUP BY 
GROUPING SETS (());
+
+-- Semantically identical query without GROUP BY, for comparison.
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) WHERE k > 100;
+
+-- Grand total over empty input with grouping_id() in the SELECT list.
+SELECT count(*) AS c, grouping_id() AS g
+FROM VALUES (1), (2), (3) AS t(k) WHERE k > 100 GROUP BY GROUPING SETS (());
+
+-- Grand total over non-empty input still returns the single aggregated row.
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
(());
+
+-- Meaningful aggregates make the grand-total row explicit. Over empty input 
it is a single row of
+-- NULL measures with count 0 (identical to the same query with no GROUP BY); 
over non-empty input
+-- it carries the real totals.
+SELECT sum(v) AS total, avg(v) AS mean, max(v) AS hi, count(*) AS c
+FROM VALUES (10), (20), (30) AS t(v) WHERE v > 100 GROUP BY GROUPING SETS (());
+
+SELECT sum(v) AS total, avg(v) AS mean, max(v) AS hi, count(*) AS c
+FROM VALUES (10), (20), (30) AS t(v) WHERE v > 100;
+
+SELECT sum(v) AS total, avg(v) AS mean, max(v) AS hi, count(*) AS c
+FROM VALUES (10), (20), (30) AS t(v) GROUP BY GROUPING SETS (());
+
+-- Contrast: grouping by a real column over empty input returns no rows (no 
groups), whereas the
+-- grand total above returns one row -- the grand-total-specific semantics 
this fix restores.
+SELECT v, count(*) AS c FROM VALUES (10), (20), (30) AS t(v) WHERE v > 100 
GROUP BY v;
+
+-- grouping_id() over a grand total is 0, so it resolves in HAVING and ORDER 
BY.
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
(()) HAVING grouping_id() = 0;
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
(()) ORDER BY grouping_id();
+
+-- grouping() over a grand total references a non-grouping column and is 
rejected.
+SELECT grouping(k) FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
(());
+
+-- A grouping function over a plain aggregate with no GROUP BY clause (and no 
grouping set) is
+-- still rejected, in HAVING and in ORDER BY -- the grand-total lowering must 
not make these fold.
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) HAVING grouping_id() = 
0;
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) ORDER BY grouping_id();
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) HAVING grouping(k) = 0;
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) ORDER BY grouping(k);
+
+-- GROUP BY GROUPING SETS ((), ()) is a *duplicated* empty grouping set: it is 
NOT the single-set
+-- grand total, so it stays on the Expand path (with a spark_grouping_id key 
plus a
+-- _gen_grouping_pos dedup key) and is not lowered to a global aggregate. It 
emits one row per
+-- empty set (two rows), each with grouping_id() = 0 in the SELECT list. In 
HAVING/ORDER BY a
+-- grouping function still errors (the last grouping key is _gen_grouping_pos, 
not
+-- spark_grouping_id), and grouping() over a non-grouping column is rejected. 
This is unchanged by
+-- the grand-total lowering.
+SELECT count(*) AS c, grouping_id() AS g
+FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS ((), ());
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
((), ()) HAVING grouping_id() = 0;
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
((), ()) ORDER BY grouping_id();
+SELECT grouping(k) FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
((), ());
+
+-- Grand total over a named relation rather than inline data in the query: the 
grand total reads
+-- FROM a temporary view.
+CREATE TEMPORARY VIEW grouping_grand_total AS
+  SELECT * FROM VALUES (1, 10), (2, 20), (3, 30) AS t(k, v);
+
+-- Empty input (filter removes all rows): one grand-total row of NULL measures 
with count 0.
+SELECT sum(v) AS total, avg(v) AS mean, max(v) AS hi, count(*) AS c
+FROM grouping_grand_total WHERE k > 100 GROUP BY GROUPING SETS (());
+
+-- Non-empty input: the real totals in a single grand-total row.
+SELECT sum(v) AS total, avg(v) AS mean, max(v) AS hi, count(*) AS c
+FROM grouping_grand_total GROUP BY GROUPING SETS (());
+
+-- grouping_id() over the grand total folds to 0.
+SELECT count(*) AS c, grouping_id() AS g
+FROM grouping_grand_total WHERE k > 100 GROUP BY GROUPING SETS (());
+
+DROP VIEW grouping_grand_total;
+
 -- duplicate entries in grouping sets
 SELECT k1, k2, avg(v) FROM (VALUES (1,1,1),(2,2,2)) AS t(k1,k2,v) GROUP BY 
GROUPING SETS ((k1),(k1,k2),(k2,k1));
 
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/kllquantiles.sql
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/kllquantiles.sql
index fe1b61de03..9300754d20 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/kllquantiles.sql
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/kllquantiles.sql
@@ -123,7 +123,7 @@ FROM (
     FROM t_float_1_5_through_7_11
 );
 
--- Merging sketches and converting them to strings
+-- Merging sketches and converting them to strings (scalar merge functions)
 SELECT
   split(
     kll_sketch_to_string_bigint(
@@ -160,6 +160,143 @@ SELECT
   )[1] AS result
 FROM t_byte_1_5_through_7_11;
 
+-- Tests for KllMergeAgg* aggregate functions
+-- These functions merge multiple binary sketch representations
+
+-- Test GROUP BY with kll_merge_agg_bigint and HAVING clause
+SELECT
+  parity,
+  kll_sketch_get_n_bigint(kll_merge_agg_bigint(sketch_col)) AS total_count
+FROM (
+  SELECT
+    col1 % 2 AS parity,
+    kll_sketch_agg_bigint(col1) AS sketch_col
+  FROM t_int_1_5_through_7_11
+  GROUP BY col1 % 2
+) grouped_sketches
+GROUP BY parity
+HAVING kll_sketch_get_n_bigint(kll_merge_agg_bigint(sketch_col)) > 3;
+
+-- Test empty aggregation: zero rows input for kll_merge_agg_bigint
+SELECT kll_sketch_get_n_bigint(kll_merge_agg_bigint(sketch_col)) AS 
empty_merge_n
+FROM (
+  SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+  FROM t_int_1_5_through_7_11
+  WHERE col1 > 1000
+) empty_sketches;
+
+-- Test empty aggregation: zero rows input for kll_merge_agg_float
+SELECT kll_sketch_get_n_float(kll_merge_agg_float(sketch_col)) AS empty_merge_n
+FROM (
+  SELECT kll_sketch_agg_float(col1) AS sketch_col
+  FROM t_float_1_5_through_7_11
+  WHERE col1 > 1000.0
+) empty_sketches;
+
+-- Test empty aggregation: zero rows input for kll_merge_agg_double
+SELECT kll_sketch_get_n_double(kll_merge_agg_double(sketch_col)) AS 
empty_merge_n
+FROM (
+  SELECT kll_sketch_agg_double(col1) AS sketch_col
+  FROM t_double_1_5_through_7_11
+  WHERE col1 > 1000.0
+) empty_sketches;
+
+-- Test kll_merge_agg_bigint: merge bigint sketches from multiple rows
+SELECT lower(kll_sketch_to_string_bigint(agg)) LIKE '%kll%' AS 
str_contains_kll,
+       abs(kll_sketch_get_quantile_bigint(agg, 0.5) - 4) < 1 AS 
median_close_to_4,
+       abs(kll_sketch_get_rank_bigint(agg, 3) - 0.4) < 0.1 AS 
rank3_close_to_0_4
+FROM (
+    SELECT kll_merge_agg_bigint(sketch_col) AS agg
+    FROM (
+        SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+        FROM t_int_1_5_through_7_11
+        UNION ALL
+        SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+        FROM t_short_1_5_through_7_11
+    ) sketches
+);
+
+-- Test kll_merge_agg_float: merge float sketches from multiple rows
+-- Merging col1 (1-7) and col2 (5-11) gives combined data with median ~5.5
+SELECT lower(kll_sketch_to_string_float(agg)) LIKE '%kll%' AS str_contains_kll,
+       abs(kll_sketch_get_quantile_float(agg, 0.5) - 5.5) < 1.0 AS 
median_close_to_5_5,
+       abs(kll_sketch_get_rank_float(agg, 5.0) - 0.35) < 0.15 AS 
rank5_close_to_0_35
+FROM (
+    SELECT kll_merge_agg_float(sketch_col) AS agg
+    FROM (
+        SELECT kll_sketch_agg_float(col1) AS sketch_col
+        FROM t_float_1_5_through_7_11
+        UNION ALL
+        SELECT kll_sketch_agg_float(col2) AS sketch_col
+        FROM t_float_1_5_through_7_11
+    ) sketches
+);
+
+-- Test kll_merge_agg_double: merge double sketches from multiple rows
+SELECT lower(kll_sketch_to_string_double(agg)) LIKE '%kll%' AS 
str_contains_kll,
+       abs(kll_sketch_get_quantile_double(agg, 0.5) - 6.0) < 1.0 AS 
median_close_to_6,
+       abs(kll_sketch_get_rank_double(agg, 5.0) - 0.35) < 0.15 AS 
rank5_close_to_0_35
+FROM (
+    SELECT kll_merge_agg_double(sketch_col) AS agg
+    FROM (
+        SELECT kll_sketch_agg_double(col1) AS sketch_col
+        FROM t_double_1_5_through_7_11
+        UNION ALL
+        SELECT kll_sketch_agg_double(col2) AS sketch_col
+        FROM t_float_1_5_through_7_11
+    ) sketches
+);
+
+-- Test kll_merge_agg_bigint with custom k parameter
+SELECT LENGTH(kll_sketch_to_string_bigint(kll_merge_agg_bigint(sketch_col, 
400))) > 0 AS merged_with_k
+FROM (
+    SELECT kll_sketch_agg_bigint(col1, 400) AS sketch_col
+    FROM t_long_1_5_through_7_11
+    UNION ALL
+    SELECT kll_sketch_agg_bigint(col2, 400) AS sketch_col
+    FROM t_byte_1_5_through_7_11
+) sketches;
+
+-- Test kll_merge_agg_float with custom k parameter
+SELECT LENGTH(kll_sketch_to_string_float(kll_merge_agg_float(sketch_col, 
300))) > 0 AS merged_with_k
+FROM (
+    SELECT kll_sketch_agg_float(col1, 300) AS sketch_col
+    FROM t_float_1_5_through_7_11
+) sketches;
+
+-- Test kll_merge_agg_double with custom k parameter
+SELECT LENGTH(kll_sketch_to_string_double(kll_merge_agg_double(sketch_col, 
500))) > 0 AS merged_with_k
+FROM (
+    SELECT kll_sketch_agg_double(col1, 500) AS sketch_col
+    FROM t_double_1_5_through_7_11
+) sketches;
+
+-- Test that kll_merge_agg functions ignore NULL sketch values
+SELECT abs(kll_sketch_get_quantile_bigint(agg_with_nulls, 0.5) -
+           kll_sketch_get_quantile_bigint(agg_without_nulls, 0.5)) < 1 AS 
medians_match
+FROM (
+    SELECT kll_merge_agg_bigint(sketch_col) AS agg_with_nulls
+    FROM (
+        SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+        FROM t_long_1_5_through_7_11
+        UNION ALL
+        SELECT CAST(NULL AS BINARY) AS sketch_col
+        UNION ALL
+        SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+        FROM t_byte_1_5_through_7_11
+    ) sketches_with_nulls
+) WITH_NULLS,
+(
+    SELECT kll_merge_agg_bigint(sketch_col) AS agg_without_nulls
+    FROM (
+        SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+        FROM t_long_1_5_through_7_11
+        UNION ALL
+        SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+        FROM t_byte_1_5_through_7_11
+    ) sketches_without_nulls
+) WITHOUT_NULLS;
+
 -- Tests verifying that NULL input values are ignored by aggregate functions
 
 -- Test BIGINT aggregate ignores NULL values
@@ -405,6 +542,73 @@ FROM t_double_1_5_through_7_11;
 SELECT kll_sketch_agg_bigint(col1, '100') AS k_wrong_type
 FROM t_long_1_5_through_7_11;
 
+-- Negative tests for kll_merge_agg functions
+
+-- Test wrong sketch type: float sketch passed to kll_merge_agg_bigint (should 
fail)
+SELECT kll_merge_agg_bigint(sketch_col) AS wrong_type_merge
+FROM (
+  SELECT kll_sketch_agg_float(col1) AS sketch_col
+  FROM t_float_1_5_through_7_11
+) float_sketches;
+
+-- Type mismatch: kll_merge_agg_bigint does not accept integer columns (needs 
binary)
+SELECT kll_merge_agg_bigint(col1) AS merge_wrong_type
+FROM t_long_1_5_through_7_11;
+
+-- Type mismatch: kll_merge_agg_float does not accept float columns (needs 
binary)
+SELECT kll_merge_agg_float(col1) AS merge_wrong_type
+FROM t_float_1_5_through_7_11;
+
+-- Type mismatch: kll_merge_agg_double does not accept double columns (needs 
binary)
+SELECT kll_merge_agg_double(col1) AS merge_wrong_type
+FROM t_double_1_5_through_7_11;
+
+-- Invalid binary data for kll_merge_agg_bigint
+SELECT kll_merge_agg_bigint(sketch_col) AS invalid_merge
+FROM (
+    SELECT CAST('not_a_sketch' AS BINARY) AS sketch_col
+) invalid_data;
+
+-- Invalid binary data for kll_merge_agg_float
+SELECT kll_merge_agg_float(sketch_col) AS invalid_merge
+FROM (
+    SELECT X'deadbeef' AS sketch_col
+) invalid_data;
+
+-- Invalid binary data for kll_merge_agg_double
+SELECT kll_merge_agg_double(sketch_col) AS invalid_merge
+FROM (
+    SELECT X'cafebabe' AS sketch_col
+) invalid_data;
+
+-- k parameter too small for kll_merge_agg_bigint
+SELECT kll_merge_agg_bigint(sketch_col, 7) AS k_too_small
+FROM (
+    SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+    FROM t_long_1_5_through_7_11
+) sketches;
+
+-- k parameter too large for kll_merge_agg_float
+SELECT kll_merge_agg_float(sketch_col, 65536) AS k_too_large
+FROM (
+    SELECT kll_sketch_agg_float(col1) AS sketch_col
+    FROM t_float_1_5_through_7_11
+) sketches;
+
+-- k parameter is NULL for kll_merge_agg_double
+SELECT kll_merge_agg_double(sketch_col, CAST(NULL AS INT)) AS k_is_null
+FROM (
+    SELECT kll_sketch_agg_double(col1) AS sketch_col
+    FROM t_double_1_5_through_7_11
+) sketches;
+
+-- k parameter is not foldable for kll_merge_agg_bigint (using a non-constant 
expression)
+SELECT kll_merge_agg_bigint(sketch_col, CAST(RAND() * 100 AS INT) + 200) AS 
k_non_constant
+FROM (
+    SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+    FROM t_long_1_5_through_7_11
+) sketches;
+
 -- Negative tests for kll_sketch_get_n functions
 -- Invalid binary data
 SELECT kll_sketch_get_n_bigint(X'deadbeef') AS invalid_binary_bigint;
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/show-create-table.sql
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/show-create-table.sql
index 5192d2dc6b..728e1fee50 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/show-create-table.sql
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/inputs/show-create-table.sql
@@ -105,10 +105,22 @@ CREATE VIEW view_SPARK_30302 (aaa, bbb)
 TBLPROPERTIES ('a' = '1', 'b' = '2')
 AS SELECT a, b FROM tbl;
 
+DROP TABLE tbl;
+
 SHOW CREATE TABLE view_SPARK_30302 AS SERDE;
 
 SHOW CREATE TABLE view_SPARK_30302;
 
 DROP VIEW view_SPARK_30302;
 
+-- Table with default collation.
+CREATE TABLE tbl (c1 STRING, c2 STRING COLLATE UTF8_BINARY, c3 STRING COLLATE 
UNICODE_CI)
+ DEFAULT COLLATION UTF8_LCASE;
+SHOW CREATE TABLE tbl;
 DROP TABLE tbl;
+
+-- View with default collation.
+CREATE VIEW view_SPARK_55372 DEFAULT COLLATION UTF8_LCASE
+AS SELECT 'a' AS c1, 'b' COLLATE UTF8_BINARY AS c2, 'c' COLLATE UNICODE_CI AS 
c3;
+SHOW CREATE TABLE view_SPARK_55372;
+DROP VIEW view_SPARK_55372;
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/charvarchar.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/charvarchar.sql.out
index bbb58936f5..fcad9d2ef4 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/charvarchar.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/charvarchar.sql.out
@@ -50,8 +50,8 @@ show create table char_tbl
 struct<createtab_stmt:string>
 -- !query output
 CREATE TABLE spark_catalog.default.char_tbl (
-  c CHAR(5),
-  v VARCHAR(6))
+  c CHAR(5) COLLATE UTF8_BINARY,
+  v VARCHAR(6) COLLATE UTF8_BINARY)
 USING parquet
 
 
@@ -69,8 +69,8 @@ show create table char_tbl2
 struct<createtab_stmt:string>
 -- !query output
 CREATE TABLE spark_catalog.default.char_tbl2 (
-  c CHAR(5),
-  v VARCHAR(6))
+  c CHAR(5) COLLATE UTF8_BINARY,
+  v VARCHAR(6) COLLATE UTF8_BINARY)
 USING parquet
 
 
@@ -162,8 +162,8 @@ show create table char_tbl3
 struct<createtab_stmt:string>
 -- !query output
 CREATE TABLE spark_catalog.default.char_tbl3 (
-  c CHAR(5),
-  v VARCHAR(6))
+  c CHAR(5) COLLATE UTF8_BINARY,
+  v VARCHAR(6) COLLATE UTF8_BINARY)
 USING parquet
 
 
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/collations-basic.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/collations-basic.sql.out
index 4be0c01df3..77c79539ed 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/collations-basic.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/collations-basic.sql.out
@@ -1,4 +1,20 @@
 -- Automatically generated by SQLQueryTestSuite
+-- !query
+drop table if exists t2
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+drop table if exists t1
+-- !query schema
+struct<>
+-- !query output
+
+
+
 -- !query
 create table t1(utf8_binary string collate utf8_binary, utf8_lcase string 
collate utf8_lcase) using parquet
 -- !query schema
@@ -44,7 +60,7 @@ describe table t1
 -- !query schema
 struct<col_name:string,data_type:string,comment:string>
 -- !query output
-utf8_binary            string                                      
+utf8_binary            string collate UTF8_BINARY                          
 utf8_lcase             string collate UTF8_LCASE
 
 
@@ -71,7 +87,7 @@ struct<count(1):bigint>
 -- !query
 select * from t1 where utf8_binary = 'aaa'
 -- !query schema
-struct<utf8_binary:string,utf8_lcase:string collate UTF8_LCASE>
+struct<utf8_binary:string collate UTF8_BINARY,utf8_lcase:string collate 
UTF8_LCASE>
 -- !query output
 aaa    aaa
 
@@ -79,7 +95,7 @@ aaa   aaa
 -- !query
 select * from t1 where utf8_lcase = 'aaa' collate utf8_lcase
 -- !query schema
-struct<utf8_binary:string,utf8_lcase:string collate UTF8_LCASE>
+struct<utf8_binary:string collate UTF8_BINARY,utf8_lcase:string collate 
UTF8_LCASE>
 -- !query output
 AAA    AAA
 aaa    aaa
@@ -88,7 +104,7 @@ aaa  aaa
 -- !query
 select * from t1 where utf8_binary < 'bbb'
 -- !query schema
-struct<utf8_binary:string,utf8_lcase:string collate UTF8_LCASE>
+struct<utf8_binary:string collate UTF8_BINARY,utf8_lcase:string collate 
UTF8_LCASE>
 -- !query output
 AAA    AAA
 BBB    BBB
@@ -98,7 +114,7 @@ aaa  aaa
 -- !query
 select * from t1 where utf8_lcase < 'bbb' collate utf8_lcase
 -- !query schema
-struct<utf8_binary:string,utf8_lcase:string collate UTF8_LCASE>
+struct<utf8_binary:string collate UTF8_BINARY,utf8_lcase:string collate 
UTF8_LCASE>
 -- !query output
 AAA    AAA
 aaa    aaa
@@ -107,7 +123,7 @@ aaa aaa
 -- !query
 select l.utf8_binary, r.utf8_lcase from t1 l join t1 r on l.utf8_lcase = 
r.utf8_lcase
 -- !query schema
-struct<utf8_binary:string,utf8_lcase:string collate UTF8_LCASE>
+struct<utf8_binary:string collate UTF8_BINARY,utf8_lcase:string collate 
UTF8_LCASE>
 -- !query output
 AAA    AAA
 AAA    aaa
@@ -146,7 +162,7 @@ struct<>
 -- !query
 select * from t1 anti join t2 on t1.utf8_lcase = t2.utf8_lcase
 -- !query schema
-struct<utf8_binary:string,utf8_lcase:string collate UTF8_LCASE>
+struct<utf8_binary:string collate UTF8_BINARY,utf8_lcase:string collate 
UTF8_LCASE>
 -- !query output
 
 
@@ -602,7 +618,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -610,7 +626,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select str_to_map(text collate utf8_binary, pairDelim collate utf8_binary, 
keyValueDelim collate utf8_binary) from t3
 -- !query schema
-struct<str_to_map(collate(text, utf8_binary), collate(pairDelim, utf8_binary), 
collate(keyValueDelim, utf8_binary)):map<string,string>>
+struct<str_to_map(collate(text, utf8_binary), collate(pairDelim, utf8_binary), 
collate(keyValueDelim, utf8_binary)):map<string collate UTF8_BINARY,string 
collate UTF8_BINARY>>
 -- !query output
 {"a":"1","b":"2","c":"3"}
 
@@ -903,7 +919,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -911,7 +927,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select elt(1, utf8_binary collate utf8_binary, utf8_lcase collate utf8_binary) 
from t1
 -- !query schema
-struct<elt(1, collate(utf8_binary, utf8_binary), collate(utf8_lcase, 
utf8_binary)):string>
+struct<elt(1, collate(utf8_binary, utf8_binary), collate(utf8_lcase, 
utf8_binary)):string collate UTF8_BINARY>
 -- !query output
 Hello, world! Nice day.
 Something else. Nothing here.
@@ -933,7 +949,7 @@ kitten
 -- !query
 select elt(1, utf8_binary collate utf8_binary, utf8_lcase) from t1
 -- !query schema
-struct<elt(1, collate(utf8_binary, utf8_binary), utf8_lcase):string>
+struct<elt(1, collate(utf8_binary, utf8_binary), utf8_lcase):string collate 
UTF8_BINARY>
 -- !query output
 Hello, world! Nice day.
 Something else. Nothing here.
@@ -955,7 +971,7 @@ kitten
 -- !query
 select elt(1, utf8_binary, 'word'), elt(1, utf8_lcase, 'word') from t1
 -- !query schema
-struct<elt(1, utf8_binary, word):string,elt(1, utf8_lcase, 'word' collate 
UTF8_LCASE):string collate UTF8_LCASE>
+struct<elt(1, utf8_binary, word):string collate UTF8_BINARY,elt(1, utf8_lcase, 
'word' collate UTF8_LCASE):string collate UTF8_LCASE>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -977,7 +993,7 @@ kitten      sitTing
 -- !query
 select elt(1, utf8_binary, 'word' collate utf8_lcase), elt(1, utf8_lcase, 
'word' collate utf8_binary) from t1
 -- !query schema
-struct<elt(1, utf8_binary, collate(word, utf8_lcase)):string collate 
UTF8_LCASE,elt(1, utf8_lcase, collate(word, utf8_binary)):string>
+struct<elt(1, utf8_binary, collate(word, utf8_lcase)):string collate 
UTF8_LCASE,elt(1, utf8_lcase, collate(word, utf8_binary)):string collate 
UTF8_BINARY>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -1359,7 +1375,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -1521,7 +1537,7 @@ true      true
 -- !query
 select make_valid_utf8(utf8_binary), make_valid_utf8(utf8_lcase) from t1
 -- !query schema
-struct<make_valid_utf8(utf8_binary):string,make_valid_utf8(utf8_lcase):string 
collate UTF8_LCASE>
+struct<make_valid_utf8(utf8_binary):string collate 
UTF8_BINARY,make_valid_utf8(utf8_lcase):string collate UTF8_LCASE>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -1543,7 +1559,7 @@ kitten    sitTing
 -- !query
 select make_valid_utf8(utf8_binary collate utf8_lcase), 
make_valid_utf8(utf8_lcase collate utf8_binary) from t1
 -- !query schema
-struct<make_valid_utf8(collate(utf8_binary, utf8_lcase)):string collate 
UTF8_LCASE,make_valid_utf8(collate(utf8_lcase, utf8_binary)):string>
+struct<make_valid_utf8(collate(utf8_binary, utf8_lcase)):string collate 
UTF8_LCASE,make_valid_utf8(collate(utf8_lcase, utf8_binary)):string collate 
UTF8_BINARY>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -1587,7 +1603,7 @@ kitten    sitTing
 -- !query
 select validate_utf8(utf8_binary), validate_utf8(utf8_lcase) from t1
 -- !query schema
-struct<validate_utf8(utf8_binary):string,validate_utf8(utf8_lcase):string 
collate UTF8_LCASE>
+struct<validate_utf8(utf8_binary):string collate 
UTF8_BINARY,validate_utf8(utf8_lcase):string collate UTF8_LCASE>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -1609,7 +1625,7 @@ kitten    sitTing
 -- !query
 select validate_utf8(utf8_binary collate utf8_lcase), validate_utf8(utf8_lcase 
collate utf8_binary) from t1
 -- !query schema
-struct<validate_utf8(collate(utf8_binary, utf8_lcase)):string collate 
UTF8_LCASE,validate_utf8(collate(utf8_lcase, utf8_binary)):string>
+struct<validate_utf8(collate(utf8_binary, utf8_lcase)):string collate 
UTF8_LCASE,validate_utf8(collate(utf8_lcase, utf8_binary)):string collate 
UTF8_BINARY>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -1653,7 +1669,7 @@ kitten    sitTing
 -- !query
 select try_validate_utf8(utf8_binary), try_validate_utf8(utf8_lcase) from t1
 -- !query schema
-struct<try_validate_utf8(utf8_binary):string,try_validate_utf8(utf8_lcase):string
 collate UTF8_LCASE>
+struct<try_validate_utf8(utf8_binary):string collate 
UTF8_BINARY,try_validate_utf8(utf8_lcase):string collate UTF8_LCASE>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -1675,7 +1691,7 @@ kitten    sitTing
 -- !query
 select try_validate_utf8(utf8_binary collate utf8_lcase), 
try_validate_utf8(utf8_lcase collate utf8_binary) from t1
 -- !query schema
-struct<try_validate_utf8(collate(utf8_binary, utf8_lcase)):string collate 
UTF8_LCASE,try_validate_utf8(collate(utf8_lcase, utf8_binary)):string>
+struct<try_validate_utf8(collate(utf8_binary, utf8_lcase)):string collate 
UTF8_LCASE,try_validate_utf8(collate(utf8_lcase, utf8_binary)):string collate 
UTF8_BINARY>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/collations-padding-trim.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/collations-padding-trim.sql.out
index d18a011292..a6377a8863 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/collations-padding-trim.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/collations-padding-trim.sql.out
@@ -181,7 +181,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -189,7 +189,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select rpad(utf8_binary, 8, utf8_lcase collate utf8_binary) from t1
 -- !query schema
-struct<rpad(utf8_binary, 8, collate(utf8_lcase, utf8_binary)):string>
+struct<rpad(utf8_binary, 8, collate(utf8_lcase, utf8_binary)):string collate 
UTF8_BINARY>
 -- !query output
 Hello, w
 Somethin
@@ -255,7 +255,7 @@ sikitten
 -- !query
 select rpad(utf8_binary, 8, 'a'), rpad(utf8_lcase, 8, 'a') from t1
 -- !query schema
-struct<rpad(utf8_binary, 8, a):string,rpad(utf8_lcase, 8, 'a' collate 
UTF8_LCASE):string collate UTF8_LCASE>
+struct<rpad(utf8_binary, 8, a):string collate UTF8_BINARY,rpad(utf8_lcase, 8, 
'a' collate UTF8_LCASE):string collate UTF8_LCASE>
 -- !query output
 Hello, w       Hello, w
 Somethin       Somethin
@@ -277,7 +277,7 @@ kittenaa    sitTinga
 -- !query
 select rpad(utf8_binary, 8, 'AaAA' collate utf8_lcase), rpad(utf8_lcase, 8, 
'AAa' collate utf8_binary) from t1
 -- !query schema
-struct<rpad(utf8_binary, 8, collate(AaAA, utf8_lcase)):string collate 
UTF8_LCASE,rpad(utf8_lcase, 8, collate(AAa, utf8_binary)):string>
+struct<rpad(utf8_binary, 8, collate(AaAA, utf8_lcase)):string collate 
UTF8_LCASE,rpad(utf8_lcase, 8, collate(AAa, utf8_binary)):string collate 
UTF8_BINARY>
 -- !query output
 Hello, w       Hello, w
 Somethin       Somethin
@@ -350,7 +350,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -358,7 +358,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select lpad(utf8_binary, 8, utf8_lcase collate utf8_binary) from t1
 -- !query schema
-struct<lpad(utf8_binary, 8, collate(utf8_lcase, utf8_binary)):string>
+struct<lpad(utf8_binary, 8, collate(utf8_lcase, utf8_binary)):string collate 
UTF8_BINARY>
 -- !query output
 Hello, w
 SQLSpark
@@ -424,7 +424,7 @@ sikitten
 -- !query
 select lpad(utf8_binary, 8, 'a'), lpad(utf8_lcase, 8, 'a') from t1
 -- !query schema
-struct<lpad(utf8_binary, 8, a):string,lpad(utf8_lcase, 8, 'a' collate 
UTF8_LCASE):string collate UTF8_LCASE>
+struct<lpad(utf8_binary, 8, a):string collate UTF8_BINARY,lpad(utf8_lcase, 8, 
'a' collate UTF8_LCASE):string collate UTF8_LCASE>
 -- !query output
 Hello, w       Hello, w
 Somethin       Somethin
@@ -446,7 +446,7 @@ bbAbAAbA    aaaaaaaa
 -- !query
 select lpad(utf8_binary, 8, 'AaAA' collate utf8_lcase), lpad(utf8_lcase, 8, 
'AAa' collate utf8_binary) from t1
 -- !query schema
-struct<lpad(utf8_binary, 8, collate(AaAA, utf8_lcase)):string collate 
UTF8_LCASE,lpad(utf8_lcase, 8, collate(AAa, utf8_binary)):string>
+struct<lpad(utf8_binary, 8, collate(AaAA, utf8_lcase)):string collate 
UTF8_LCASE,lpad(utf8_lcase, 8, collate(AAa, utf8_binary)):string collate 
UTF8_BINARY>
 -- !query output
 AaAAAabc       AAaAAabc
 AaAAAaİo       AAaAAaİo
@@ -490,7 +490,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select TRIM(s, utf8_binary) from t1
 -- !query schema
-struct<TRIM(BOTH s FROM utf8_binary):string>
+struct<TRIM(BOTH s FROM utf8_binary):string collate UTF8_BINARY>
 -- !query output
 
 
@@ -505,7 +505,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING COLLATE 
UTF8_BINARY\""
   }
 }
 
@@ -513,7 +513,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select TRIM(utf8_binary, utf8_lcase collate utf8_binary) from t1
 -- !query schema
-struct<TRIM(BOTH utf8_binary FROM collate(utf8_lcase, utf8_binary)):string>
+struct<TRIM(BOTH utf8_binary FROM collate(utf8_lcase, utf8_binary)):string 
collate UTF8_BINARY>
 -- !query output
 
 
@@ -605,7 +605,7 @@ sitTing
 -- !query
 select TRIM('ABc', utf8_binary), TRIM('ABc', utf8_lcase) from t1
 -- !query schema
-struct<TRIM(BOTH ABc FROM utf8_binary):string,TRIM(BOTH 'ABc' collate 
UTF8_LCASE FROM utf8_lcase):string collate UTF8_LCASE>
+struct<TRIM(BOTH ABc FROM utf8_binary):string collate UTF8_BINARY,TRIM(BOTH 
'ABc' collate UTF8_LCASE FROM utf8_lcase):string collate UTF8_LCASE>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -627,7 +627,7 @@ kitten      sitTing
 -- !query
 select TRIM('ABc' collate utf8_lcase, utf8_binary), TRIM('AAa' collate 
utf8_binary, utf8_lcase) from t1
 -- !query schema
-struct<TRIM(BOTH collate(ABc, utf8_lcase) FROM utf8_binary):string collate 
UTF8_LCASE,TRIM(BOTH collate(AAa, utf8_binary) FROM utf8_lcase):string>
+struct<TRIM(BOTH collate(ABc, utf8_lcase) FROM utf8_binary):string collate 
UTF8_LCASE,TRIM(BOTH collate(AAa, utf8_binary) FROM utf8_lcase):string collate 
UTF8_BINARY>
 -- !query output
        
        
@@ -700,7 +700,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -708,7 +708,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select BTRIM(utf8_binary, utf8_lcase collate utf8_binary) from t1
 -- !query schema
-struct<btrim(utf8_binary, collate(utf8_lcase, utf8_binary)):string>
+struct<btrim(utf8_binary, collate(utf8_lcase, utf8_binary)):string collate 
UTF8_BINARY>
 -- !query output
 
 
@@ -822,7 +822,7 @@ Bc  Bc
 -- !query
 select BTRIM('ABc' collate utf8_lcase, utf8_binary), BTRIM('AAa' collate 
utf8_binary, utf8_lcase) from t1
 -- !query schema
-struct<btrim(collate(ABc, utf8_lcase), utf8_binary):string collate 
UTF8_LCASE,btrim(collate(AAa, utf8_binary), utf8_lcase):string>
+struct<btrim(collate(ABc, utf8_lcase), utf8_binary):string collate 
UTF8_LCASE,btrim(collate(AAa, utf8_binary), utf8_lcase):string collate 
UTF8_BINARY>
 -- !query output
        
        AA
@@ -866,7 +866,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select LTRIM(s, utf8_binary) from t1
 -- !query schema
-struct<TRIM(LEADING s FROM utf8_binary):string>
+struct<TRIM(LEADING s FROM utf8_binary):string collate UTF8_BINARY>
 -- !query output
 
 
@@ -881,7 +881,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING COLLATE 
UTF8_BINARY\""
   }
 }
 
@@ -889,7 +889,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select LTRIM(utf8_binary, utf8_lcase collate utf8_binary) from t1
 -- !query schema
-struct<TRIM(LEADING utf8_binary FROM collate(utf8_lcase, utf8_binary)):string>
+struct<TRIM(LEADING utf8_binary FROM collate(utf8_lcase, utf8_binary)):string 
collate UTF8_BINARY>
 -- !query output
 
 
@@ -981,7 +981,7 @@ sitTing
 -- !query
 select LTRIM('ABc', utf8_binary), LTRIM('ABc', utf8_lcase) from t1
 -- !query schema
-struct<TRIM(LEADING ABc FROM utf8_binary):string,TRIM(LEADING 'ABc' collate 
UTF8_LCASE FROM utf8_lcase):string collate UTF8_LCASE>
+struct<TRIM(LEADING ABc FROM utf8_binary):string collate 
UTF8_BINARY,TRIM(LEADING 'ABc' collate UTF8_LCASE FROM utf8_lcase):string 
collate UTF8_LCASE>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -1003,7 +1003,7 @@ kitten    sitTing
 -- !query
 select LTRIM('ABc' collate utf8_lcase, utf8_binary), LTRIM('AAa' collate 
utf8_binary, utf8_lcase) from t1
 -- !query schema
-struct<TRIM(LEADING collate(ABc, utf8_lcase) FROM utf8_binary):string collate 
UTF8_LCASE,TRIM(LEADING collate(AAa, utf8_binary) FROM utf8_lcase):string>
+struct<TRIM(LEADING collate(ABc, utf8_lcase) FROM utf8_binary):string collate 
UTF8_LCASE,TRIM(LEADING collate(AAa, utf8_binary) FROM utf8_lcase):string 
collate UTF8_BINARY>
 -- !query output
        
        
@@ -1047,7 +1047,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select RTRIM(s, utf8_binary) from t1
 -- !query schema
-struct<TRIM(TRAILING s FROM utf8_binary):string>
+struct<TRIM(TRAILING s FROM utf8_binary):string collate UTF8_BINARY>
 -- !query output
 
 
@@ -1076,7 +1076,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING COLLATE 
UTF8_BINARY\""
   }
 }
 
@@ -1084,7 +1084,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select RTRIM(utf8_binary, utf8_lcase collate utf8_binary) from t1
 -- !query schema
-struct<TRIM(TRAILING utf8_binary FROM collate(utf8_lcase, utf8_binary)):string>
+struct<TRIM(TRAILING utf8_binary FROM collate(utf8_lcase, utf8_binary)):string 
collate UTF8_BINARY>
 -- !query output
 
 
@@ -1176,7 +1176,7 @@ sitTing
 -- !query
 select RTRIM('ABc', utf8_binary), RTRIM('ABc', utf8_lcase) from t1
 -- !query schema
-struct<TRIM(TRAILING ABc FROM utf8_binary):string,TRIM(TRAILING 'ABc' collate 
UTF8_LCASE FROM utf8_lcase):string collate UTF8_LCASE>
+struct<TRIM(TRAILING ABc FROM utf8_binary):string collate 
UTF8_BINARY,TRIM(TRAILING 'ABc' collate UTF8_LCASE FROM utf8_lcase):string 
collate UTF8_LCASE>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -1198,7 +1198,7 @@ kitten    sitTing
 -- !query
 select RTRIM('ABc' collate utf8_lcase, utf8_binary), RTRIM('AAa' collate 
utf8_binary, utf8_lcase) from t1
 -- !query schema
-struct<TRIM(TRAILING collate(ABc, utf8_lcase) FROM utf8_binary):string collate 
UTF8_LCASE,TRIM(TRAILING collate(AAa, utf8_binary) FROM utf8_lcase):string>
+struct<TRIM(TRAILING collate(ABc, utf8_lcase) FROM utf8_binary):string collate 
UTF8_LCASE,TRIM(TRAILING collate(AAa, utf8_binary) FROM utf8_lcase):string 
collate UTF8_BINARY>
 -- !query output
        
        
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/collations-string-functions.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/collations-string-functions.sql.out
index ed4f6b500a..11ace58ee2 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/collations-string-functions.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/collations-string-functions.sql.out
@@ -221,7 +221,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -336,7 +336,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -344,7 +344,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select split_part(utf8_binary, utf8_lcase collate utf8_binary, 2) from t1
 -- !query schema
-struct<split_part(utf8_binary, collate(utf8_lcase, utf8_binary), 2):string>
+struct<split_part(utf8_binary, collate(utf8_lcase, utf8_binary), 2):string 
collate UTF8_BINARY>
 -- !query output
 
 
@@ -400,7 +400,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
 -- !query
 select split_part(utf8_binary, 'a', 3), split_part(utf8_lcase, 'a', 3) from t1
 -- !query schema
-struct<split_part(utf8_binary, a, 3):string,split_part(utf8_lcase, 'a' collate 
UTF8_LCASE, 3):string collate UTF8_LCASE>
+struct<split_part(utf8_binary, a, 3):string collate 
UTF8_BINARY,split_part(utf8_lcase, 'a' collate UTF8_LCASE, 3):string collate 
UTF8_LCASE>
 -- !query output
        
        
@@ -422,7 +422,7 @@ A
 -- !query
 select split_part(utf8_binary, 'a' collate utf8_lcase, 3), 
split_part(utf8_lcase, 'a' collate utf8_binary, 3) from t1
 -- !query schema
-struct<split_part(utf8_binary, collate(a, utf8_lcase), 3):string collate 
UTF8_LCASE,split_part(utf8_lcase, collate(a, utf8_binary), 3):string>
+struct<split_part(utf8_binary, collate(a, utf8_lcase), 3):string collate 
UTF8_LCASE,split_part(utf8_lcase, collate(a, utf8_binary), 3):string collate 
UTF8_BINARY>
 -- !query output
        
        
@@ -444,7 +444,7 @@ struct<split_part(utf8_binary, collate(a, utf8_lcase), 
3):string collate UTF8_LC
 -- !query
 select split_part(utf8_binary, 'a ' collate utf8_lcase_rtrim, 3), 
split_part(utf8_lcase, 'a' collate utf8_binary, 3) from t1
 -- !query schema
-struct<split_part(utf8_binary, collate(a , utf8_lcase_rtrim), 3):string 
collate UTF8_LCASE_RTRIM,split_part(utf8_lcase, collate(a, utf8_binary), 
3):string>
+struct<split_part(utf8_binary, collate(a , utf8_lcase_rtrim), 3):string 
collate UTF8_LCASE_RTRIM,split_part(utf8_lcase, collate(a, utf8_binary), 
3):string collate UTF8_BINARY>
 -- !query output
        
        
@@ -517,7 +517,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -712,7 +712,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -720,7 +720,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select substring_index(utf8_binary, utf8_lcase collate utf8_binary, 2) from t1
 -- !query schema
-struct<substring_index(utf8_binary, collate(utf8_lcase, utf8_binary), 
2):string>
+struct<substring_index(utf8_binary, collate(utf8_lcase, utf8_binary), 
2):string collate UTF8_BINARY>
 -- !query output
 Hello, world! Nice day.
 Something else. Nothing here.
@@ -790,7 +790,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
 -- !query
 select substring_index(utf8_binary, 'a', 2), substring_index(utf8_lcase, 'a', 
2) from t1
 -- !query schema
-struct<substring_index(utf8_binary, a, 2):string,substring_index(utf8_lcase, 
'a' collate UTF8_LCASE, 2):string collate UTF8_LCASE>
+struct<substring_index(utf8_binary, a, 2):string collate 
UTF8_BINARY,substring_index(utf8_lcase, 'a' collate UTF8_LCASE, 2):string 
collate UTF8_LCASE>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -812,7 +812,7 @@ kitten      sitTing
 -- !query
 select substring_index(utf8_binary, 'AaAA' collate utf8_lcase, 2), 
substring_index(utf8_lcase, 'AAa' collate utf8_binary, 2) from t1
 -- !query schema
-struct<substring_index(utf8_binary, collate(AaAA, utf8_lcase), 2):string 
collate UTF8_LCASE,substring_index(utf8_lcase, collate(AAa, utf8_binary), 
2):string>
+struct<substring_index(utf8_binary, collate(AaAA, utf8_lcase), 2):string 
collate UTF8_LCASE,substring_index(utf8_lcase, collate(AAa, utf8_binary), 
2):string collate UTF8_BINARY>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -834,7 +834,7 @@ kitten      sitTing
 -- !query
 select substring_index(utf8_binary, 'AaAA ' collate utf8_lcase_rtrim, 2), 
substring_index(utf8_lcase, 'AAa' collate utf8_binary, 2) from t1
 -- !query schema
-struct<substring_index(utf8_binary, collate(AaAA , utf8_lcase_rtrim), 
2):string collate UTF8_LCASE_RTRIM,substring_index(utf8_lcase, collate(AAa, 
utf8_binary), 2):string>
+struct<substring_index(utf8_binary, collate(AaAA , utf8_lcase_rtrim), 
2):string collate UTF8_LCASE_RTRIM,substring_index(utf8_lcase, collate(AAa, 
utf8_binary), 2):string collate UTF8_BINARY>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -907,7 +907,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -1080,7 +1080,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -1249,7 +1249,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -1444,7 +1444,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING COLLATE 
UTF8_BINARY\""
   }
 }
 
@@ -1500,7 +1500,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
 -- !query
 select translate(utf8_lcase, 'aaAaaAaA', '12345'), translate(utf8_binary, 
'aaAaaAaA', '12345') from t1
 -- !query schema
-struct<translate(utf8_lcase, 'aaAaaAaA' collate UTF8_LCASE, '12345' collate 
UTF8_LCASE):string collate UTF8_LCASE,translate(utf8_binary, aaAaaAaA, 
12345):string>
+struct<translate(utf8_lcase, 'aaAaaAaA' collate UTF8_LCASE, '12345' collate 
UTF8_LCASE):string collate UTF8_LCASE,translate(utf8_binary, aaAaaAaA, 
12345):string collate UTF8_BINARY>
 -- !query output
 1      bb3b33b3
 11111111       11313313
@@ -1522,7 +1522,7 @@ sitTing   kitten
 -- !query
 select translate(utf8_lcase, 'aBc' collate utf8_binary, '12345'), 
translate(utf8_binary, 'aBc' collate utf8_lcase, '12345') from t1
 -- !query schema
-struct<translate(utf8_lcase, collate(aBc, utf8_binary), 
12345):string,translate(utf8_binary, collate(aBc, utf8_lcase), '12345' collate 
UTF8_LCASE):string collate UTF8_LCASE>
+struct<translate(utf8_lcase, collate(aBc, utf8_binary), 12345):string collate 
UTF8_BINARY,translate(utf8_binary, collate(aBc, utf8_lcase), '12345' collate 
UTF8_LCASE):string collate UTF8_LCASE>
 -- !query output
 1      22121121
 11A11A1A       11111111
@@ -1617,7 +1617,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -1625,7 +1625,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select replace(utf8_binary, utf8_lcase collate utf8_binary, 'abc') from t1
 -- !query schema
-struct<replace(utf8_binary, collate(utf8_lcase, utf8_binary), abc):string>
+struct<replace(utf8_binary, collate(utf8_lcase, utf8_binary), abc):string 
collate UTF8_BINARY>
 -- !query output
 Spark
 aaAaAAaA
@@ -1695,7 +1695,7 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
 -- !query
 select replace(utf8_binary, 'aaAaaAaA', 'abc'), replace(utf8_lcase, 
'aaAaaAaA', 'abc') from t1
 -- !query schema
-struct<replace(utf8_binary, aaAaaAaA, abc):string,replace(utf8_lcase, 
'aaAaaAaA' collate UTF8_LCASE, 'abc' collate UTF8_LCASE):string collate 
UTF8_LCASE>
+struct<replace(utf8_binary, aaAaaAaA, abc):string collate 
UTF8_BINARY,replace(utf8_lcase, 'aaAaaAaA' collate UTF8_LCASE, 'abc' collate 
UTF8_LCASE):string collate UTF8_LCASE>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -1717,7 +1717,7 @@ kitten    sitTing
 -- !query
 select replace(utf8_binary, 'aaAaaAaA' collate utf8_lcase, 'abc'), 
replace(utf8_lcase, 'aaAaaAaA' collate utf8_binary, 'abc') from t1
 -- !query schema
-struct<replace(utf8_binary, collate(aaAaaAaA, utf8_lcase), 'abc' collate 
UTF8_LCASE):string collate UTF8_LCASE,replace(utf8_lcase, collate(aaAaaAaA, 
utf8_binary), abc):string>
+struct<replace(utf8_binary, collate(aaAaaAaA, utf8_lcase), 'abc' collate 
UTF8_LCASE):string collate UTF8_LCASE,replace(utf8_lcase, collate(aaAaaAaA, 
utf8_binary), abc):string collate UTF8_BINARY>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -1739,7 +1739,7 @@ kitten    sitTing
 -- !query
 select replace(utf8_binary, 'aaAaaAaA ' collate utf8_lcase_rtrim, 'abc'), 
replace(utf8_lcase, 'aaAaaAaA' collate utf8_binary, 'abc') from t1
 -- !query schema
-struct<replace(utf8_binary, collate(aaAaaAaA , utf8_lcase_rtrim), 'abc' 
collate UTF8_LCASE_RTRIM):string collate UTF8_LCASE_RTRIM,replace(utf8_lcase, 
collate(aaAaaAaA, utf8_binary), abc):string>
+struct<replace(utf8_binary, collate(aaAaaAaA , utf8_lcase_rtrim), 'abc' 
collate UTF8_LCASE_RTRIM):string collate UTF8_LCASE_RTRIM,replace(utf8_lcase, 
collate(aaAaaAaA, utf8_binary), abc):string collate UTF8_BINARY>
 -- !query output
 Hello, world! Nice day.        Hello, world! Nice day.
 Something else. Nothing here.  Something else. Nothing here.
@@ -1812,7 +1812,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -1956,7 +1956,7 @@ true      true
 -- !query
 select repeat(utf8_binary, 3), repeat(utf8_lcase, 2) from t1
 -- !query schema
-struct<repeat(utf8_binary, 3):string,repeat(utf8_lcase, 2):string collate 
UTF8_LCASE>
+struct<repeat(utf8_binary, 3):string collate UTF8_BINARY,repeat(utf8_lcase, 
2):string collate UTF8_LCASE>
 -- !query output
 Hello, world! Nice day.Hello, world! Nice day.Hello, world! Nice day.  Hello, 
world! Nice day.Hello, world! Nice day.
 Something else. Nothing here.Something else. Nothing here.Something else. 
Nothing here.        Something else. Nothing here.Something else. Nothing here.
@@ -1978,7 +1978,7 @@ kittenkittenkitten        sitTingsitTing
 -- !query
 select repeat(utf8_binary collate utf8_lcase, 3), repeat(utf8_lcase collate 
utf8_binary, 2) from t1
 -- !query schema
-struct<repeat(collate(utf8_binary, utf8_lcase), 3):string collate 
UTF8_LCASE,repeat(collate(utf8_lcase, utf8_binary), 2):string>
+struct<repeat(collate(utf8_binary, utf8_lcase), 3):string collate 
UTF8_LCASE,repeat(collate(utf8_lcase, utf8_binary), 2):string collate 
UTF8_BINARY>
 -- !query output
 Hello, world! Nice day.Hello, world! Nice day.Hello, world! Nice day.  Hello, 
world! Nice day.Hello, world! Nice day.
 Something else. Nothing here.Something else. Nothing here.Something else. 
Nothing here.        Something else. Nothing here.Something else. Nothing here.
@@ -2009,7 +2009,7 @@ a
 -- !query
 select sentences(utf8_binary), sentences(utf8_lcase) from t1
 -- !query schema
-struct<sentences(utf8_binary, , ):array<array<string>>,sentences(utf8_lcase, , 
):array<array<string collate UTF8_LCASE>>>
+struct<sentences(utf8_binary, , ):array<array<string collate 
UTF8_BINARY>>,sentences(utf8_lcase, , ):array<array<string collate UTF8_LCASE>>>
 -- !query output
 [["Hello","world"],["Nice","day"]]     [["Hello","world"],["Nice","day"]]
 [["Something","else"],["Nothing","here"]]      
[["Something","else"],["Nothing","here"]]
@@ -2031,7 +2031,7 @@ struct<sentences(utf8_binary, , 
):array<array<string>>,sentences(utf8_lcase, , )
 -- !query
 select sentences(utf8_binary collate utf8_lcase), sentences(utf8_lcase collate 
utf8_binary) from t1
 -- !query schema
-struct<sentences(collate(utf8_binary, utf8_lcase), , ):array<array<string 
collate UTF8_LCASE>>,sentences(collate(utf8_lcase, utf8_binary), , 
):array<array<string>>>
+struct<sentences(collate(utf8_binary, utf8_lcase), , ):array<array<string 
collate UTF8_LCASE>>,sentences(collate(utf8_lcase, utf8_binary), , 
):array<array<string collate UTF8_BINARY>>>
 -- !query output
 [["Hello","world"],["Nice","day"]]     [["Hello","world"],["Nice","day"]]
 [["Something","else"],["Nothing","here"]]      
[["Something","else"],["Nothing","here"]]
@@ -2053,7 +2053,7 @@ struct<sentences(collate(utf8_binary, utf8_lcase), , 
):array<array<string collat
 -- !query
 select upper(utf8_binary), upper(utf8_lcase) from t1
 -- !query schema
-struct<upper(utf8_binary):string,upper(utf8_lcase):string collate UTF8_LCASE>
+struct<upper(utf8_binary):string collate UTF8_BINARY,upper(utf8_lcase):string 
collate UTF8_LCASE>
 -- !query output
 AAAAAAAA       AAAAAAAA
 AAAAAAAA       AAAAAAAA
@@ -2075,7 +2075,7 @@ SPARK     SQL
 -- !query
 select upper(utf8_binary collate utf8_lcase), upper(utf8_lcase collate 
utf8_binary) from t1
 -- !query schema
-struct<upper(collate(utf8_binary, utf8_lcase)):string collate 
UTF8_LCASE,upper(collate(utf8_lcase, utf8_binary)):string>
+struct<upper(collate(utf8_binary, utf8_lcase)):string collate 
UTF8_LCASE,upper(collate(utf8_lcase, utf8_binary)):string collate UTF8_BINARY>
 -- !query output
 AAAAAAAA       AAAAAAAA
 AAAAAAAA       AAAAAAAA
@@ -2097,7 +2097,7 @@ SPARK     SQL
 -- !query
 select lower(utf8_binary), lower(utf8_lcase) from t1
 -- !query schema
-struct<lower(utf8_binary):string,lower(utf8_lcase):string collate UTF8_LCASE>
+struct<lower(utf8_binary):string collate UTF8_BINARY,lower(utf8_lcase):string 
collate UTF8_LCASE>
 -- !query output
 aaaaaaaa       aaaaaaaa
 aaaaaaaa       aaaaaaaa
@@ -2119,7 +2119,7 @@ spark     sql
 -- !query
 select lower(utf8_binary collate utf8_lcase), lower(utf8_lcase collate 
utf8_binary) from t1
 -- !query schema
-struct<lower(collate(utf8_binary, utf8_lcase)):string collate 
UTF8_LCASE,lower(collate(utf8_lcase, utf8_binary)):string>
+struct<lower(collate(utf8_binary, utf8_lcase)):string collate 
UTF8_LCASE,lower(collate(utf8_lcase, utf8_binary)):string collate UTF8_BINARY>
 -- !query output
 aaaaaaaa       aaaaaaaa
 aaaaaaaa       aaaaaaaa
@@ -2141,7 +2141,7 @@ spark     sql
 -- !query
 select initcap(utf8_binary), initcap(utf8_lcase) from t1
 -- !query schema
-struct<initcap(utf8_binary):string,initcap(utf8_lcase):string collate 
UTF8_LCASE>
+struct<initcap(utf8_binary):string collate 
UTF8_BINARY,initcap(utf8_lcase):string collate UTF8_LCASE>
 -- !query output
 Aaaaaaaa       Aaaaaaaa
 Aaaaaaaa       Aaaaaaaa
@@ -2163,7 +2163,7 @@ Spark     Sql
 -- !query
 select initcap(utf8_binary collate utf8_lcase), initcap(utf8_lcase collate 
utf8_binary) from t1
 -- !query schema
-struct<initcap(collate(utf8_binary, utf8_lcase)):string collate 
UTF8_LCASE,initcap(collate(utf8_lcase, utf8_binary)):string>
+struct<initcap(collate(utf8_binary, utf8_lcase)):string collate 
UTF8_LCASE,initcap(collate(utf8_lcase, utf8_binary)):string collate UTF8_BINARY>
 -- !query output
 Aaaaaaaa       Aaaaaaaa
 Aaaaaaaa       Aaaaaaaa
@@ -2236,7 +2236,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
@@ -2244,7 +2244,7 @@ org.apache.spark.sql.AnalysisException
 -- !query
 select overlay(utf8_binary, utf8_lcase collate utf8_binary, 2) from t1
 -- !query schema
-struct<overlay(utf8_binary, collate(utf8_lcase, utf8_binary), 2, -1):string>
+struct<overlay(utf8_binary, collate(utf8_lcase, utf8_binary), 2, -1):string 
collate UTF8_BINARY>
 -- !query output
 HHello, world! Nice day.
 SSQLk
@@ -2288,7 +2288,7 @@ ksitTing
 -- !query
 select overlay(utf8_binary, 'a', 2), overlay(utf8_lcase, 'a', 2) from t1
 -- !query schema
-struct<overlay(utf8_binary, a, 2, -1):string,overlay(utf8_lcase, 'a' collate 
UTF8_LCASE, 2, -1):string collate UTF8_LCASE>
+struct<overlay(utf8_binary, a, 2, -1):string collate 
UTF8_BINARY,overlay(utf8_lcase, 'a' collate UTF8_LCASE, 2, -1):string collate 
UTF8_LCASE>
 -- !query output
 Hallo, world! Nice day.        Hallo, world! Nice day.
 Saark  SaL
@@ -2310,7 +2310,7 @@ katten    satTing
 -- !query
 select overlay(utf8_binary, 'AaAA' collate utf8_lcase, 2), overlay(utf8_lcase, 
'AAa' collate utf8_binary, 2) from t1
 -- !query schema
-struct<overlay(utf8_binary, collate(AaAA, utf8_lcase), 2, -1):string collate 
UTF8_LCASE,overlay(utf8_lcase, collate(AAa, utf8_binary), 2, -1):string>
+struct<overlay(utf8_binary, collate(AaAA, utf8_lcase), 2, -1):string collate 
UTF8_LCASE,overlay(utf8_lcase, collate(AAa, utf8_binary), 2, -1):string collate 
UTF8_BINARY>
 -- !query output
 HAaAA, world! Nice day.        HAAao, world! Nice day.
 SAaAA  SAAa
@@ -2332,7 +2332,7 @@ kAaAAn    sAAaing
 -- !query
 select format_string(format, utf8_binary, utf8_lcase) from t3
 -- !query schema
-struct<format_string(format, utf8_binary, utf8_lcase):string>
+struct<format_string(format, utf8_binary, utf8_lcase):string collate 
UTF8_BINARY>
 -- !query output
 abCdEabCdE
 
@@ -2340,7 +2340,7 @@ abCdEabCdE
 -- !query
 select format_string(format collate utf8_lcase, utf8_lcase, utf8_binary 
collate utf8_lcase, 3), format_string(format, utf8_lcase collate utf8_binary, 
utf8_binary) from t3
 -- !query schema
-struct<format_string(collate(format, utf8_lcase), utf8_lcase, 
collate(utf8_binary, utf8_lcase), 3):string collate 
UTF8_LCASE,format_string(format, collate(utf8_lcase, utf8_binary), 
utf8_binary):string>
+struct<format_string(collate(format, utf8_lcase), utf8_lcase, 
collate(utf8_binary, utf8_lcase), 3):string collate 
UTF8_LCASE,format_string(format, collate(utf8_lcase, utf8_binary), 
utf8_binary):string collate UTF8_BINARY>
 -- !query output
 abCdEabCdE     abCdEabCdE
 
@@ -2348,7 +2348,7 @@ abCdEabCdE        abCdEabCdE
 -- !query
 select format_string(format, utf8_binary, utf8_lcase) from t3
 -- !query schema
-struct<format_string(format, utf8_binary, utf8_lcase):string>
+struct<format_string(format, utf8_binary, utf8_lcase):string collate 
UTF8_BINARY>
 -- !query output
 abCdEabCdE
 
@@ -2510,7 +2510,7 @@ struct<octet_length(collate(utf8_binary, 
utf8_lcase_rtrim)):int,octet_length(col
 -- !query
 select substr(utf8_binary, 2, 2), substr(utf8_lcase, 2, 2) from t1
 -- !query schema
-struct<substr(utf8_binary, 2, 2):string,substr(utf8_lcase, 2, 2):string 
collate UTF8_LCASE>
+struct<substr(utf8_binary, 2, 2):string collate UTF8_BINARY,substr(utf8_lcase, 
2, 2):string collate UTF8_LCASE>
 -- !query output
 aA     aA
 aA     aA
@@ -2532,7 +2532,7 @@ pa        QL
 -- !query
 select substr(utf8_binary collate utf8_lcase, 2, 2), substr(utf8_lcase collate 
utf8_binary, 2, 2) from t1
 -- !query schema
-struct<substr(collate(utf8_binary, utf8_lcase), 2, 2):string collate 
UTF8_LCASE,substr(collate(utf8_lcase, utf8_binary), 2, 2):string>
+struct<substr(collate(utf8_binary, utf8_lcase), 2, 2):string collate 
UTF8_LCASE,substr(collate(utf8_lcase, utf8_binary), 2, 2):string collate 
UTF8_BINARY>
 -- !query output
 aA     aA
 aA     aA
@@ -2554,7 +2554,7 @@ pa        QL
 -- !query
 select right(utf8_binary, 2), right(utf8_lcase, 2) from t1
 -- !query schema
-struct<right(utf8_binary, 2):string,right(utf8_lcase, 2):string collate 
UTF8_LCASE>
+struct<right(utf8_binary, 2):string collate UTF8_BINARY,right(utf8_lcase, 
2):string collate UTF8_LCASE>
 -- !query output
 aA     aA
 aA     aA
@@ -2576,7 +2576,7 @@ y.        y.
 -- !query
 select right(utf8_binary collate utf8_lcase, 2), right(utf8_lcase collate 
utf8_binary, 2) from t1
 -- !query schema
-struct<right(collate(utf8_binary, utf8_lcase), 2):string collate 
UTF8_LCASE,right(collate(utf8_lcase, utf8_binary), 2):string>
+struct<right(collate(utf8_binary, utf8_lcase), 2):string collate 
UTF8_LCASE,right(collate(utf8_lcase, utf8_binary), 2):string collate 
UTF8_BINARY>
 -- !query output
 aA     aA
 aA     aA
@@ -2598,7 +2598,7 @@ y.        y.
 -- !query
 select left(utf8_binary, '2' collate utf8_lcase), left(utf8_lcase, 2) from t1
 -- !query schema
-struct<left(utf8_binary, collate(2, utf8_lcase)):string,left(utf8_lcase, 
2):string collate UTF8_LCASE>
+struct<left(utf8_binary, collate(2, utf8_lcase)):string collate 
UTF8_BINARY,left(utf8_lcase, 2):string collate UTF8_LCASE>
 -- !query output
 He     He
 So     So
@@ -2620,7 +2620,7 @@ ki        si
 -- !query
 select left(utf8_binary collate utf8_lcase, 2), left(utf8_lcase collate 
utf8_binary, 2) from t1
 -- !query schema
-struct<left(collate(utf8_binary, utf8_lcase), 2):string collate 
UTF8_LCASE,left(collate(utf8_lcase, utf8_binary), 2):string>
+struct<left(collate(utf8_binary, utf8_lcase), 2):string collate 
UTF8_LCASE,left(collate(utf8_lcase, utf8_binary), 2):string collate UTF8_BINARY>
 -- !query output
 He     He
 So     So
@@ -2693,7 +2693,7 @@ org.apache.spark.sql.AnalysisException
   "errorClass" : "COLLATION_MISMATCH.EXPLICIT",
   "sqlState" : "42P21",
   "messageParameters" : {
-    "explicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+    "explicitTypes" : "\"STRING COLLATE UTF8_BINARY\", \"STRING COLLATE 
UTF8_LCASE\""
   }
 }
 
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/count.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/count.sql.out
index 714c95cdd3..82a33f1cb4 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/count.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/count.sql.out
@@ -207,8 +207,9 @@ struct<>
 -- !query output
 org.apache.spark.sql.AnalysisException
 {
-  "errorClass" : "_LEGACY_ERROR_TEMP_1021",
+  "errorClass" : "INVALID_USAGE_OF_STAR_WITH_TABLE_IDENTIFIER_IN_COUNT",
+  "sqlState" : "42000",
   "messageParameters" : {
-    "targetString" : "testData"
+    "tableName" : "`testData`"
   }
 }
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/cte-recursion.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/cte-recursion.sql.out
index 536fc6c4ea..9626a6a797 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/cte-recursion.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/cte-recursion.sql.out
@@ -14,7 +14,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`r`"
+    "relationName" : "`r`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -901,14 +902,6 @@ struct<level:int>
 9
 
 
--- !query
-SET spark.sql.legacy.ctePrecedencePolicy=EXCEPTION
--- !query schema
-struct<key:string,value:string>
--- !query output
-spark.sql.legacy.ctePrecedencePolicy   EXCEPTION
-
-
 -- !query
 WITH RECURSIVE r(level, data) AS (
   VALUES (0, 0)
@@ -1997,6 +1990,23 @@ org.apache.spark.SparkException
 }
 
 
+-- !query
+WITH RECURSIVE t1(n, str, ts) AS (
+    SELECT 1, '2024-01-15 00:00:00' ,CAST('2024-01-15 00:00:00' AS TIMESTAMP)
+    UNION ALL
+    SELECT n + 1, str, str FROM t1 WHERE n < 5
+)
+SELECT * FROM t1
+-- !query schema
+struct<n:int,str:string,ts:timestamp>
+-- !query output
+1      2024-01-15 00:00:00     2024-01-15 00:00:00
+2      2024-01-15 00:00:00     2024-01-15 00:00:00
+3      2024-01-15 00:00:00     2024-01-15 00:00:00
+4      2024-01-15 00:00:00     2024-01-15 00:00:00
+5      2024-01-15 00:00:00     2024-01-15 00:00:00
+
+
 -- !query
 WITH RECURSIVE t1(n) AS (
     SELECT 1
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/cte.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/cte.sql.out
index 8e07b9081f..8ad7c5bec4 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/cte.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/cte.sql.out
@@ -41,7 +41,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`s`"
+    "relationName" : "`s`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -64,7 +65,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`r`"
+    "relationName" : "`r`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -106,7 +108,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`s2`"
+    "relationName" : "`s2`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -240,7 +243,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`non_existing_table`"
+    "relationName" : "`non_existing_table`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -409,7 +413,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`r2`"
+    "relationName" : "`r2`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -458,7 +463,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`q`"
+    "relationName" : "`q`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -576,7 +582,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`va`"
+    "relationName" : "`va`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -598,7 +605,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`cte`"
+    "relationName" : "`cte`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -646,7 +654,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`cte`"
+    "relationName" : "`cte`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -792,6 +801,27 @@ struct<col1:timestamp>
 
 
 
+-- !query
+WITH cte AS (SELECT 1 AS id, 'test' AS COLNAME),
+     cte2 AS (SELECT id, COLNAME, colname FROM cte)
+SELECT * FROM cte2 a JOIN cte2 b ON (a.id = b.id)
+-- !query schema
+struct<id:int,COLNAME:string,colname:string,id:int,COLNAME:string,colname:string>
+-- !query output
+1      test    test    1       test    test
+
+
+-- !query
+WITH cte AS (SELECT 1 AS id, 'test' AS COLNAME),
+     cte2 AS (SELECT id, COLNAME, colname FROM cte),
+     cte3 AS (SELECT id, COLNAME, colname FROM cte2)
+SELECT * FROM cte2 a JOIN cte2 b ON (a.id = b.id)
+-- !query schema
+struct<id:int,COLNAME:string,colname:string,id:int,COLNAME:string,colname:string>
+-- !query output
+1      test    test    1       test    test
+
+
 -- !query
 DROP VIEW IF EXISTS t
 -- !query schema
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/grouping_set.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/grouping_set.sql.out
index 21e70c6353..c568d6677d 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/grouping_set.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/grouping_set.sql.out
@@ -198,15 +198,271 @@ struct<>
 -- !query output
 org.apache.spark.sql.catalyst.ExtendedAnalysisException
 {
-  "errorClass" : "MISSING_AGGREGATION",
+  "errorClass" : "MISSING_GROUP_BY",
+  "sqlState" : "42803",
+  "queryContext" : [ {
+    "objectType" : "",
+    "objectName" : "",
+    "startIndex" : 48,
+    "stopIndex" : 74,
+    "fragment" : "GROUP BY GROUPING SETS (())"
+  } ]
+}
+
+
+-- !query
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) WHERE k > 100 GROUP BY 
GROUPING SETS (())
+-- !query schema
+struct<c:bigint>
+-- !query output
+0
+
+
+-- !query
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) WHERE k > 100
+-- !query schema
+struct<c:bigint>
+-- !query output
+0
+
+
+-- !query
+SELECT count(*) AS c, grouping_id() AS g
+FROM VALUES (1), (2), (3) AS t(k) WHERE k > 100 GROUP BY GROUPING SETS (())
+-- !query schema
+struct<c:bigint,g:bigint>
+-- !query output
+0      0
+
+
+-- !query
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
(())
+-- !query schema
+struct<c:bigint>
+-- !query output
+3
+
+
+-- !query
+SELECT sum(v) AS total, avg(v) AS mean, max(v) AS hi, count(*) AS c
+FROM VALUES (10), (20), (30) AS t(v) WHERE v > 100 GROUP BY GROUPING SETS (())
+-- !query schema
+struct<total:bigint,mean:double,hi:int,c:bigint>
+-- !query output
+NULL   NULL    NULL    0
+
+
+-- !query
+SELECT sum(v) AS total, avg(v) AS mean, max(v) AS hi, count(*) AS c
+FROM VALUES (10), (20), (30) AS t(v) WHERE v > 100
+-- !query schema
+struct<total:bigint,mean:double,hi:int,c:bigint>
+-- !query output
+NULL   NULL    NULL    0
+
+
+-- !query
+SELECT sum(v) AS total, avg(v) AS mean, max(v) AS hi, count(*) AS c
+FROM VALUES (10), (20), (30) AS t(v) GROUP BY GROUPING SETS (())
+-- !query schema
+struct<total:bigint,mean:double,hi:int,c:bigint>
+-- !query output
+60     20.0    30      3
+
+
+-- !query
+SELECT v, count(*) AS c FROM VALUES (10), (20), (30) AS t(v) WHERE v > 100 
GROUP BY v
+-- !query schema
+struct<v:int,c:bigint>
+-- !query output
+
+
+
+-- !query
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
(()) HAVING grouping_id() = 0
+-- !query schema
+struct<c:bigint>
+-- !query output
+3
+
+
+-- !query
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
(()) ORDER BY grouping_id()
+-- !query schema
+struct<c:bigint>
+-- !query output
+3
+
+
+-- !query
+SELECT grouping(k) FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
(())
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.AnalysisException
+{
+  "errorClass" : "GROUPING_COLUMN_MISMATCH",
   "sqlState" : "42803",
   "messageParameters" : {
-    "expression" : "\"c1\"",
-    "expressionAnyValue" : "\"any_value(c1)\""
+    "grouping" : "k#x",
+    "groupingColumns" : ""
   }
 }
 
 
+-- !query
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) HAVING grouping_id() = 0
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.AnalysisException
+{
+  "errorClass" : "UNSUPPORTED_GROUPING_EXPRESSION",
+  "sqlState" : "42K0E"
+}
+
+
+-- !query
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) ORDER BY grouping_id()
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.AnalysisException
+{
+  "errorClass" : "UNSUPPORTED_GROUPING_EXPRESSION",
+  "sqlState" : "42K0E"
+}
+
+
+-- !query
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) HAVING grouping(k) = 0
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.catalyst.ExtendedAnalysisException
+{
+  "errorClass" : "UNRESOLVED_COLUMN.WITH_SUGGESTION",
+  "sqlState" : "42703",
+  "messageParameters" : {
+    "objectName" : "`k`",
+    "proposal" : "`c`"
+  },
+  "queryContext" : [ {
+    "objectType" : "",
+    "objectName" : "",
+    "startIndex" : 72,
+    "stopIndex" : 72,
+    "fragment" : "k"
+  } ]
+}
+
+
+-- !query
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) ORDER BY grouping(k)
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.AnalysisException
+{
+  "errorClass" : "UNSUPPORTED_GROUPING_EXPRESSION",
+  "sqlState" : "42K0E"
+}
+
+
+-- !query
+SELECT count(*) AS c, grouping_id() AS g
+FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS ((), ())
+-- !query schema
+struct<c:bigint,g:bigint>
+-- !query output
+3      0
+3      0
+
+
+-- !query
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
((), ()) HAVING grouping_id() = 0
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.AnalysisException
+{
+  "errorClass" : "UNSUPPORTED_GROUPING_EXPRESSION",
+  "sqlState" : "42K0E"
+}
+
+
+-- !query
+SELECT count(*) AS c FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
((), ()) ORDER BY grouping_id()
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.AnalysisException
+{
+  "errorClass" : "UNSUPPORTED_GROUPING_EXPRESSION",
+  "sqlState" : "42K0E"
+}
+
+
+-- !query
+SELECT grouping(k) FROM VALUES (1), (2), (3) AS t(k) GROUP BY GROUPING SETS 
((), ())
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.AnalysisException
+{
+  "errorClass" : "GROUPING_COLUMN_MISMATCH",
+  "sqlState" : "42803",
+  "messageParameters" : {
+    "grouping" : "k#x",
+    "groupingColumns" : ""
+  }
+}
+
+
+-- !query
+CREATE TEMPORARY VIEW grouping_grand_total AS
+  SELECT * FROM VALUES (1, 10), (2, 20), (3, 30) AS t(k, v)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+SELECT sum(v) AS total, avg(v) AS mean, max(v) AS hi, count(*) AS c
+FROM grouping_grand_total WHERE k > 100 GROUP BY GROUPING SETS (())
+-- !query schema
+struct<total:bigint,mean:double,hi:int,c:bigint>
+-- !query output
+NULL   NULL    NULL    0
+
+
+-- !query
+SELECT sum(v) AS total, avg(v) AS mean, max(v) AS hi, count(*) AS c
+FROM grouping_grand_total GROUP BY GROUPING SETS (())
+-- !query schema
+struct<total:bigint,mean:double,hi:int,c:bigint>
+-- !query output
+60     20.0    30      3
+
+
+-- !query
+SELECT count(*) AS c, grouping_id() AS g
+FROM grouping_grand_total WHERE k > 100 GROUP BY GROUPING SETS (())
+-- !query schema
+struct<c:bigint,g:bigint>
+-- !query output
+0      0
+
+
+-- !query
+DROP VIEW grouping_grand_total
+-- !query schema
+struct<>
+-- !query output
+
+
+
 -- !query
 SELECT k1, k2, avg(v) FROM (VALUES (1,1,1),(2,2,2)) AS t(k1,k2,v) GROUP BY 
GROUPING SETS ((k1),(k1,k2),(k2,k1))
 -- !query schema
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/kllquantiles.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/kllquantiles.sql.out
index 863bded159..0b852ad241 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/kllquantiles.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/kllquantiles.sql.out
@@ -321,6 +321,194 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
 }
 
 
+-- !query
+SELECT
+  parity,
+  kll_sketch_get_n_bigint(kll_merge_agg_bigint(sketch_col)) AS total_count
+FROM (
+  SELECT
+    col1 % 2 AS parity,
+    kll_sketch_agg_bigint(col1) AS sketch_col
+  FROM t_int_1_5_through_7_11
+  GROUP BY col1 % 2
+) grouped_sketches
+GROUP BY parity
+HAVING kll_sketch_get_n_bigint(kll_merge_agg_bigint(sketch_col)) > 3
+-- !query schema
+struct<parity:int,total_count:bigint>
+-- !query output
+1      4
+
+
+-- !query
+SELECT kll_sketch_get_n_bigint(kll_merge_agg_bigint(sketch_col)) AS 
empty_merge_n
+FROM (
+  SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+  FROM t_int_1_5_through_7_11
+  WHERE col1 > 1000
+) empty_sketches
+-- !query schema
+struct<empty_merge_n:bigint>
+-- !query output
+0
+
+
+-- !query
+SELECT kll_sketch_get_n_float(kll_merge_agg_float(sketch_col)) AS empty_merge_n
+FROM (
+  SELECT kll_sketch_agg_float(col1) AS sketch_col
+  FROM t_float_1_5_through_7_11
+  WHERE col1 > 1000.0
+) empty_sketches
+-- !query schema
+struct<empty_merge_n:bigint>
+-- !query output
+0
+
+
+-- !query
+SELECT kll_sketch_get_n_double(kll_merge_agg_double(sketch_col)) AS 
empty_merge_n
+FROM (
+  SELECT kll_sketch_agg_double(col1) AS sketch_col
+  FROM t_double_1_5_through_7_11
+  WHERE col1 > 1000.0
+) empty_sketches
+-- !query schema
+struct<empty_merge_n:bigint>
+-- !query output
+0
+
+
+-- !query
+SELECT lower(kll_sketch_to_string_bigint(agg)) LIKE '%kll%' AS 
str_contains_kll,
+       abs(kll_sketch_get_quantile_bigint(agg, 0.5) - 4) < 1 AS 
median_close_to_4,
+       abs(kll_sketch_get_rank_bigint(agg, 3) - 0.4) < 0.1 AS 
rank3_close_to_0_4
+FROM (
+    SELECT kll_merge_agg_bigint(sketch_col) AS agg
+    FROM (
+        SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+        FROM t_int_1_5_through_7_11
+        UNION ALL
+        SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+        FROM t_short_1_5_through_7_11
+    ) sketches
+)
+-- !query schema
+struct<str_contains_kll:boolean,median_close_to_4:boolean,rank3_close_to_0_4:boolean>
+-- !query output
+true   true    true
+
+
+-- !query
+SELECT lower(kll_sketch_to_string_float(agg)) LIKE '%kll%' AS str_contains_kll,
+       abs(kll_sketch_get_quantile_float(agg, 0.5) - 5.5) < 1.0 AS 
median_close_to_5_5,
+       abs(kll_sketch_get_rank_float(agg, 5.0) - 0.35) < 0.15 AS 
rank5_close_to_0_35
+FROM (
+    SELECT kll_merge_agg_float(sketch_col) AS agg
+    FROM (
+        SELECT kll_sketch_agg_float(col1) AS sketch_col
+        FROM t_float_1_5_through_7_11
+        UNION ALL
+        SELECT kll_sketch_agg_float(col2) AS sketch_col
+        FROM t_float_1_5_through_7_11
+    ) sketches
+)
+-- !query schema
+struct<str_contains_kll:boolean,median_close_to_5_5:boolean,rank5_close_to_0_35:boolean>
+-- !query output
+true   true    true
+
+
+-- !query
+SELECT lower(kll_sketch_to_string_double(agg)) LIKE '%kll%' AS 
str_contains_kll,
+       abs(kll_sketch_get_quantile_double(agg, 0.5) - 6.0) < 1.0 AS 
median_close_to_6,
+       abs(kll_sketch_get_rank_double(agg, 5.0) - 0.35) < 0.15 AS 
rank5_close_to_0_35
+FROM (
+    SELECT kll_merge_agg_double(sketch_col) AS agg
+    FROM (
+        SELECT kll_sketch_agg_double(col1) AS sketch_col
+        FROM t_double_1_5_through_7_11
+        UNION ALL
+        SELECT kll_sketch_agg_double(col2) AS sketch_col
+        FROM t_float_1_5_through_7_11
+    ) sketches
+)
+-- !query schema
+struct<str_contains_kll:boolean,median_close_to_6:boolean,rank5_close_to_0_35:boolean>
+-- !query output
+true   true    true
+
+
+-- !query
+SELECT LENGTH(kll_sketch_to_string_bigint(kll_merge_agg_bigint(sketch_col, 
400))) > 0 AS merged_with_k
+FROM (
+    SELECT kll_sketch_agg_bigint(col1, 400) AS sketch_col
+    FROM t_long_1_5_through_7_11
+    UNION ALL
+    SELECT kll_sketch_agg_bigint(col2, 400) AS sketch_col
+    FROM t_byte_1_5_through_7_11
+) sketches
+-- !query schema
+struct<merged_with_k:boolean>
+-- !query output
+true
+
+
+-- !query
+SELECT LENGTH(kll_sketch_to_string_float(kll_merge_agg_float(sketch_col, 
300))) > 0 AS merged_with_k
+FROM (
+    SELECT kll_sketch_agg_float(col1, 300) AS sketch_col
+    FROM t_float_1_5_through_7_11
+) sketches
+-- !query schema
+struct<merged_with_k:boolean>
+-- !query output
+true
+
+
+-- !query
+SELECT LENGTH(kll_sketch_to_string_double(kll_merge_agg_double(sketch_col, 
500))) > 0 AS merged_with_k
+FROM (
+    SELECT kll_sketch_agg_double(col1, 500) AS sketch_col
+    FROM t_double_1_5_through_7_11
+) sketches
+-- !query schema
+struct<merged_with_k:boolean>
+-- !query output
+true
+
+
+-- !query
+SELECT abs(kll_sketch_get_quantile_bigint(agg_with_nulls, 0.5) -
+           kll_sketch_get_quantile_bigint(agg_without_nulls, 0.5)) < 1 AS 
medians_match
+FROM (
+    SELECT kll_merge_agg_bigint(sketch_col) AS agg_with_nulls
+    FROM (
+        SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+        FROM t_long_1_5_through_7_11
+        UNION ALL
+        SELECT CAST(NULL AS BINARY) AS sketch_col
+        UNION ALL
+        SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+        FROM t_byte_1_5_through_7_11
+    ) sketches_with_nulls
+) WITH_NULLS,
+(
+    SELECT kll_merge_agg_bigint(sketch_col) AS agg_without_nulls
+    FROM (
+        SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+        FROM t_long_1_5_through_7_11
+        UNION ALL
+        SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+        FROM t_byte_1_5_through_7_11
+    ) sketches_without_nulls
+) WITHOUT_NULLS
+-- !query schema
+struct<medians_match:boolean>
+-- !query output
+true
+
+
 -- !query
 SELECT abs(kll_sketch_get_quantile_bigint(agg_with_nulls, 0.5) - 
            kll_sketch_get_quantile_bigint(agg_without_nulls, 0.5)) < 1 AS 
medians_match,
@@ -837,8 +1025,7 @@ org.apache.spark.SparkRuntimeException
   "errorClass" : "KLL_SKETCH_INVALID_QUANTILE_RANGE",
   "sqlState" : "22003",
   "messageParameters" : {
-    "functionName" : "`kll_sketch_get_quantile_bigint`",
-    "quantile" : "-0.5D"
+    "functionName" : "`kll_sketch_get_quantile_bigint`"
   }
 }
 
@@ -857,8 +1044,7 @@ org.apache.spark.SparkRuntimeException
   "errorClass" : "KLL_SKETCH_INVALID_QUANTILE_RANGE",
   "sqlState" : "22003",
   "messageParameters" : {
-    "functionName" : "`kll_sketch_get_quantile_bigint`",
-    "quantile" : "1.5D"
+    "functionName" : "`kll_sketch_get_quantile_bigint`"
   }
 }
 
@@ -877,8 +1063,7 @@ org.apache.spark.SparkRuntimeException
   "errorClass" : "KLL_SKETCH_INVALID_QUANTILE_RANGE",
   "sqlState" : "22003",
   "messageParameters" : {
-    "functionName" : "`kll_sketch_get_quantile_float`",
-    "quantile" : "-0.1D"
+    "functionName" : "`kll_sketch_get_quantile_float`"
   }
 }
 
@@ -894,11 +1079,10 @@ struct<>
 -- !query output
 org.apache.spark.SparkRuntimeException
 {
-  "errorClass" : "KLL_SKETCH_INVALID_INPUT",
+  "errorClass" : "KLL_INVALID_INPUT_SKETCH_BUFFER",
   "sqlState" : "22000",
   "messageParameters" : {
-    "functionName" : "`kll_sketch_get_rank_bigint`",
-    "reason" : "reqOffset: 40, reqLength: 56, (reqOff + reqLen): 96, 
allocSize: 60"
+    "function" : "`kll_sketch_get_rank_bigint`"
   }
 }
 
@@ -915,11 +1099,10 @@ struct<>
 -- !query output
 org.apache.spark.SparkRuntimeException
 {
-  "errorClass" : "KLL_SKETCH_INCOMPATIBLE_MERGE",
+  "errorClass" : "KLL_INVALID_INPUT_SKETCH_BUFFER",
   "sqlState" : "22000",
   "messageParameters" : {
-    "functionName" : "`kll_sketch_merge_bigint`",
-    "reason" : "reqOffset: 40, reqLength: 56, (reqOff + reqLen): 96, 
allocSize: 60"
+    "function" : "`kll_sketch_merge_bigint`"
   }
 }
 
@@ -931,11 +1114,10 @@ struct<>
 -- !query output
 org.apache.spark.SparkRuntimeException
 {
-  "errorClass" : "KLL_SKETCH_INVALID_INPUT",
+  "errorClass" : "KLL_INVALID_INPUT_SKETCH_BUFFER",
   "sqlState" : "22000",
   "messageParameters" : {
-    "functionName" : "`kll_sketch_get_quantile_bigint`",
-    "reason" : "Error combination of PreInts and SerVer: PreInts: 110, SerVer: 
111"
+    "function" : "`kll_sketch_get_quantile_bigint`"
   }
 }
 
@@ -1091,6 +1273,272 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
 }
 
 
+-- !query
+SELECT kll_merge_agg_bigint(sketch_col) AS wrong_type_merge
+FROM (
+  SELECT kll_sketch_agg_float(col1) AS sketch_col
+  FROM t_float_1_5_through_7_11
+) float_sketches
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.SparkRuntimeException
+{
+  "errorClass" : "KLL_INVALID_INPUT_SKETCH_BUFFER",
+  "sqlState" : "22000",
+  "messageParameters" : {
+    "function" : "`kll_merge_agg_bigint`"
+  }
+}
+
+
+-- !query
+SELECT kll_merge_agg_bigint(col1) AS merge_wrong_type
+FROM t_long_1_5_through_7_11
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.catalyst.ExtendedAnalysisException
+{
+  "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE",
+  "sqlState" : "42K09",
+  "messageParameters" : {
+    "inputSql" : "\"col1\"",
+    "inputType" : "\"BIGINT\"",
+    "paramIndex" : "first",
+    "requiredType" : "\"BINARY\"",
+    "sqlExpr" : "\"kll_merge_agg_bigint(col1)\""
+  },
+  "queryContext" : [ {
+    "objectType" : "",
+    "objectName" : "",
+    "startIndex" : 8,
+    "stopIndex" : 33,
+    "fragment" : "kll_merge_agg_bigint(col1)"
+  } ]
+}
+
+
+-- !query
+SELECT kll_merge_agg_float(col1) AS merge_wrong_type
+FROM t_float_1_5_through_7_11
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.catalyst.ExtendedAnalysisException
+{
+  "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE",
+  "sqlState" : "42K09",
+  "messageParameters" : {
+    "inputSql" : "\"col1\"",
+    "inputType" : "\"FLOAT\"",
+    "paramIndex" : "first",
+    "requiredType" : "\"BINARY\"",
+    "sqlExpr" : "\"kll_merge_agg_float(col1)\""
+  },
+  "queryContext" : [ {
+    "objectType" : "",
+    "objectName" : "",
+    "startIndex" : 8,
+    "stopIndex" : 32,
+    "fragment" : "kll_merge_agg_float(col1)"
+  } ]
+}
+
+
+-- !query
+SELECT kll_merge_agg_double(col1) AS merge_wrong_type
+FROM t_double_1_5_through_7_11
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.catalyst.ExtendedAnalysisException
+{
+  "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE",
+  "sqlState" : "42K09",
+  "messageParameters" : {
+    "inputSql" : "\"col1\"",
+    "inputType" : "\"DOUBLE\"",
+    "paramIndex" : "first",
+    "requiredType" : "\"BINARY\"",
+    "sqlExpr" : "\"kll_merge_agg_double(col1)\""
+  },
+  "queryContext" : [ {
+    "objectType" : "",
+    "objectName" : "",
+    "startIndex" : 8,
+    "stopIndex" : 33,
+    "fragment" : "kll_merge_agg_double(col1)"
+  } ]
+}
+
+
+-- !query
+SELECT kll_merge_agg_bigint(sketch_col) AS invalid_merge
+FROM (
+    SELECT CAST('not_a_sketch' AS BINARY) AS sketch_col
+) invalid_data
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.SparkRuntimeException
+{
+  "errorClass" : "KLL_INVALID_INPUT_SKETCH_BUFFER",
+  "sqlState" : "22000",
+  "messageParameters" : {
+    "function" : "`kll_merge_agg_bigint`"
+  }
+}
+
+
+-- !query
+SELECT kll_merge_agg_float(sketch_col) AS invalid_merge
+FROM (
+    SELECT X'deadbeef' AS sketch_col
+) invalid_data
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.SparkRuntimeException
+{
+  "errorClass" : "KLL_INVALID_INPUT_SKETCH_BUFFER",
+  "sqlState" : "22000",
+  "messageParameters" : {
+    "function" : "`kll_merge_agg_float`"
+  }
+}
+
+
+-- !query
+SELECT kll_merge_agg_double(sketch_col) AS invalid_merge
+FROM (
+    SELECT X'cafebabe' AS sketch_col
+) invalid_data
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.SparkRuntimeException
+{
+  "errorClass" : "KLL_INVALID_INPUT_SKETCH_BUFFER",
+  "sqlState" : "22000",
+  "messageParameters" : {
+    "function" : "`kll_merge_agg_double`"
+  }
+}
+
+
+-- !query
+SELECT kll_merge_agg_bigint(sketch_col, 7) AS k_too_small
+FROM (
+    SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+    FROM t_long_1_5_through_7_11
+) sketches
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.catalyst.ExtendedAnalysisException
+{
+  "errorClass" : "DATATYPE_MISMATCH.TYPE_CHECK_FAILURE_WITH_HINT",
+  "sqlState" : "42K09",
+  "messageParameters" : {
+    "hint" : "",
+    "msg" : "[KLL_SKETCH_K_OUT_OF_RANGE] For function `kll_merge_agg_bigint`, 
the k parameter must be between 8 and 65535 (inclusive), but got 7. SQLSTATE: 
22003",
+    "sqlExpr" : "\"kll_merge_agg_bigint(sketch_col, 7)\""
+  },
+  "queryContext" : [ {
+    "objectType" : "",
+    "objectName" : "",
+    "startIndex" : 8,
+    "stopIndex" : 42,
+    "fragment" : "kll_merge_agg_bigint(sketch_col, 7)"
+  } ]
+}
+
+
+-- !query
+SELECT kll_merge_agg_float(sketch_col, 65536) AS k_too_large
+FROM (
+    SELECT kll_sketch_agg_float(col1) AS sketch_col
+    FROM t_float_1_5_through_7_11
+) sketches
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.catalyst.ExtendedAnalysisException
+{
+  "errorClass" : "DATATYPE_MISMATCH.TYPE_CHECK_FAILURE_WITH_HINT",
+  "sqlState" : "42K09",
+  "messageParameters" : {
+    "hint" : "",
+    "msg" : "[KLL_SKETCH_K_OUT_OF_RANGE] For function `kll_merge_agg_float`, 
the k parameter must be between 8 and 65535 (inclusive), but got 65536. 
SQLSTATE: 22003",
+    "sqlExpr" : "\"kll_merge_agg_float(sketch_col, 65536)\""
+  },
+  "queryContext" : [ {
+    "objectType" : "",
+    "objectName" : "",
+    "startIndex" : 8,
+    "stopIndex" : 45,
+    "fragment" : "kll_merge_agg_float(sketch_col, 65536)"
+  } ]
+}
+
+
+-- !query
+SELECT kll_merge_agg_double(sketch_col, CAST(NULL AS INT)) AS k_is_null
+FROM (
+    SELECT kll_sketch_agg_double(col1) AS sketch_col
+    FROM t_double_1_5_through_7_11
+) sketches
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.catalyst.ExtendedAnalysisException
+{
+  "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_NULL",
+  "sqlState" : "42K09",
+  "messageParameters" : {
+    "exprName" : "k",
+    "sqlExpr" : "\"kll_merge_agg_double(sketch_col, CAST(NULL AS INT))\""
+  },
+  "queryContext" : [ {
+    "objectType" : "",
+    "objectName" : "",
+    "startIndex" : 8,
+    "stopIndex" : 58,
+    "fragment" : "kll_merge_agg_double(sketch_col, CAST(NULL AS INT))"
+  } ]
+}
+
+
+-- !query
+SELECT kll_merge_agg_bigint(sketch_col, CAST(RAND() * 100 AS INT) + 200) AS 
k_non_constant
+FROM (
+    SELECT kll_sketch_agg_bigint(col1) AS sketch_col
+    FROM t_long_1_5_through_7_11
+) sketches
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.catalyst.ExtendedAnalysisException
+{
+  "errorClass" : "DATATYPE_MISMATCH.NON_FOLDABLE_INPUT",
+  "sqlState" : "42K09",
+  "messageParameters" : {
+    "inputExpr" : "(CAST((rand() * CAST(100 AS DOUBLE)) AS INT) + 200)",
+    "inputName" : "k",
+    "inputType" : "int",
+    "sqlExpr" : "\"kll_merge_agg_bigint(sketch_col, (CAST((rand() * 100) AS 
INT) + 200))\""
+  },
+  "queryContext" : [ {
+    "objectType" : "",
+    "objectName" : "",
+    "startIndex" : 8,
+    "stopIndex" : 72,
+    "fragment" : "kll_merge_agg_bigint(sketch_col, CAST(RAND() * 100 AS INT) + 
200)"
+  } ]
+}
+
+
 -- !query
 SELECT kll_sketch_get_n_bigint(X'deadbeef') AS invalid_binary_bigint
 -- !query schema
@@ -1098,11 +1546,10 @@ struct<>
 -- !query output
 org.apache.spark.SparkRuntimeException
 {
-  "errorClass" : "KLL_SKETCH_INVALID_INPUT",
+  "errorClass" : "KLL_INVALID_INPUT_SKETCH_BUFFER",
   "sqlState" : "22000",
   "messageParameters" : {
-    "functionName" : "`kll_sketch_get_n_bigint`",
-    "reason" : "A sketch memory image must be at least 8 bytes. 4"
+    "function" : "`kll_sketch_get_n_bigint`"
   }
 }
 
@@ -1114,11 +1561,10 @@ struct<>
 -- !query output
 org.apache.spark.SparkRuntimeException
 {
-  "errorClass" : "KLL_SKETCH_INVALID_INPUT",
+  "errorClass" : "KLL_INVALID_INPUT_SKETCH_BUFFER",
   "sqlState" : "22000",
   "messageParameters" : {
-    "functionName" : "`kll_sketch_get_n_float`",
-    "reason" : "A sketch memory image must be at least 8 bytes. 4"
+    "function" : "`kll_sketch_get_n_float`"
   }
 }
 
@@ -1130,11 +1576,10 @@ struct<>
 -- !query output
 org.apache.spark.SparkRuntimeException
 {
-  "errorClass" : "KLL_SKETCH_INVALID_INPUT",
+  "errorClass" : "KLL_INVALID_INPUT_SKETCH_BUFFER",
   "sqlState" : "22000",
   "messageParameters" : {
-    "functionName" : "`kll_sketch_get_n_double`",
-    "reason" : "A sketch memory image must be at least 8 bytes. 4"
+    "function" : "`kll_sketch_get_n_double`"
   }
 }
 
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/create_view.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/create_view.sql.out
index 90c26b8582..792999214f 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/create_view.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/create_view.sql.out
@@ -673,7 +673,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`v7_temp`"
+    "relationName" : "`v7_temp`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`temp_view_test`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -695,7 +696,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`v10_temp`"
+    "relationName" : "`v10_temp`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`temp_view_test`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -717,7 +719,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`v11_temp`"
+    "relationName" : "`v11_temp`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`temp_view_test`]"
   },
   "queryContext" : [ {
     "objectType" : "",
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/float8.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/float8.sql.out
index e1b880f343..a8f48f7cb4 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/float8.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/float8.sql.out
@@ -577,7 +577,7 @@ SELECT asinh(double('1'))
 -- !query schema
 struct<ASINH(1):double>
 -- !query output
-0.8813735870195429
+0.881373587019543
 
 
 -- !query
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/window_part2.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/window_part2.sql.out
index 6cf5e69758..6737b29027 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/window_part2.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/window_part2.sql.out
@@ -228,7 +228,7 @@ org.apache.spark.SparkArithmeticException
   "messageParameters" : {
     "alternative" : " Use 'try_add' to tolerate overflow and return NULL 
instead.",
     "config" : "\"spark.sql.ansi.enabled\"",
-    "message" : "long overflow"
+    "message" : "overflow"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -251,7 +251,7 @@ org.apache.spark.SparkArithmeticException
   "messageParameters" : {
     "alternative" : " Use 'try_add' to tolerate overflow and return NULL 
instead.",
     "config" : "\"spark.sql.ansi.enabled\"",
-    "message" : "long overflow"
+    "message" : "overflow"
   },
   "queryContext" : [ {
     "objectType" : "",
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/window_part3.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/window_part3.sql.out
index ac4768a26c..27e44aa01d 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/window_part3.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/window_part3.sql.out
@@ -355,7 +355,8 @@ struct<>
 -- !query output
 org.apache.spark.sql.AnalysisException
 {
-  "errorClass" : "_LEGACY_ERROR_TEMP_1034",
+  "errorClass" : "WINDOW_FUNCTION_NOT_ALLOWED_IN_CLAUSE",
+  "sqlState" : "42601",
   "messageParameters" : {
     "clauseName" : "WHERE"
   }
@@ -429,7 +430,8 @@ struct<>
 -- !query output
 org.apache.spark.sql.AnalysisException
 {
-  "errorClass" : "_LEGACY_ERROR_TEMP_1034",
+  "errorClass" : "WINDOW_FUNCTION_NOT_ALLOWED_IN_CLAUSE",
+  "sqlState" : "42601",
   "messageParameters" : {
     "clauseName" : "WHERE"
   }
@@ -443,7 +445,8 @@ struct<>
 -- !query output
 org.apache.spark.sql.AnalysisException
 {
-  "errorClass" : "_LEGACY_ERROR_TEMP_1034",
+  "errorClass" : "WINDOW_FUNCTION_NOT_ALLOWED_IN_CLAUSE",
+  "sqlState" : "42601",
   "messageParameters" : {
     "clauseName" : "WHERE"
   }
@@ -473,11 +476,10 @@ struct<>
 -- !query output
 org.apache.spark.sql.AnalysisException
 {
-  "errorClass" : "UNRESOLVED_ROUTINE",
-  "sqlState" : "42883",
+  "errorClass" : "NOT_A_SCALAR_FUNCTION",
+  "sqlState" : "42887",
   "messageParameters" : {
-    "routineName" : "`range`",
-    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
+    "functionName" : "`range`"
   },
   "queryContext" : [ {
     "objectType" : "",
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/with.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/with.sql.out
index 1e0441e073..891bd4ccdf 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/with.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/postgreSQL/with.sql.out
@@ -1494,7 +1494,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`outermost`"
+    "relationName" : "`outermost`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -1731,7 +1732,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`test`"
+    "relationName" : "`test`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/show-create-table.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/show-create-table.sql.out
index c5e05411b6..87907ee6e8 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/show-create-table.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/show-create-table.sql.out
@@ -14,7 +14,7 @@ struct<createtab_stmt:string>
 -- !query output
 CREATE TABLE spark_catalog.default.tbl (
   a INT,
-  b STRING,
+  b STRING COLLATE UTF8_BINARY,
   c INT)
 USING parquet
 
@@ -43,7 +43,7 @@ struct<createtab_stmt:string>
 -- !query output
 CREATE TABLE spark_catalog.default.tbl (
   a INT,
-  b STRING,
+  b STRING COLLATE UTF8_BINARY,
   c INT)
 USING parquet
 OPTIONS (
@@ -75,7 +75,7 @@ struct<createtab_stmt:string>
 -- !query output
 CREATE TABLE spark_catalog.default.tbl (
   a INT,
-  b STRING,
+  b STRING COLLATE UTF8_BINARY,
   c INT)
 USING parquet
 LOCATION 'file:/path/to/table'
@@ -105,7 +105,7 @@ struct<createtab_stmt:string>
 -- !query output
 CREATE TABLE spark_catalog.default.tbl (
   a INT,
-  b STRING,
+  b STRING COLLATE UTF8_BINARY,
   c INT)
 USING parquet
 LOCATION 'file:/path/to/table'
@@ -134,7 +134,7 @@ SHOW CREATE TABLE tbl
 struct<createtab_stmt:string>
 -- !query output
 CREATE TABLE spark_catalog.default.tbl (
-  b STRING,
+  b STRING COLLATE UTF8_BINARY,
   c INT,
   a INT)
 USING parquet
@@ -165,7 +165,7 @@ struct<createtab_stmt:string>
 -- !query output
 CREATE TABLE spark_catalog.default.tbl (
   a INT,
-  b STRING,
+  b STRING COLLATE UTF8_BINARY,
   c INT)
 USING parquet
 CLUSTERED BY (a)
@@ -197,7 +197,7 @@ struct<createtab_stmt:string>
 -- !query output
 CREATE TABLE spark_catalog.default.tbl (
   a INT DEFAULT 42,
-  b STRING DEFAULT 'abc, def',
+  b STRING COLLATE UTF8_BINARY DEFAULT 'abc, def',
   c INT DEFAULT 42)
 USING parquet
 COMMENT 'This is a comment'
@@ -227,7 +227,7 @@ struct<createtab_stmt:string>
 -- !query output
 CREATE TABLE spark_catalog.default.tbl (
   a INT,
-  b STRING,
+  b STRING COLLATE UTF8_BINARY,
   c INT)
 USING parquet
 COMMENT 'This is a comment'
@@ -257,7 +257,7 @@ struct<createtab_stmt:string>
 -- !query output
 CREATE TABLE spark_catalog.default.tbl (
   a INT,
-  b STRING,
+  b STRING COLLATE UTF8_BINARY,
   c INT)
 USING parquet
 TBLPROPERTIES (
@@ -405,6 +405,14 @@ struct<>
 
 
 
+-- !query
+DROP TABLE tbl
+-- !query schema
+struct<>
+-- !query output
+
+
+
 -- !query
 SHOW CREATE TABLE view_SPARK_30302 AS SERDE
 -- !query schema
@@ -443,9 +451,62 @@ struct<>
 
 
 
+-- !query
+CREATE TABLE tbl (c1 STRING, c2 STRING COLLATE UTF8_BINARY, c3 STRING COLLATE 
UNICODE_CI)
+ DEFAULT COLLATION UTF8_LCASE
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+SHOW CREATE TABLE tbl
+-- !query schema
+struct<createtab_stmt:string>
+-- !query output
+CREATE TABLE spark_catalog.default.tbl (
+  c1 STRING COLLATE UTF8_LCASE,
+  c2 STRING COLLATE UTF8_BINARY,
+  c3 STRING COLLATE UNICODE_CI)
+USING parquet
+DEFAULT COLLATION UTF8_LCASE
+
+
 -- !query
 DROP TABLE tbl
 -- !query schema
 struct<>
 -- !query output
 
+
+
+-- !query
+CREATE VIEW view_SPARK_55372 DEFAULT COLLATION UTF8_LCASE
+AS SELECT 'a' AS c1, 'b' COLLATE UTF8_BINARY AS c2, 'c' COLLATE UNICODE_CI AS 
c3
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+SHOW CREATE TABLE view_SPARK_55372
+-- !query schema
+struct<createtab_stmt:string>
+-- !query output
+CREATE VIEW default.view_spark_55372 (
+  c1,
+  c2,
+  c3)
+DEFAULT COLLATION UTF8_LCASE
+WITH SCHEMA COMPENSATION
+AS SELECT 'a' AS c1, 'b' COLLATE UTF8_BINARY AS c2, 'c' COLLATE UNICODE_CI AS 
c3
+
+
+-- !query
+DROP VIEW view_SPARK_55372
+-- !query schema
+struct<>
+-- !query output
+
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/show-tables.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/show-tables.sql.out
index 93c1444777..fc1e4be3b5 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/show-tables.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/show-tables.sql.out
@@ -214,7 +214,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`show_t*`"
+    "relationName" : "`show_t*`",
+    "searchPath" : "[`system`.`session`, `spark_catalog`.`showdb`]"
   },
   "queryContext" : [ {
     "objectType" : "",
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/show_columns.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/show_columns.sql.out
index bb4e7e08c6..b29cef8627 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/show_columns.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/show_columns.sql.out
@@ -95,7 +95,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`showdb`.`badtable`"
+    "relationName" : "`showdb`.`badtable`",
+    "searchPath" : "[`system`.`session`, `spark_catalog`.`showdb`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -151,7 +152,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`showdb`.`showcolumn3`"
+    "relationName" : "`showdb`.`showcolumn3`",
+    "searchPath" : "[`system`.`session`, `spark_catalog`.`showdb`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -173,7 +175,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`showdb`.`showcolumn3`"
+    "relationName" : "`showdb`.`showcolumn3`",
+    "searchPath" : "[`system`.`session`, `spark_catalog`.`showdb`]"
   },
   "queryContext" : [ {
     "objectType" : "",
@@ -195,7 +198,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`showcolumn4`"
+    "relationName" : "`showcolumn4`",
+    "searchPath" : "[`system`.`session`, `spark_catalog`.`showdb`]"
   },
   "queryContext" : [ {
     "objectType" : "",
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/thetasketch.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/thetasketch.sql.out
index 685a268b43..f98ed64da3 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/thetasketch.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/thetasketch.sql.out
@@ -900,8 +900,8 @@ struct<>
 -- !query output
 org.apache.spark.SparkRuntimeException
 {
-  "errorClass" : "THETA_INVALID_LG_NOM_ENTRIES",
-  "sqlState" : "22546",
+  "errorClass" : "SKETCH_INVALID_LG_NOM_ENTRIES",
+  "sqlState" : "22003",
   "messageParameters" : {
     "function" : "`theta_sketch_agg`",
     "max" : "26",
@@ -919,8 +919,8 @@ struct<>
 -- !query output
 org.apache.spark.SparkRuntimeException
 {
-  "errorClass" : "THETA_INVALID_LG_NOM_ENTRIES",
-  "sqlState" : "22546",
+  "errorClass" : "SKETCH_INVALID_LG_NOM_ENTRIES",
+  "sqlState" : "22003",
   "messageParameters" : {
     "function" : "`theta_sketch_agg`",
     "max" : "26",
@@ -942,8 +942,8 @@ struct<>
 -- !query output
 org.apache.spark.SparkRuntimeException
 {
-  "errorClass" : "THETA_INVALID_LG_NOM_ENTRIES",
-  "sqlState" : "22546",
+  "errorClass" : "SKETCH_INVALID_LG_NOM_ENTRIES",
+  "sqlState" : "22003",
   "messageParameters" : {
     "function" : "`theta_union_agg`",
     "max" : "26",
@@ -965,8 +965,8 @@ struct<>
 -- !query output
 org.apache.spark.SparkRuntimeException
 {
-  "errorClass" : "THETA_INVALID_LG_NOM_ENTRIES",
-  "sqlState" : "22546",
+  "errorClass" : "SKETCH_INVALID_LG_NOM_ENTRIES",
+  "sqlState" : "22003",
   "messageParameters" : {
     "function" : "`theta_union_agg`",
     "max" : "26",
@@ -984,8 +984,8 @@ struct<>
 -- !query output
 org.apache.spark.SparkRuntimeException
 {
-  "errorClass" : "THETA_INVALID_LG_NOM_ENTRIES",
-  "sqlState" : "22546",
+  "errorClass" : "SKETCH_INVALID_LG_NOM_ENTRIES",
+  "sqlState" : "22003",
   "messageParameters" : {
     "function" : "`theta_sketch_agg`",
     "max" : "26",
@@ -1200,7 +1200,7 @@ struct<>
 org.apache.spark.SparkRuntimeException
 {
   "errorClass" : "THETA_INVALID_INPUT_SKETCH_BUFFER",
-  "sqlState" : "22546",
+  "sqlState" : "22000",
   "messageParameters" : {
     "function" : "`theta_sketch_estimate`"
   }
@@ -1215,7 +1215,7 @@ struct<>
 org.apache.spark.SparkRuntimeException
 {
   "errorClass" : "THETA_INVALID_INPUT_SKETCH_BUFFER",
-  "sqlState" : "22546",
+  "sqlState" : "22000",
   "messageParameters" : {
     "function" : "`theta_union`"
   }
@@ -1230,7 +1230,7 @@ struct<>
 org.apache.spark.SparkRuntimeException
 {
   "errorClass" : "THETA_INVALID_INPUT_SKETCH_BUFFER",
-  "sqlState" : "22546",
+  "sqlState" : "22000",
   "messageParameters" : {
     "function" : "`theta_intersection`"
   }
@@ -1245,7 +1245,7 @@ struct<>
 org.apache.spark.SparkRuntimeException
 {
   "errorClass" : "THETA_INVALID_INPUT_SKETCH_BUFFER",
-  "sqlState" : "22546",
+  "sqlState" : "22000",
   "messageParameters" : {
     "function" : "`theta_difference`"
   }
@@ -1261,7 +1261,7 @@ struct<>
 org.apache.spark.SparkRuntimeException
 {
   "errorClass" : "THETA_INVALID_INPUT_SKETCH_BUFFER",
-  "sqlState" : "22546",
+  "sqlState" : "22000",
   "messageParameters" : {
     "function" : "`theta_union_agg`"
   }
@@ -1277,7 +1277,7 @@ struct<>
 org.apache.spark.SparkRuntimeException
 {
   "errorClass" : "THETA_INVALID_INPUT_SKETCH_BUFFER",
-  "sqlState" : "22546",
+  "sqlState" : "22000",
   "messageParameters" : {
     "function" : "`theta_intersection_agg`"
   }
diff --git 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/union-resolution-edge-cases.sql.out
 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/union-resolution-edge-cases.sql.out
index bd49d52fb8..9ad88d05ec 100644
--- 
a/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/union-resolution-edge-cases.sql.out
+++ 
b/gluten-ut/spark42/src/test/resources/backends-velox/sql-tests/results/union-resolution-edge-cases.sql.out
@@ -51,7 +51,8 @@ org.apache.spark.sql.catalyst.ExtendedAnalysisException
   "errorClass" : "TABLE_OR_VIEW_NOT_FOUND",
   "sqlState" : "42P01",
   "messageParameters" : {
-    "relationName" : "`t3`"
+    "relationName" : "`t3`",
+    "searchPath" : "[`system`.`builtin`, `system`.`session`, 
`spark_catalog`.`default`]"
   },
   "queryContext" : [ {
     "objectType" : "",
diff --git 
a/gluten-ut/spark42/src/test/scala/org/apache/gluten/utils/velox/VeloxSQLQueryTestSettings.scala
 
b/gluten-ut/spark42/src/test/scala/org/apache/gluten/utils/velox/VeloxSQLQueryTestSettings.scala
index 19039c0249..b28336c967 100644
--- 
a/gluten-ut/spark42/src/test/scala/org/apache/gluten/utils/velox/VeloxSQLQueryTestSettings.scala
+++ 
b/gluten-ut/spark42/src/test/scala/org/apache/gluten/utils/velox/VeloxSQLQueryTestSettings.scala
@@ -72,6 +72,7 @@ object VeloxSQLQueryTestSettings extends SQLQueryTestSettings 
{
     "group-analytics.sql",
     "group-by-filter.sql",
     "group-by-ordinal.sql",
+    "grouping_set.sql",
     "having.sql",
     "higher-order-functions.sql",
     "identifier-clause.sql",
@@ -109,8 +110,11 @@ object VeloxSQLQueryTestSettings extends 
SQLQueryTestSettings {
     "predicate-functions.sql",
     "query_regex_column.sql",
     "random.sql",
+    "show-create-table.sql",
+    "show-tables.sql",
     "show-tblproperties.sql",
     "show-views.sql",
+    "show_columns.sql",
     "sql-compatibility-functions.sql",
     "struct.sql",
     "subexp-elimination.sql",
@@ -158,8 +162,10 @@ object VeloxSQLQueryTestSettings extends 
SQLQueryTestSettings {
     "postgreSQL/boolean.sql",
     "postgreSQL/case.sql",
     "postgreSQL/comments.sql",
+    "postgreSQL/create_view.sql",
     "postgreSQL/date.sql",
     "postgreSQL/float4.sql",
+    "postgreSQL/float8.sql",
     "postgreSQL/groupingsets.sql",
     "postgreSQL/insert.sql",
     "postgreSQL/int2.sql",
@@ -177,6 +183,8 @@ object VeloxSQLQueryTestSettings extends 
SQLQueryTestSettings {
     "postgreSQL/text.sql",
     "postgreSQL/timestamp.sql",
     "postgreSQL/union.sql",
+    "postgreSQL/window_part2.sql",
+    "postgreSQL/with.sql",
     "datetime-special.sql",
     "timestamp-ltz.sql",
     "timestamp-ntz.sql",
@@ -251,11 +259,16 @@ object VeloxSQLQueryTestSettings extends 
SQLQueryTestSettings {
     // newly added test files from spark 4.1
     "alias-resolution-edge-cases.sql",
     "collations-aliases.sql",
+    "collations-basic.sql",
+    "collations-padding-trim.sql",
+    "collations-string-functions.sql",
+    "cte-recursion.sql",
     "extract-value-resolution-edge-cases.sql",
     "generators.sql",
     "having-and-order-by-recursive-type-name-resolution.sql",
     "identifier-clause-legacy.sql",
     "join-resolution-edge-cases.sql",
+    "kllquantiles.sql",
     "name-precedence-in-order-by-and-having-with-conflicting-attributes.sql",
     // TODO: fix on Spark-4.1 "nonansi/st-functions.sql",
     "order-by-alias.sql",
@@ -266,9 +279,11 @@ object VeloxSQLQueryTestSettings extends 
SQLQueryTestSettings {
     "session-variable-precedence.sql",
     // TODO: fix on Spark-4.1 "st-functions.sql",
     "subquery/resolution-edge-cases.sql",
+    "thetasketch.sql",
     "time.sql",
     "type-coercion-edge-cases.sql",
     "union-per-child-output-deduplication.sql",
+    "union-resolution-edge-cases.sql",
     // TODO: fix on Spark-4.1 "variant-field-extractions.sql",
     "view-conf.sql",
     "window-with-aggregates.sql"
@@ -289,6 +304,9 @@ object VeloxSQLQueryTestSettings extends 
SQLQueryTestSettings {
     // "array.sql",
     // Overwrite exception message.
     "bitwise.sql",
+    "count.sql",
+    "charvarchar.sql",
+    "cte.sql",
     // Enable NullPropagation rule for
     // "legacy behavior: allow calling function count without parameters".
     // Enable ConstantFolding rule for "typeof(...)".
@@ -324,6 +342,7 @@ object VeloxSQLQueryTestSettings extends 
SQLQueryTestSettings {
     "percentiles.sql",
     // Enable ConstantFolding rule for some queries, otherwise Spark will 
throw an exception.
     "postgreSQL/window_part1.sql",
+    "postgreSQL/window_part3.sql",
     // Enable ConstantFolding rule for some queries, otherwise Spark will 
throw an exception.
     // Enable ConstantFolding rule for some queries, otherwise Spark will 
throw an exception.
     "postgreSQL/window_part4.sql",


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to