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

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


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 123000ed9d4 [fix](array_avg) fix core for array_avg (#46927) (#48631)
123000ed9d4 is described below

commit 123000ed9d4cff442c7a1346e0ff0fe3bcf7a11b
Author: amory <wangqian...@selectdb.com>
AuthorDate: Tue Mar 4 21:46:26 2025 +0800

    [fix](array_avg) fix core for array_avg (#46927) (#48631)
    
    if we set session variable for fold_constant_for_be = 1 and
    enable_decimal256 = true
    here will meet error in sql
    ```
    SELECT ARRAY_AVG(CAST([] AS ARRAY < DECIMALV3(1,0) > ));
    ```
    with core
    ```
    SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior 
/mnt/disk1/wangqiannan/amory/doris/be/src/vec/columns/column_decimal.h:200:15 in
     0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, 
siginfo_t*, void*) at 
/mnt/disk1/wangqiannan/amory/doris/be/src/common/signal_handler.h:421
     1# PosixSignals::chained_handler(int, siginfo*, void*) [clone .part.0] in 
/mnt/disk1/wangqiannan/tool/jdk-17.0.10/lib/server/libjvm.so
     2# JVM_handle_linux_signal in 
/mnt/disk1/wangqiannan/tool/jdk-17.0.10/lib/server/libjvm.so
     3# 0x00007FD98C1A2B50 in /lib64/libc.so.6
     4# 
doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul,
 int> > >::get_data_at(unsigned long) const at 
/mnt/disk1/wangqiannan/amory/doris/be/src/vec/columns/column_decimal.h:201
     5# 
doris::vectorized::DataTypeDecimalSerDe<doris::vectorized::Decimal<wide::integer<256ul,
 int> > >::write_column_to_pb(doris::vectorized::IColumn const&, 
doris::PValues&, long, long) const at 
/mnt/disk1/wangqiannan/amory/doris/be/src/vec/data_types/serde/data_type_decimal_serde.h:158
     6# 
doris::vectorized::DataTypeNullableSerDe::write_column_to_pb(doris::vectorized::IColumn
 const&, doris::PValues&, long, long) const at 
/mnt/disk1/wangqiannan/amory/doris/be/src/vec/data_types/serde/data_type_nullable_serde.cpp:237
     7# 
doris::FoldConstantExecutor::fold_constant_vexpr(doris::TFoldConstantParams 
const&, doris::PConstantExprResult*) at 
/mnt/disk1/wangqiannan/amory/doris/be/src/runtime/fold_constant_executor.cpp:118
     8# 
doris::PInternalService::_fold_constant_expr(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
doris::PConstantExprResult*) at 
/mnt/disk1/wangqiannan/amory/doris/be/src/service/internal_service.cpp:1537
     9# 
doris::PInternalService::fold_constant_expr(google::protobuf::RpcController*, 
doris::PConstantExprRequest const*, doris::PConstantExprResult*, 
google::protobuf::Closure*)::$_0::operator()() const at 
/mnt/disk1/wangqiannan/amory/doris/be/src/service/internal_service.cpp:1515
    10# void std::__invoke_impl<void, 
doris::PInternalService::fold_constant_expr(google::protobuf::RpcController*, 
doris::PConstantExprRequest const*, doris::PConstantExprResult*, 
google::protobuf::Closure*)::$_0&>(std::__invoke_other, 
doris::PInternalService::fold_constant_expr(google::protobuf::RpcController*, 
doris::PConstantExprRequest const*, doris::PConstantExprResult*, 
google::protobuf::Closure*)::$_0&) at 
/mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gn 
[...]
    11# std::enable_if<is_invocable_r_v<void, 
doris::PInternalService::fold_constant_expr(google::protobuf::RpcController*, 
doris::PConstantExprRequest const*, doris::PConstantExprResult*, 
google::protobuf::Closure*)::$_0&>, void>::type std::__invoke_r<void, 
doris::PInternalService::fold_constant_expr(google::protobuf::RpcController*, 
doris::PConstantExprRequest const*, doris::PConstantExprResult*, 
google::protobuf::Closure*)::$_0&>(doris::PInternalService::fold_constant_expr(google::prot
 [...]
    12# std::_Function_handler<void (), 
doris::PInternalService::fold_constant_expr(google::protobuf::RpcController*, 
doris::PConstantExprRequest const*, doris::PConstantExprResult*, 
google::protobuf::Closure*)::$_0>::_M_invoke(std::_Any_data const&) at 
/mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
    13# std::function<void ()>::operator()() const at 
/mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560
    14# doris::WorkThreadPool<false>::work_thread(int) at 
/mnt/disk1/wangqiannan/amory/doris/be/src/util/work_thread_pool.hpp:158
    15# void std::__invoke_impl<void, void (doris::WorkThreadPool<false>::* 
const&)(int), doris::WorkThreadPool<false>*&, int&>(std::__invoke_memfun_deref, 
void (doris::WorkThreadPool<false>::* const&)(int), 
doris::WorkThreadPool<false>*&, int&) at 
/mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74
    16# std::__invoke_result<void (doris::WorkThreadPool<false>::* 
const&)(int), doris::WorkThreadPool<false>*&, int&>::type std::__invoke<void 
(doris::WorkThreadPool<false>::* const&)(int), doris::WorkThreadPool<false>*&, 
int&>(void (doris::WorkThreadPool<false>::* const&)(int), 
doris::WorkThreadPool<false>*&, int&) at 
/mnt/disk1/wangqiannan/tool/ldb_toolchain_16/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:96
    ```
    
    ### What problem does this PR solve?
    
    Issue Number: close #xxx
    
    Related PR: #xxx
    
    Problem Summary:
    
    ### Release note
    
    None
    
    ### Check List (For Author)
    
    - Test <!-- At least one of them must be included. -->
        - [ ] Regression test
        - [ ] Unit Test
        - [ ] Manual test (add detailed scripts or steps below)
        - [ ] No need to test or manual test. Explain why:
    - [ ] This is a refactor/code format and no logic has been changed.
            - [ ] Previous test can cover this change.
            - [ ] No code files have been changed.
            - [ ] Other reason <!-- Add your reason?  -->
    
    - Behavior changed:
        - [ ] No.
        - [ ] Yes. <!-- Explain the behavior change -->
    
    - Does this need documentation?
        - [ ] No.
    - [ ] Yes. <!-- Add document PR link here. eg:
    https://github.com/apache/doris-website/pull/1214 -->
    
    ### Check List (For Reviewer who merge this PR)
    
    - [ ] Confirm the release note
    - [ ] Confirm test cases
    - [ ] Confirm document
    - [ ] Add branch pick label <!-- Add branch pick label that this PR
    should merge into -->
---
 .../expression/rules/FoldConstantRuleOnBE.java     |    1 +
 .../functions/ComputePrecisionForArrayItemAgg.java |   13 +
 .../test_array_functions_by_literal.out            |  Bin 10064 -> 30047 bytes
 .../test_array_functions_by_literal.groovy         | 1633 +++++++++++++++-----
 4 files changed, 1274 insertions(+), 373 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
index abef5a13f9d..b76c71a9fa4 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
@@ -290,6 +290,7 @@ public class FoldConstantRuleOnBE implements 
ExpressionPatternRuleFactory {
             TQueryOptions tQueryOptions = new TQueryOptions();
             
tQueryOptions.setRepeatMaxNum(context.getSessionVariable().repeatMaxNum);
             tQueryOptions.setBeExecVersion(Config.be_exec_version);
+            
tQueryOptions.setEnableDecimal256(context.getSessionVariable().isEnableDecimal256());
 
             TFoldConstantParams tParams = new TFoldConstantParams(paramMap, 
queryGlobals);
             tParams.setVecExec(true);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/ComputePrecisionForArrayItemAgg.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/ComputePrecisionForArrayItemAgg.java
index 05efb92222b..de1f01d5e10 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/ComputePrecisionForArrayItemAgg.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/ComputePrecisionForArrayItemAgg.java
@@ -23,6 +23,9 @@ import org.apache.doris.nereids.types.DataType;
 import org.apache.doris.nereids.types.DecimalV3Type;
 import org.apache.doris.qe.ConnectContext;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /** ComputePrecisionForSum */
 public interface ComputePrecisionForArrayItemAgg extends ComputePrecision {
     @Override
@@ -39,6 +42,16 @@ public interface ComputePrecisionForArrayItemAgg extends 
ComputePrecision {
                         enableDecimal256 ? 
DecimalV3Type.MAX_DECIMAL256_PRECISION
                                 : DecimalV3Type.MAX_DECIMAL128_PRECISION,
                         ((DecimalV3Type) itemType).getScale());
+                List<DataType> newArgumentsTypes = new 
ArrayList<>(signature.argumentsTypes.size());
+                for (int i = 0; i < signature.argumentsTypes.size(); i++) {
+                    DataType argType = signature.argumentsTypes.get(i);
+                    if (argType instanceof ArrayType && i == 0) {
+                        newArgumentsTypes.add(ArrayType.of(returnType));
+                    } else {
+                        newArgumentsTypes.add(argType);
+                    }
+                }
+                signature = signature.withArgumentTypes(signature.hasVarArgs, 
newArgumentsTypes);
                 if (signature.returnType instanceof ArrayType) {
                     signature = 
signature.withReturnType(ArrayType.of(returnType));
                 } else {
diff --git 
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
 
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
index bddcebea700..f8b42d49332 100644
Binary files 
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
 and 
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
 differ
diff --git 
a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions_by_literal.groovy
 
b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions_by_literal.groovy
index 14c6ed5b925..b20b2c874f5 100644
--- 
a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions_by_literal.groovy
+++ 
b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions_by_literal.groovy
@@ -39,380 +39,1267 @@ suite("test_array_functions_by_literal") {
     qt_sql_16 """select array_concat(array(1.0,2.0,null, null,2.0), 
array(1.0,2.0,null, null,2.0));"""
 
 
-    // array_contains function
-    qt_sql "select array_contains([1.111, 2, 3.333], 2);"
-    qt_sql "select array_contains([1,2,3], 1)"
-    qt_sql "select array_contains([1,2,3], 4)"
-    qt_sql "select array_contains([1,2,3,NULL], 1)"
-    qt_sql "select array_contains([1,2,3,NULL], NULL)"
-    qt_sql "select array_contains([], true)"
-    qt_sql "select array_contains([], NULL)"
-    qt_sql "select array_contains(NULL, 1)"
-    qt_sql "select array_contains(NULL, NULL)"
-    qt_sql "select array_contains([true], false)"
-    qt_sql "select array_contains(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), cast 
('2023-02-04 22:07:34.999' as datetimev2(3)))"
-    qt_sql "select array_contains(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), cast ('2023-02-05' as datev2))"
-    qt_sql "select array_contains(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), cast (111.111 as decimalv3(6,3)))"
-
-    // array_position function
-    qt_sql "select array_position([1.111, 2, 3.333], 2);"
-    qt_sql "select array_position([1,2,3], 1)"
-    qt_sql "select array_position([1,2,3], 3)"
-    qt_sql "select array_position([1,2,3], 4)"
-    qt_sql "select array_position([NULL,2,3], 2)"
-    qt_sql "select array_position([NULL,2,3], NULL)"
-    qt_sql "select array_position([], true)"
-    qt_sql "select array_position([], NULL)"
-    qt_sql "select array_position(NULL, 1)"
-    qt_sql "select array_position(NULL, NULL)"
-    qt_sql "select array_position([null], true)"
-    qt_sql "select array_position([0], null)"
-    qt_sql "select array_position([null, '1'], '')"
-    qt_sql "select array_position([''], null)"
-    qt_sql "select array_position([false, NULL, true], true)"
-    qt_sql "select array_position(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), cast 
('2023-02-04 22:07:34.999' as datetimev2(3)))"
-    qt_sql "select array_position(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), cast ('2023-02-05' as datev2))"
-    qt_sql "select array_position(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), cast (111.111 as decimalv3(6,3)))"
-
-    // element_at function
-    qt_sql "select element_at([1,2,3], 1)"
-    qt_sql "select element_at([1,2,3], 3)"
-    qt_sql "select element_at([1,2,3], 4)"
-    qt_sql "select element_at([1,2,3], -1)"
-    qt_sql "select element_at([1,2,3], NULL)"
-    qt_sql "select element_at([1,2,NULL], 3)"
-    qt_sql "select element_at([1,2,NULL], 2)"
-    qt_sql "select element_at([], -1)"
-    qt_sql "select element_at([true, NULL, false], 2)"
-    qt_sql "select element_at(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), 1)"
-    qt_sql "select element_at(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), 2)"
-    qt_sql "select element_at(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), 1)"
-
-    // array subscript function
-    qt_sql "select [1,2,3][1]"
-    qt_sql "select [1,2,3][3]"
-    qt_sql "select [1,2,3][4]"
-    qt_sql "select [1,2,3][-1]"
-    qt_sql "select [1,2,3][NULL]"
-    qt_sql "select [1,2,NULL][3]"
-    qt_sql "select [1,2,NULL][2]"
-    qt_sql "select [][-1]"
-    qt_sql "select [true, false]"
-    qt_sql "select (array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))[2]"
-    qt_sql "select (array(cast ('2023-02-04' as datev2),cast ('2023-02-05' as 
datev2)))[2]"
-    qt_sql "select (array(cast (111.111 as decimalv3(6,3)),cast (222.222 as 
decimalv3(6,3))))[2]"
-
-    // array_aggregation function
-    qt_sql "select array_avg([1,2,3])"
-    qt_sql "select array_sum([1,2,3])"
-    qt_sql "select array_min([1,2,3])"
-    qt_sql "select array_max([1,2,3])"
-    qt_sql "select array_product([1,2,3])"
-    qt_sql "select array_avg([1,2,3,null])"
-    qt_sql "select array_sum([1,2,3,null])"
-    qt_sql "select array_min([1,2,3,null])"
-    qt_sql "select array_max([1,2,3,null])"
-    qt_sql "select array_product([1,2,3,null])"
-    qt_sql "select array_avg([])"
-    qt_sql "select array_sum([])"
-    qt_sql "select array_min([])"
-    qt_sql "select array_max([])"
-    qt_sql "select array_product([])"
-    qt_sql "select array_avg([null])"
-    qt_sql "select array_sum([null])"
-    qt_sql "select array_min([null])"
-    qt_sql "select array_max([null])"
-    qt_sql "select array_product([null])"
-    qt_sql "select array_product([1.12, 3.45, 4.23])"
-    qt_sql "select array_product([1.12, 3.45, -4.23])"
-    qt_sql "select array_min(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))"
-    qt_sql "select array_max(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))"
-    qt_sql "select array_min(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)))"
-    qt_sql "select array_max(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)))"
-    qt_sql "select array_avg(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
-    qt_sql "select array_sum(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
-    qt_sql "select array_min(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
-    qt_sql "select array_max(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
-    qt_sql "select array_product(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
-
-    // array_distinct function
-    qt_sql "select array_distinct([1,1,2,2,3,3])"
-    qt_sql "select array_distinct([1,1,2,2,3,3,null])"
-    qt_sql "select array_distinct([1,1,3,3,null, null, null])"
-    qt_sql "select array_distinct(['a','a','a'])"
-    qt_sql "select array_distinct([null, 'a','a','a', null])"
-    qt_sql "select array_distinct([true, false, false, null])"
-    qt_sql "select array_distinct([])"
-    qt_sql "select array_distinct([null,null])"
-    qt_sql "select array_distinct([1, 0, 0, null])"
-    qt_sql "select array_distinct(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3)),cast 
('2023-02-04 23:07:34.999' as datetimev2(3))))"
-    qt_sql "select array_distinct(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2),cast ('2023-02-05' as datev2)))"
-    qt_sql "select array_distinct(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
-
-
-    // array_remove function
-    qt_sql "select array_remove([1,2,3], 1)"
-    qt_sql "select array_remove([1,2,3,null], 1)"
-    qt_sql "select array_remove(['a','b','c'], 'a')"
-    qt_sql "select array_remove(['a','b','c',null], 'a')"
-    qt_sql "select array_remove([true, false, false], false)"
-    qt_sql "select array_remove(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), cast 
('2023-02-04 22:07:34.999' as datetimev2(3)))"
-    qt_sql "select array_remove(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), cast ('2023-02-05' as datev2))"
-    qt_sql "select array_remove(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), cast (111.111 as decimalv3(6,3)))"
- 
-    // array_sort function
-    qt_sql_array_sort1 "select array_sort([1,2,3])"
-    qt_sql_array_sort2 "select array_sort([3,2,1])"
-    qt_sql_array_sort3 "select array_sort([1,2,3,null])"
-    qt_sql_array_sort4 "select array_sort([null,1,2,3])"
-    qt_sql_array_sort5 "select array_sort(['a','b','c'])"
-    qt_sql_array_sort6 "select array_sort(['c','b','a'])"
-    qt_sql_array_sort7 "select array_sort([true, false, true])"
-    qt_sql_array_sort8 "select array_sort([])"
-    qt_sql_array_sort9 "select array_sort(array(cast ('2023-02-06 
22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
-    qt_sql_array_sort10 "select array_sort(array(cast ('2023-02-06' as 
datev2),cast ('2023-02-05' as datev2)))"
-    qt_sql_array_sort11 "select array_sort(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
-
-    // array_reverse_sort function
-    qt_sql_array_reverse_sort1 "select array_reverse_sort([1,2,3])"
-    qt_sql_array_reverse_sort2 "select array_reverse_sort([3,2,1])"
-    qt_sql_array_reverse_sort3 "select array_reverse_sort([1,2,3,null])"
-    qt_sql_array_reverse_sort4 "select array_reverse_sort([null,1,2,3])"
-    qt_sql_array_reverse_sort5 "select array_reverse_sort(['a','b','c'])"
-    qt_sql_array_reverse_sort6 "select array_reverse_sort(['c','b','a'])"
-    qt_sql_array_reverse_sort7 "select array_reverse_sort([true, false, true])"
-    qt_sql_array_reverse_sort8 "select array_reverse_sort([])"
-    qt_sql_array_reverse_sort9 "select array_reverse_sort(array(cast 
('2023-02-06 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
-    qt_sql_array_reverse_sort10 "select array_reverse_sort(array(cast 
('2023-02-06' as datev2),cast ('2023-02-05' as datev2)))"
-    qt_sql_array_reverse_sort11 "select array_reverse_sort(array(cast (111.111 
as decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
-
-    // array_overlap function
-    qt_sql "select arrays_overlap([1,2,3], [4,5,6])"
-    qt_sql "select arrays_overlap([1,2,3], [3,4,5])"
-    qt_sql "select arrays_overlap([1,2,3,null], [3,4,5])"
-    qt_sql "select arrays_overlap([true], [false])"
-    qt_sql "select arrays_overlap([], [])"
-    qt_sql "select arrays_overlap(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
-    qt_sql "select arrays_overlap(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-08 23:07:34.999' as 
datetimev2(3))))"
-    qt_sql "select arrays_overlap(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
-    qt_sql "select arrays_overlap(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-08' as datev2)))"
-    qt_sql "select arrays_overlap(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), array(cast (222.222 as decimalv3(6,3)),cast 
(333.333 as decimalv3(6,3))))"
-
-    // array_binary function
-    qt_sql "select array_union([1,2,3], [2,3,4])"
-    qt_sql "select array_except([1,2,3], [2,3,4])"
-    qt_sql "select array_intersect([1,2,3], [2,3,4])"
-    qt_sql "select array_union([1,2,3], [2,3,4,null])"
-    qt_sql "select array_except([1,2,3], [2,3,4,null])"
-    qt_sql "select array_intersect([1,2,3], [2,3,4,null])"
-    qt_sql "select array_union([true], [false])"
-    qt_sql "select array_except([true, false], [true])"
-    qt_sql "select array_intersect([false, true], [false])"
-    qt_sql "select array_union([], [])"
-    qt_sql "select array_except([], [])"
-    qt_sql "select array_intersect([], [])"
-    qt_sql "select array_union([], [1,2,3])"
-    qt_sql "select array_except([], [1,2,3])"
-    qt_sql "select array_intersect([], [1,2,3])"
-    qt_sql "select array_union([null], [1,2,3])"
-    qt_sql "select array_except([null], [1,2,3])"
-    qt_sql "select array_intersect([null], [1,2,3])"
-    qt_sql "select array_union([1], [100000000])"
-    qt_sql "select array_except([1], [100000000])"
-    qt_sql "select array_intersect([1], [100000000])"
-    qt_sql "select array_union(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
-    qt_sql "select array_except(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
-    qt_sql "select array_intersect(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
-    qt_sql "select array_union(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
-    qt_sql "select array_except(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
-    qt_sql "select array_intersect(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
-    qt_sql "select array_union(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), array(cast (222.222 as decimalv3(6,3)),cast 
(333.333 as decimalv3(6,3))))"
-    qt_sql "select array_except(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), array(cast (222.222 as decimalv3(6,3)),cast 
(333.333 as decimalv3(6,3))))"
-    qt_sql "select array_intersect(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), array(cast (222.222 as decimalv3(6,3)),cast 
(333.333 as decimalv3(6,3))))"
-
-    // array_slice function
-    qt_sql "select [1,2,3][1:1]"
-    qt_sql "select [1,2,3][1:3]"
-    qt_sql "select [1,2,3][1:5]"
-    qt_sql "select [1,2,3][2:]"
-    qt_sql "select [1,2,3][-2:]"
-    qt_sql "select [1,2,3][2:-1]"
-    qt_sql "select [1,2,3][0:]"
-    qt_sql "select [1,2,3][-5:]"
-    qt_sql "select [true, false, false][2:]"
-    qt_sql "select (array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))[1:2]"
-    qt_sql "select (array(cast ('2023-02-06' as datev2), cast ('2023-02-05' as 
datev2)))[1:2]"
-    qt_sql "select (array(cast (111.111 as decimalv3(6,3)),cast (222.222 as 
decimalv3(6,3))))[1:2]"
-
-    // array_intersect
-    qt_sql_intersect_1 "select array_intersect([1,2,3], [1,2,3], [null])"
-    qt_sql_intersect_2 "select array_intersect([1, 2, null], [1, 3, null], 
[1,2,3,null])"
-    qt_sql_intersect_3 "select array_intersect([1,2,3, null], [1,2,3,null], 
[1,2,null], [1, null])"
-    qt_sql_intersect_4 "select array_intersect([1,2,3], [1,2,3], [null], [])"
-
-    // array_union-with-multiple-arguments
-    qt_sql_union_1 "select array_union([1,2,3], [1,2,3], [null])"
-    qt_sql_union_2 "select array_union([1, 2, null], [1, 3, null], 
[1,2,3,null])"
-    qt_sql_union_3 "select array_union([1,2,3, null], [1,2,3,null], 
[1,2,null], [1, null])"
-    qt_sql_union_4 "select array_union([1,2,3], [1,2,3], [null], [])"
-
-    // array_popfront function
-    qt_sql "select array_popfront([1,2,3,4,5,6])"
-    qt_sql "select array_popfront([])"
-    qt_sql "select array_popfront(null)"
-    qt_sql "select array_popfront([null,2,3,4,5])"
-    qt_sql "select array_popfront([1,2,3,4,null])"
-    qt_sql "select array_popfront(['1','2','3','4','5','6'])"
-    qt_sql "select array_popfront([null,'2','3','4','5','6'])"
-    qt_sql "select array_popfront(['1','2','3','4','5',null])"
-    qt_sql "select array_popfront(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2), cast ('2023-02-07' as datev2), cast ('2023-02-05' as 
datev2)))"
-    qt_sql "select array_popfront(array(null, cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2), cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
-    qt_sql "select array_popfront(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3)), cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
-    qt_sql "select array_popfront(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
-
-    // array_join function 
-    qt_sql "select array_join([1, 2, 3], '_')"
-    qt_sql "select array_join(['1', '2', '3', null], '_')"
-    qt_sql "select array_join([null, '1', '2', '3', null], '_')"
-    qt_sql "select array_join(['', '2', '3'], '_')"
-    qt_sql "select array_join(['1', '2', ''], '_')"
-    qt_sql "select array_join(['1', '2', '', null], '_')"
-    qt_sql "select array_join(['', '', '3'], '_')"
-    qt_sql "select array_join(['1', '2', '', ''], '_')"
-    qt_sql "select array_join([null, null, '1', '2', '', '', null], '_')"
-    qt_sql "select array_join([null, null, 1, 2, '', '', null], '_', 'any')"
-    qt_sql "select array_join([''], '_')"
-    qt_sql "select array_join(['', ''], '_')"
-    qt_sql_array_with_constant1 "select array_with_constant(3, '_'), 
array_repeat('_', 3)"
-    qt_sql_array_with_constant2 "select array_with_constant(2, '1'), 
array_repeat('1', 2)"
-    qt_sql_array_with_constant3 "select array_with_constant(4, 1223), 
array_repeat(1223, 4)"
-    qt_sql_array_with_constant4 "select array_with_constant(8, null), 
array_repeat(null, 8)"
-    qt_sql_array_with_constant5 "select array_with_constant(null, 'abc'), 
array_repeat('abc', null)"
-    qt_sql_array_with_constant6 "select array_with_constant(null, null), 
array_repeat(null, null)"
-    // array_compact function
-    qt_sql "select array_compact([1, 2, 3, 3, null, null, 4, 4])"
-    qt_sql "select array_compact([null, null, null])"
-    qt_sql "select array_compact([1.2, 1.2, 3.4, 3.3, 2.1])"
-    qt_sql "select array_compact(['a','b','c','c','d'])"
-    qt_sql "select array_compact(['aaa','aaa','bbb','ccc','ccccc',null, 
null,'dddd'])"
-    qt_sql "select array_compact(['2015-03-13','2015-03-13'])"
-    qt_sql "select array_compact(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3)), cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
-    qt_sql "select array_compact(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2), cast ('2023-02-07' as datev2), cast ('2023-02-05' as 
datev2)))"
-    qt_sql "select array_compact(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3)),cast (222.222 as decimalv3(6,3)),cast (333.333 as 
decimalv3(6,3))))"
-    qt_sql "select array_compact(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
-
-    // array_apply
-    qt_sql """select array_apply([1000000, 1000001, 1000002], '=', 1000002)"""
-    qt_sql """select array_apply([1.111, 2.222, 3.333], '>=', 2)"""
-    qt_sql """select array_apply(cast(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17") as array<datetimev2>), ">", '2020-01-02')"""
-    qt_sql """select array_apply(array(cast (24.99 as decimal(10,3)),cast 
(25.99 as decimal(10,3))), ">", '25')"""
-    qt_sql """select array_apply(array(cast (24.99 as decimal(10,3)),cast 
(25.99 as decimal(10,3))), "!=", '25')"""
-    // qt_sql """select array_apply(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), ">", '111.111')"""
-
-    qt_sql "select array_concat([1, 2, 3], [2, 3, 4], [8, 1, 2], [9])"
-    qt_sql "select array_concat([12, 23], [25, null], [null], [66])"
-    qt_sql "select array_concat([1.2, 1.8], [9.0, 2.2], [2.8])"
-    qt_sql "select array_concat(['aaa', null], ['bbb', 'fff'], [null, 'ccc'])"
-    qt_sql "select array_concat(null, [1, 2, 3], null)"
-    qt_sql "select array_concat(array(cast (12.99 as decimal(10,3)), cast 
(34.99 as decimal(10,3))), array(cast (999.28 as decimal(10,3)), cast (123.99 
as decimal(10,3))))"
-    qt_sql "select array_concat(array(cast ('2023-03-05' as datev2), cast 
('2023-03-04' as datev2)), array(cast ('2023-02-01' as datev2), cast 
('2023-02-05' as datev2)))"
-    qt_sql "select array_concat(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))))"
-
-    // array_shuffle
-    // do not check result, since shuffle result is random
-    sql "SELECT array_sum(array_shuffle([1, 2, 3, 3, null, null, 4, 4])), 
array_shuffle([1, 2, 3, 3, null, null, 4, 4], 0), shuffle([1, 2, 3, 3, null, 
null, 4, 4], 0)"
-    sql "SELECT array_sum(array_shuffle([1.111, 2.222, 3.333])), 
array_shuffle([1.111, 2.222, 3.333], 0), shuffle([1.111, 2.222, 3.333], 0)"
-    sql "SELECT array_size(array_shuffle(['aaa', null, 'bbb', 'fff'])), 
array_shuffle(['aaa', null, 'bbb', 'fff'], 0), shuffle(['aaa', null, 'bbb', 
'fff'], 0)"
-    sql """select array_size(array("2020-01-02", "2022-01-03", "2021-01-01", 
"1996-04-17")), array_shuffle(array("2020-01-02", "2022-01-03", "2021-01-01", 
"1996-04-17"), 0), shuffle(array("2020-01-02", "2022-01-03", "2021-01-01", 
"1996-04-17"), 0)"""
-
-    // array_zip
-    qt_sql "select array_zip(['a', 'b', 'c'], ['d', 'e', 'f'])"
-    qt_sql "select array_zip(['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 
'i'])"
-    qt_sql "select array_zip([1, 2, 3, 4, 5], ['d', 'o', 'r', 'i', 's'])"
-    qt_sql "select array_zip([1.1, 2.2, 3.3], [1, 2, 3])"
-    qt_sql "select array_zip([1, null, 3], [null, 'b', null])"
-    qt_sql "select array_zip(array(cast (3.05 as decimal(10,3)), cast (2.22 as 
decimal(10,3))), array(cast (3.14 as decimal(10,3)), cast (6.66 as 
decimal(10,3))))" 
-    qt_sql "select array_zip(array(cast ('2000-03-05' as datev2), cast 
('2023-03-10' as datev2)), array(cast ('2000-02-02' as datev2), cast 
('2023-03-10' as datev2)))"
-    qt_sql "select array_zip(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))))"
-    qt_sql "select array_zip([1, 2, 3], null, ['foo', 'bar', 'test'])"
-
-    qt_sql "select array(8, null)"
-    qt_sql "select array('a', 1, 2)"
-    qt_sql "select array(null, null, null)"
-
-    // array_enumerate_uniq
-    qt_sql "select array_enumerate_uniq([])"
-    qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5])"
-    qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])"
-    qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 
3, 4, 5])"
-    qt_sql "select array_enumerate_uniq([1, 1, 2, 2, 3, 3, 4, 4])"
-    qt_sql "select array_enumerate_uniq([1, 2, 3, 1, 3, 4, 2, 5, 4, 5])"
-    qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 
1, 1, 1, 1])"
-    qt_sql "select array_enumerate_uniq([null])"
-    qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5, null, null])"
-    qt_sql "select array_enumerate_uniq([1, null, 2, null, 3, null, 4, 1, 
null, 2, null, 3, null, 4])"
-    qt_sql "select array_enumerate_uniq(['11', '22', '33', '11', '33', '22'])"
-    qt_sql "select array_enumerate_uniq(array(cast (24.99 as decimal(10,3)), 
cast (25.99 as decimal(10,3)), cast (24.99 as decimal(10,3))))"
-    qt_sql "select array_enumerate_uniq(array(cast ('2023-02-06 22:07:34.999' 
as datetimev2(3)), cast ('2023-02-04 23:07:34.999' as datetimev2(3)), cast 
('2023-02-06 22:07:34.999' as datetimev2(3))))"
-    qt_sql "select array_enumerate_uniq(array(cast (384.2933 as decimalv3(7, 
4)), cast (984.1913 as decimalv3(7, 4)), cast (384.2933 as decimalv3(7, 4)), 
cast (722.9333 as decimalv3(7, 4)), cast (384.2933 as decimalv3(7, 4))))"
-    qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])"
-    qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1], [1, 1, 1, 1, 1])"
-    qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1], [1, 1, 1, 1, 1])"
-    qt_sql "select array_enumerate_uniq([1, 1, 2, 2, 1, 2], [1, 2, 1, 2, 2, 
1])"
-    qt_sql "select array_enumerate_uniq([1, null, 1, null], [null, 1, null, 
1])"
-    qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1, 1], [2, 1, 2, 1, 2, 
1], [3, 1, 3, 1, 3, 1])"
-    qt_sql "select array_enumerate_uniq([1, 3, 1], [2.0, 5.0, 2.0], ['3', '8', 
'3'], array(cast (34.9876 as decimalv3(6, 4)), cast (89.9865 as decimalv3(6, 
4)), cast (34.9876 as decimalv3(6, 4))))"
-    
-    // array_pushfront
-    qt_sql "select array_pushfront([1, 2, 3], 6)"
-    qt_sql "select array_pushfront([1, 2, 3], null)"
-    qt_sql "select array_pushfront(null, 6)"
-    qt_sql "select array_pushfront([1.111, 2.222, 3.333], 9.999)"
-    qt_sql "select array_pushfront(['aaa', 'bbb', 'ccc'], 'dddd')"
-    qt_sql "select array_pushfront(array(cast (12.99 as decimal(10,3)), cast 
(34.99 as decimal(10,3))), cast (999.28 as decimal(10,3)))"
-    qt_sql "select array_pushfront(array(cast ('2023-03-05' as datev2), cast 
('2023-03-04' as datev2)), cast ('2023-02-05' as datev2))"
-    qt_sql "select array_pushfront(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))), cast 
('2023-03-08 16:23:54.999' as datetimev2(3)))"
-    qt_sql "select array_pushfront(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), cast (333.333 as decimalv3(6,3)))"
-
-    // array_pushback
-    qt_sql "select array_pushback([1, 2, 3], 6)"
-    qt_sql "select array_pushback([1, 2, 3], null)"
-    qt_sql "select array_pushback(null, 6)"
-    qt_sql "select array_pushback([1.111, 2.222, 3.333], 9.999)"
-    qt_sql "select array_pushback(['aaa', 'bbb', 'ccc'], 'dddd')"
-    qt_sql "select array_pushback(array(cast (12.99 as decimal(10,3)), cast 
(34.99 as decimal(10,3))), cast (999.28 as decimal(10,3)))"
-    qt_sql "select array_pushback(array(cast ('2023-03-05' as datev2), cast 
('2023-03-04' as datev2)), cast ('2023-02-05' as datev2))"
-    qt_sql "select array_pushback(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))), cast 
('2023-03-08 16:23:54.999' as datetimev2(3)))"
-    qt_sql "select array_pushback(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), cast (333.333 as decimalv3(6,3)))"
-    qt_sql "select array_pushback([null,null], null)"
-    qt_sql "select array_pushback([null,null,null,null], 80)"
-
-    // array_cum_sum
-    qt_sql "select array_cum_sum([0, 2, 127])"
-    qt_sql "select array_cum_sum([254, 4, 0])"
-    qt_sql "select array_cum_sum([1.0, 2.1 ,3.2, 4.3, 5.4])"
-    qt_sql "select array_cum_sum([-1, 2 ,-3, 4, -5])"
-    qt_sql "select array_cum_sum([-5.23, 4.12, -3.02, 2.00 ,1.01])"
-    qt_sql "select array_cum_sum([1, 2, 3, null])"
-    qt_sql "select array_cum_sum([null, 1, null, 3, 8, null])"
-    qt_sql "select array_cum_sum([null, null])"
-    qt_sql "select array_cum_sum([8])"
-    qt_sql "select array_cum_sum([1.1])"
-    qt_sql "select array_cum_sum([null])"
-    qt_sql "select array_cum_sum([])"
-    qt_sql "select array_cum_sum(array(cast (12.99 as decimal(10,3)), cast 
(34.99 as decimal(10,3)), cast (999.28 as decimal(10,3))))"
-    qt_sql "select array_cum_sum(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
-    qt_sql "select array_cum_sum(array(cast (11.9999 as decimalv3(6,4)),cast 
(22.0001 as decimalv3(6,4))))"
-
-    // abnormal test
-    try {
-        sql "select array_intersect([1, 2, 3, 1, 2, 3], '1[3, 2, 5]')"
-    } catch (Exception ex) {
-        assert("${ex}".contains("errCode = 2, detailMessage = No matching 
function with signature: array_intersect"))
-    }
+        // array_contains function
+        qt_sql "select array_contains([1.111, 2, 3.333], 2);"
+        qt_sql "select array_contains([1,2,3], 1)"
+        qt_sql "select array_contains([1,2,3], 4)"
+        qt_sql "select array_contains([1,2,3,NULL], 1)"
+        qt_sql "select array_contains([1,2,3,NULL], NULL)"
+        qt_sql "select array_contains([], true)"
+        qt_sql "select array_contains([], NULL)"
+        qt_sql "select array_contains(NULL, 1)"
+        qt_sql "select array_contains(NULL, NULL)"
+        qt_sql "select array_contains([true], false)"
+        qt_sql "select array_contains(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), cast 
('2023-02-04 22:07:34.999' as datetimev2(3)))"
+        qt_sql "select array_contains(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_contains(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (111.111 as 
decimalv3(6,3)))"
+
+        // array_position function
+        qt_sql "select array_position([1.111, 2, 3.333], 2);"
+        qt_sql "select array_position([1,2,3], 1)"
+        qt_sql "select array_position([1,2,3], 3)"
+        qt_sql "select array_position([1,2,3], 4)"
+        qt_sql "select array_position([NULL,2,3], 2)"
+        qt_sql "select array_position([NULL,2,3], NULL)"
+        qt_sql "select array_position([], true)"
+        qt_sql "select array_position([], NULL)"
+        qt_sql "select array_position(NULL, 1)"
+        qt_sql "select array_position(NULL, NULL)"
+        qt_sql "select array_position([null], true)"
+        qt_sql "select array_position([0], null)"
+        qt_sql "select array_position([null, '1'], '')"
+        qt_sql "select array_position([''], null)"
+        qt_sql "select array_position([false, NULL, true], true)"
+        qt_sql "select array_position(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), cast 
('2023-02-04 22:07:34.999' as datetimev2(3)))"
+        qt_sql "select array_position(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_position(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (111.111 as 
decimalv3(6,3)))"
+
+        // element_at function
+        qt_sql "select element_at([1,2,3], 1)"
+        qt_sql "select element_at([1,2,3], 3)"
+        qt_sql "select element_at([1,2,3], 4)"
+        qt_sql "select element_at([1,2,3], -1)"
+        qt_sql "select element_at([1,2,3], NULL)"
+        qt_sql "select element_at([1,2,NULL], 3)"
+        qt_sql "select element_at([1,2,NULL], 2)"
+        qt_sql "select element_at([], -1)"
+        qt_sql "select element_at([true, NULL, false], 2)"
+        qt_sql "select element_at(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), 1)"
+        qt_sql "select element_at(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), 2)"
+        qt_sql "select element_at(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), 1)"
+
+        // array subscript function
+        qt_sql "select [1,2,3][1]"
+        qt_sql "select [1,2,3][3]"
+        qt_sql "select [1,2,3][4]"
+        qt_sql "select [1,2,3][-1]"
+        qt_sql "select [1,2,3][NULL]"
+        qt_sql "select [1,2,NULL][3]"
+        qt_sql "select [1,2,NULL][2]"
+        qt_sql "select [][-1]"
+        qt_sql "select [true, false]"
+        qt_sql "select (array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))[2]"
+        qt_sql "select (array(cast ('2023-02-04' as datev2),cast ('2023-02-05' 
as datev2)))[2]"
+        qt_sql "select (array(cast (111.111 as decimalv3(6,3)),cast (222.222 
as decimalv3(6,3))))[2]"
+
+        // array_aggregation function
+        qt_sql "select array_avg([1,2,3])"
+        qt_sql "select array_sum([1,2,3])"
+        qt_sql "select array_min([1,2,3])"
+        qt_sql "select array_max([1,2,3])"
+        qt_sql "select array_product([1,2,3])"
+        qt_sql "select array_avg([1,2,3,null])"
+        qt_sql "select array_sum([1,2,3,null])"
+        qt_sql "select array_min([1,2,3,null])"
+        qt_sql "select array_max([1,2,3,null])"
+        qt_sql "select array_product([1,2,3,null])"
+        qt_sql "select array_avg([])"
+        qt_sql "select array_sum([])"
+        qt_sql "select array_min([])"
+        qt_sql "select array_max([])"
+        qt_sql "select array_product([])"
+        qt_sql "select array_avg([null])"
+        qt_sql "select array_sum([null])"
+        qt_sql "select array_min([null])"
+        qt_sql "select array_max([null])"
+        qt_sql "select array_product([null])"
+        qt_sql "select array_product([1.12, 3.45, 4.23])"
+        qt_sql "select array_product([1.12, 3.45, -4.23])"
+        qt_sql "select array_min(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))"
+        qt_sql "select array_max(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))"
+        qt_sql "select array_min(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_max(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_avg(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
+        qt_sql "select array_sum(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
+        qt_sql "select array_min(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
+        qt_sql "select array_max(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
+        qt_sql "select array_product(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_distinct function
+        qt_sql "select array_distinct([1,1,2,2,3,3])"
+        qt_sql "select array_distinct([1,1,2,2,3,3,null])"
+        qt_sql "select array_distinct([1,1,3,3,null, null, null])"
+        qt_sql "select array_distinct(['a','a','a'])"
+        qt_sql "select array_distinct([null, 'a','a','a', null])"
+        qt_sql "select array_distinct([true, false, false, null])"
+        qt_sql "select array_distinct([])"
+        qt_sql "select array_distinct([null,null])"
+        qt_sql "select array_distinct([1, 0, 0, null])"
+        qt_sql "select array_distinct(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3)),cast 
('2023-02-04 23:07:34.999' as datetimev2(3))))"
+        qt_sql "select array_distinct(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2),cast ('2023-02-05' as datev2)))"
+        qt_sql "select array_distinct(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+
+        // array_remove function
+        qt_sql "select array_remove([1,2,3], 1)"
+        qt_sql "select array_remove([1,2,3,null], 1)"
+        qt_sql "select array_remove(['a','b','c'], 'a')"
+        qt_sql "select array_remove(['a','b','c',null], 'a')"
+        qt_sql "select array_remove([true, false, false], false)"
+        qt_sql "select array_remove(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), cast 
('2023-02-04 22:07:34.999' as datetimev2(3)))"
+        qt_sql "select array_remove(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_remove(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (111.111 as 
decimalv3(6,3)))"
+
+        // array_sort function
+        qt_sql_array_sort1 "select array_sort([1,2,3])"
+        qt_sql_array_sort2 "select array_sort([3,2,1])"
+        qt_sql_array_sort3 "select array_sort([1,2,3,null])"
+        qt_sql_array_sort4 "select array_sort([null,1,2,3])"
+        qt_sql_array_sort5 "select array_sort(['a','b','c'])"
+        qt_sql_array_sort6 "select array_sort(['c','b','a'])"
+        qt_sql_array_sort7 "select array_sort([true, false, true])"
+        qt_sql_array_sort8 "select array_sort([])"
+        qt_sql_array_sort9 "select array_sort(array(cast ('2023-02-06 
22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql_array_sort10 "select array_sort(array(cast ('2023-02-06' as 
datev2),cast ('2023-02-05' as datev2)))"
+        qt_sql_array_sort11 "select array_sort(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_reverse_sort function
+        qt_sql_array_reverse_sort1 "select array_reverse_sort([1,2,3])"
+        qt_sql_array_reverse_sort2 "select array_reverse_sort([3,2,1])"
+        qt_sql_array_reverse_sort3 "select array_reverse_sort([1,2,3,null])"
+        qt_sql_array_reverse_sort4 "select array_reverse_sort([null,1,2,3])"
+        qt_sql_array_reverse_sort5 "select array_reverse_sort(['a','b','c'])"
+        qt_sql_array_reverse_sort6 "select array_reverse_sort(['c','b','a'])"
+        qt_sql_array_reverse_sort7 "select array_reverse_sort([true, false, 
true])"
+        qt_sql_array_reverse_sort8 "select array_reverse_sort([])"
+        qt_sql_array_reverse_sort9 "select array_reverse_sort(array(cast 
('2023-02-06 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql_array_reverse_sort10 "select array_reverse_sort(array(cast 
('2023-02-06' as datev2),cast ('2023-02-05' as datev2)))"
+        qt_sql_array_reverse_sort11 "select array_reverse_sort(array(cast 
(111.111 as decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_overlap function
+        qt_sql "select arrays_overlap([1,2,3], [4,5,6])"
+        qt_sql "select arrays_overlap([1,2,3], [3,4,5])"
+        qt_sql "select arrays_overlap([1,2,3,null], [3,4,5])"
+        qt_sql "select arrays_overlap([true], [false])"
+        qt_sql "select arrays_overlap([], [])"
+        qt_sql "select arrays_overlap(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select arrays_overlap(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-08 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select arrays_overlap(array(cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select arrays_overlap(array(cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-08' as datev2)))"
+        qt_sql "select arrays_overlap(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), array(cast (222.222 as 
decimalv3(6,3)),cast (333.333 as decimalv3(6,3))))"
+
+        // array_binary function
+        qt_sql "select array_union([1,2,3], [2,3,4])"
+        qt_sql "select array_except([1,2,3], [2,3,4])"
+        qt_sql "select array_intersect([1,2,3], [2,3,4])"
+        qt_sql "select array_union([1,2,3], [2,3,4,null])"
+        qt_sql "select array_except([1,2,3], [2,3,4,null])"
+        qt_sql "select array_intersect([1,2,3], [2,3,4,null])"
+        qt_sql "select array_union([true], [false])"
+        qt_sql "select array_except([true, false], [true])"
+        qt_sql "select array_intersect([false, true], [false])"
+        qt_sql "select array_union([], [])"
+        qt_sql "select array_except([], [])"
+        qt_sql "select array_intersect([], [])"
+        qt_sql "select array_union([], [1,2,3])"
+        qt_sql "select array_except([], [1,2,3])"
+        qt_sql "select array_intersect([], [1,2,3])"
+        qt_sql "select array_union([null], [1,2,3])"
+        qt_sql "select array_except([null], [1,2,3])"
+        qt_sql "select array_intersect([null], [1,2,3])"
+        qt_sql "select array_union([1], [100000000])"
+        qt_sql "select array_except([1], [100000000])"
+        qt_sql "select array_intersect([1], [100000000])"
+        qt_sql "select array_union(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_except(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_intersect(array(cast ('2023-02-06 22:07:34.999' 
as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_union(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_except(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_intersect(array(cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_union(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), array(cast (222.222 as decimalv3(6,3)),cast 
(333.333 as decimalv3(6,3))))"
+        qt_sql "select array_except(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), array(cast (222.222 as 
decimalv3(6,3)),cast (333.333 as decimalv3(6,3))))"
+        qt_sql "select array_intersect(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), array(cast (222.222 as 
decimalv3(6,3)),cast (333.333 as decimalv3(6,3))))"
+
+        // array_slice function
+        qt_sql "select [1,2,3][1:1]"
+        qt_sql "select [1,2,3][1:3]"
+        qt_sql "select [1,2,3][1:5]"
+        qt_sql "select [1,2,3][2:]"
+        qt_sql "select [1,2,3][-2:]"
+        qt_sql "select [1,2,3][2:-1]"
+        qt_sql "select [1,2,3][0:]"
+        qt_sql "select [1,2,3][-5:]"
+        qt_sql "select [true, false, false][2:]"
+        qt_sql "select (array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))[1:2]"
+        qt_sql "select (array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)))[1:2]"
+        qt_sql "select (array(cast (111.111 as decimalv3(6,3)),cast (222.222 
as decimalv3(6,3))))[1:2]"
+
+        // array_intersect
+        qt_sql_intersect_1 "select array_intersect([1,2,3], [1,2,3], [null])"
+        qt_sql_intersect_2 "select array_intersect([1, 2, null], [1, 3, null], 
[1,2,3,null])"
+        qt_sql_intersect_3 "select array_intersect([1,2,3, null], 
[1,2,3,null], [1,2,null], [1, null])"
+        qt_sql_intersect_4 "select array_intersect([1,2,3], [1,2,3], [null], 
[])"
+
+        // array_union-with-multiple-arguments
+        qt_sql_union_1 "select array_union([1,2,3], [1,2,3], [null])"
+        qt_sql_union_2 "select array_union([1, 2, null], [1, 3, null], 
[1,2,3,null])"
+        qt_sql_union_3 "select array_union([1,2,3, null], [1,2,3,null], 
[1,2,null], [1, null])"
+        qt_sql_union_4 "select array_union([1,2,3], [1,2,3], [null], [])"
+
+        // array_popfront function
+        qt_sql "select array_popfront([1,2,3,4,5,6])"
+        qt_sql "select array_popfront([])"
+        qt_sql "select array_popfront(null)"
+        qt_sql "select array_popfront([null,2,3,4,5])"
+        qt_sql "select array_popfront([1,2,3,4,null])"
+        qt_sql "select array_popfront(['1','2','3','4','5','6'])"
+        qt_sql "select array_popfront([null,'2','3','4','5','6'])"
+        qt_sql "select array_popfront(['1','2','3','4','5',null])"
+        qt_sql "select array_popfront(array(cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2), cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_popfront(array(null, cast ('2023-02-06' as 
datev2), cast ('2023-02-05' as datev2), cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_popfront(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3)), cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_popfront(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_join function
+        qt_sql "select array_join([1, 2, 3], '_')"
+        qt_sql "select array_join(['1', '2', '3', null], '_')"
+        qt_sql "select array_join([null, '1', '2', '3', null], '_')"
+        qt_sql "select array_join(['', '2', '3'], '_')"
+        qt_sql "select array_join(['1', '2', ''], '_')"
+        qt_sql "select array_join(['1', '2', '', null], '_')"
+        qt_sql "select array_join(['', '', '3'], '_')"
+        qt_sql "select array_join(['1', '2', '', ''], '_')"
+        qt_sql "select array_join([null, null, '1', '2', '', '', null], '_')"
+        qt_sql "select array_join([null, null, 1, 2, '', '', null], '_', 
'any')"
+        qt_sql "select array_join([''], '_')"
+        qt_sql "select array_join(['', ''], '_')"
+        qt_sql_array_with_constant1 "select array_with_constant(3, '_'), 
array_repeat('_', 3)"
+        qt_sql_array_with_constant2 "select array_with_constant(2, '1'), 
array_repeat('1', 2)"
+        qt_sql_array_with_constant3 "select array_with_constant(4, 1223), 
array_repeat(1223, 4)"
+        qt_sql_array_with_constant4 "select array_with_constant(8, null), 
array_repeat(null, 8)"
+        qt_sql_array_with_constant5 "select array_with_constant(null, 'abc'), 
array_repeat('abc', null)"
+        qt_sql_array_with_constant6 "select array_with_constant(null, null), 
array_repeat(null, null)"
+        // array_compact function
+        qt_sql "select array_compact([1, 2, 3, 3, null, null, 4, 4])"
+        qt_sql "select array_compact([null, null, null])"
+        qt_sql "select array_compact([1.2, 1.2, 3.4, 3.3, 2.1])"
+        qt_sql "select array_compact(['a','b','c','c','d'])"
+        qt_sql "select array_compact(['aaa','aaa','bbb','ccc','ccccc',null, 
null,'dddd'])"
+        qt_sql "select array_compact(['2015-03-13','2015-03-13'])"
+        qt_sql "select array_compact(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3)), cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_compact(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2), cast ('2023-02-07' as datev2), cast ('2023-02-05' as 
datev2)))"
+        qt_sql "select array_compact(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3)),cast (222.222 as 
decimalv3(6,3)),cast (333.333 as decimalv3(6,3))))"
+        qt_sql "select array_compact(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_apply
+        qt_sql """select array_apply([1000000, 1000001, 1000002], '=', 
1000002)"""
+        qt_sql """select array_apply([1.111, 2.222, 3.333], '>=', 2)"""
+        qt_sql """select array_apply(cast(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17") as array<datetimev2>), ">", '2020-01-02')"""
+        qt_sql """select array_apply(array(cast (24.99 as decimal(10,3)),cast 
(25.99 as decimal(10,3))), ">", '25')"""
+        qt_sql """select array_apply(array(cast (24.99 as decimal(10,3)),cast 
(25.99 as decimal(10,3))), "!=", '25')"""
+        // qt_sql """select array_apply(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), ">", '111.111')"""
+
+        qt_sql "select array_concat([1, 2, 3], [2, 3, 4], [8, 1, 2], [9])"
+        qt_sql "select array_concat([12, 23], [25, null], [null], [66])"
+        qt_sql "select array_concat([1.2, 1.8], [9.0, 2.2], [2.8])"
+        qt_sql "select array_concat(['aaa', null], ['bbb', 'fff'], [null, 
'ccc'])"
+        qt_sql "select array_concat(null, [1, 2, 3], null)"
+        qt_sql "select array_concat(array(cast (12.99 as decimal(10,3)), cast 
(34.99 as decimal(10,3))), array(cast (999.28 as decimal(10,3)), cast (123.99 
as decimal(10,3))))"
+        qt_sql "select array_concat(array(cast ('2023-03-05' as datev2), cast 
('2023-03-04' as datev2)), array(cast ('2023-02-01' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_concat(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))))"
+
+        // array_shuffle
+        // do not check result, since shuffle result is random
+        sql "SELECT array_sum(array_shuffle([1, 2, 3, 3, null, null, 4, 4])), 
array_shuffle([1, 2, 3, 3, null, null, 4, 4], 0), shuffle([1, 2, 3, 3, null, 
null, 4, 4], 0)"
+        sql "SELECT array_sum(array_shuffle([1.111, 2.222, 3.333])), 
array_shuffle([1.111, 2.222, 3.333], 0), shuffle([1.111, 2.222, 3.333], 0)"
+        sql "SELECT array_size(array_shuffle(['aaa', null, 'bbb', 'fff'])), 
array_shuffle(['aaa', null, 'bbb', 'fff'], 0), shuffle(['aaa', null, 'bbb', 
'fff'], 0)"
+        sql """select array_size(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17")), array_shuffle(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17"), 0), shuffle(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17"), 0)"""
+
+        // array_zip
+        qt_sql "select array_zip(['a', 'b', 'c'], ['d', 'e', 'f'])"
+        qt_sql "select array_zip(['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 
'i'])"
+        qt_sql "select array_zip([1, 2, 3, 4, 5], ['d', 'o', 'r', 'i', 's'])"
+        qt_sql "select array_zip([1.1, 2.2, 3.3], [1, 2, 3])"
+        qt_sql "select array_zip([1, null, 3], [null, 'b', null])"
+        qt_sql "select array_zip(array(cast (3.05 as decimal(10,3)), cast 
(2.22 as decimal(10,3))), array(cast (3.14 as decimal(10,3)), cast (6.66 as 
decimal(10,3))))"
+        qt_sql "select array_zip(array(cast ('2000-03-05' as datev2), cast 
('2023-03-10' as datev2)), array(cast ('2000-02-02' as datev2), cast 
('2023-03-10' as datev2)))"
+        qt_sql "select array_zip(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))))"
+        qt_sql "select array_zip([1, 2, 3], null, ['foo', 'bar', 'test'])"
+
+        qt_sql "select array(8, null)"
+        qt_sql "select array('a', 1, 2)"
+        qt_sql "select array(null, null, null)"
+
+        // array_enumerate_uniq
+        qt_sql "select array_enumerate_uniq([])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 
2, 3, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 1, 2, 2, 3, 3, 4, 4])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 1, 3, 4, 2, 5, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 
1, 1, 1, 1, 1])"
+        qt_sql "select array_enumerate_uniq([null])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5, null, null])"
+        qt_sql "select array_enumerate_uniq([1, null, 2, null, 3, null, 4, 1, 
null, 2, null, 3, null, 4])"
+        qt_sql "select array_enumerate_uniq(['11', '22', '33', '11', '33', 
'22'])"
+        qt_sql "select array_enumerate_uniq(array(cast (24.99 as 
decimal(10,3)), cast (25.99 as decimal(10,3)), cast (24.99 as decimal(10,3))))"
+        qt_sql "select array_enumerate_uniq(array(cast ('2023-02-06 
22:07:34.999' as datetimev2(3)), cast ('2023-02-04 23:07:34.999' as 
datetimev2(3)), cast ('2023-02-06 22:07:34.999' as datetimev2(3))))"
+        qt_sql "select array_enumerate_uniq(array(cast (384.2933 as 
decimalv3(7, 4)), cast (984.1913 as decimalv3(7, 4)), cast (384.2933 as 
decimalv3(7, 4)), cast (722.9333 as decimalv3(7, 4)), cast (384.2933 as 
decimalv3(7, 4))))"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1], [1, 1, 1, 1, 1])"
+        qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1], [1, 1, 1, 1, 1])"
+        qt_sql "select array_enumerate_uniq([1, 1, 2, 2, 1, 2], [1, 2, 1, 2, 
2, 1])"
+        qt_sql "select array_enumerate_uniq([1, null, 1, null], [null, 1, 
null, 1])"
+        qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1, 1], [2, 1, 2, 1, 
2, 1], [3, 1, 3, 1, 3, 1])"
+        qt_sql "select array_enumerate_uniq([1, 3, 1], [2.0, 5.0, 2.0], ['3', 
'8', '3'], array(cast (34.9876 as decimalv3(6, 4)), cast (89.9865 as 
decimalv3(6, 4)), cast (34.9876 as decimalv3(6, 4))))"
+
+        // array_pushfront
+        qt_sql "select array_pushfront([1, 2, 3], 6)"
+        qt_sql "select array_pushfront([1, 2, 3], null)"
+        qt_sql "select array_pushfront(null, 6)"
+        qt_sql "select array_pushfront([1.111, 2.222, 3.333], 9.999)"
+        qt_sql "select array_pushfront(['aaa', 'bbb', 'ccc'], 'dddd')"
+        qt_sql "select array_pushfront(array(cast (12.99 as decimal(10,3)), 
cast (34.99 as decimal(10,3))), cast (999.28 as decimal(10,3)))"
+        qt_sql "select array_pushfront(array(cast ('2023-03-05' as datev2), 
cast ('2023-03-04' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_pushfront(array(cast ('2023-03-05 12:23:24.999' 
as datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))), cast 
('2023-03-08 16:23:54.999' as datetimev2(3)))"
+        qt_sql "select array_pushfront(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (333.333 as 
decimalv3(6,3)))"
+
+        // abnormal test
+        test {
+            sql "select array_intersect([1, 2, 3, 1, 2, 3], '1[3, 2, 5]')"
+            exception "No matching function with signature"
+         }
+        // array_pushback
+        qt_sql "select array_pushback([1, 2, 3], 6)"
+        qt_sql "select array_pushback([1, 2, 3], null)"
+        qt_sql "select array_pushback(null, 6)"
+        qt_sql "select array_pushback([1.111, 2.222, 3.333], 9.999)"
+        qt_sql "select array_pushback(['aaa', 'bbb', 'ccc'], 'dddd')"
+        qt_sql "select array_pushback(array(cast (12.99 as decimal(10,3)), 
cast (34.99 as decimal(10,3))), cast (999.28 as decimal(10,3)))"
+        qt_sql "select array_pushback(array(cast ('2023-03-05' as datev2), 
cast ('2023-03-04' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_pushback(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))), cast 
('2023-03-08 16:23:54.999' as datetimev2(3)))"
+        qt_sql "select array_pushback(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (333.333 as 
decimalv3(6,3)))"
+        qt_sql "select array_pushback([null,null], null)"
+        qt_sql "select array_pushback([null,null,null,null], 80)"
+
+        // array_cum_sum
+        qt_sql "select array_cum_sum([0, 2, 127])"
+        qt_sql "select array_cum_sum([254, 4, 0])"
+        qt_sql "select array_cum_sum([1.0, 2.1 ,3.2, 4.3, 5.4])"
+        qt_sql "select array_cum_sum([-1, 2 ,-3, 4, -5])"
+        qt_sql "select array_cum_sum([-5.23, 4.12, -3.02, 2.00 ,1.01])"
+        qt_sql "select array_cum_sum([1, 2, 3, null])"
+        qt_sql "select array_cum_sum([null, 1, null, 3, 8, null])"
+        qt_sql "select array_cum_sum([null, null])"
+        qt_sql "select array_cum_sum([8])"
+        qt_sql "select array_cum_sum([1.1])"
+        qt_sql "select array_cum_sum([null])"
+        qt_sql "select array_cum_sum([])"
+        qt_sql "select array_cum_sum(array(cast (12.99 as decimal(10,3)), cast 
(34.99 as decimal(10,3)), cast (999.28 as decimal(10,3))))"
+        qt_sql "select array_cum_sum(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+        qt_sql "select array_cum_sum(array(cast (11.9999 as 
decimalv3(6,4)),cast (22.0001 as decimalv3(6,4))))"
+
+        // abnormal test
+        test {
+            sql "select array_intersect([1, 2, 3, 1, 2, 3], '1[3, 2, 5]')"
+            exception "No matching function with signature"
+        }
+
+        // array_min/max with nested array for args
+        test {
+            sql "select array_min(array(1,2,3),array(4,5,6));"
+            exception ""
+        }
+        test {
+            sql "select array_max(array(1,2,3),array(4,5,6));"
+            exception ""
+        }
+
+        test {
+            sql "select array_min(array(split_by_string('a,b,c',',')));"
+            exception ""
+        }
+        test {
+            sql "select array_max(array(split_by_string('a,b,c',',')));"
+            exception ""
+        }
+
+        // array_map with string is can be succeed
+        qt_sql_array_map """ select array_map(x->x!='', 
split_by_string('amory,is,better,committing', ',')) """
+
+        // array_apply with string should be failed
+        test {
+           sql """select 
array_apply(split_by_string("amory,is,better,committing", ","), '!=', '');"""
+           exception("No matching function with signature")
+        }
+
+        qt_sql """ SELECT ARRAY_AVG(CAST([] AS ARRAY < DECIMALV3(1,0) > )); """
+
+        // set session variable for enale_fold_constant_by_be and 
enable_decimal256
+        sql """ set enable_fold_constant_by_be = 1 """
+        sql """ set enable_decimal256 = true """
+
+        
+        // array function
+        // array_nested function
+        qt_sql "select a from (select array(1, 1, 2, 2, 2, 2) as a) t"
+
+        // array with decimal and other types
+        qt_sql_1 """select array(1.0,2.0,null, null,2.0);"""
+        qt_sql_1 """select array('a',2.0,null, null,2.0);"""
+        qt_sql_1 """select array(1,2.0,null, null,2.0);"""
+        qt_sql_2 """select array_sort(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_3 """select array_min(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_4 """select array_max(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_5 """select array_avg(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_6 """select array_sum(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_7 """select array_product(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_8 """select array_distinct(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_9 """select array_sort(array_intersect(array(1.0,2.0,null, 
null,2.0), array(1.0,2.0,null, null,2.0)));"""
+        qt_sql_10 """select array_sort(array_except(array(1.0,2.0,null, 
null,2.0), array(1.0,2.0,null, null,2.0)));"""
+        qt_sql_11 """select array_sort(array_union(array(1.0,2.0,null, 
null,2.0), array(1.0,2.0,null, null,2.0)));"""
+        qt_sql_14 """select array_popfront(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_15 """select array_popback(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_16 """select array_concat(array(1.0,2.0,null, null,2.0), 
array(1.0,2.0,null, null,2.0));"""
+
+
+        // array_contains function
+        qt_sql "select array_contains([1.111, 2, 3.333], 2);"
+        qt_sql "select array_contains([1,2,3], 1)"
+        qt_sql "select array_contains([1,2,3], 4)"
+        qt_sql "select array_contains([1,2,3,NULL], 1)"
+        qt_sql "select array_contains([1,2,3,NULL], NULL)"
+        qt_sql "select array_contains([], true)"
+        qt_sql "select array_contains([], NULL)"
+        qt_sql "select array_contains(NULL, 1)"
+        qt_sql "select array_contains(NULL, NULL)"
+        qt_sql "select array_contains([true], false)"
+        qt_sql "select array_contains(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), cast 
('2023-02-04 22:07:34.999' as datetimev2(3)))"
+        qt_sql "select array_contains(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_contains(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (111.111 as 
decimalv3(6,3)))"
+
+        // array_position function
+        qt_sql "select array_position([1.111, 2, 3.333], 2);"
+        qt_sql "select array_position([1,2,3], 1)"
+        qt_sql "select array_position([1,2,3], 3)"
+        qt_sql "select array_position([1,2,3], 4)"
+        qt_sql "select array_position([NULL,2,3], 2)"
+        qt_sql "select array_position([NULL,2,3], NULL)"
+        qt_sql "select array_position([], true)"
+        qt_sql "select array_position([], NULL)"
+        qt_sql "select array_position(NULL, 1)"
+        qt_sql "select array_position(NULL, NULL)"
+        qt_sql "select array_position([null], true)"
+        qt_sql "select array_position([0], null)"
+        qt_sql "select array_position([null, '1'], '')"
+        qt_sql "select array_position([''], null)"
+        qt_sql "select array_position([false, NULL, true], true)"
+        qt_sql "select array_position(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), cast 
('2023-02-04 22:07:34.999' as datetimev2(3)))"
+        qt_sql "select array_position(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_position(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (111.111 as 
decimalv3(6,3)))"
+
+        // element_at function
+        qt_sql "select element_at([1,2,3], 1)"
+        qt_sql "select element_at([1,2,3], 3)"
+        qt_sql "select element_at([1,2,3], 4)"
+        qt_sql "select element_at([1,2,3], -1)"
+        qt_sql "select element_at([1,2,3], NULL)"
+        qt_sql "select element_at([1,2,NULL], 3)"
+        qt_sql "select element_at([1,2,NULL], 2)"
+        qt_sql "select element_at([], -1)"
+        qt_sql "select element_at([true, NULL, false], 2)"
+        qt_sql "select element_at(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), 1)"
+        qt_sql "select element_at(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), 2)"
+        qt_sql "select element_at(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), 1)"
+
+        // array subscript function
+        qt_sql "select [1,2,3][1]"
+        qt_sql "select [1,2,3][3]"
+        qt_sql "select [1,2,3][4]"
+        qt_sql "select [1,2,3][-1]"
+        qt_sql "select [1,2,3][NULL]"
+        qt_sql "select [1,2,NULL][3]"
+        qt_sql "select [1,2,NULL][2]"
+        qt_sql "select [][-1]"
+        qt_sql "select [true, false]"
+        qt_sql "select (array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))[2]"
+        qt_sql "select (array(cast ('2023-02-04' as datev2),cast ('2023-02-05' 
as datev2)))[2]"
+        qt_sql "select (array(cast (111.111 as decimalv3(6,3)),cast (222.222 
as decimalv3(6,3))))[2]"
+
+        // array_aggregation function
+        qt_sql "select array_avg([1,2,3])"
+        qt_sql "select array_sum([1,2,3])"
+        qt_sql "select array_min([1,2,3])"
+        qt_sql "select array_max([1,2,3])"
+        qt_sql "select array_product([1,2,3])"
+        qt_sql "select array_avg([1,2,3,null])"
+        qt_sql "select array_sum([1,2,3,null])"
+        qt_sql "select array_min([1,2,3,null])"
+        qt_sql "select array_max([1,2,3,null])"
+        qt_sql "select array_product([1,2,3,null])"
+        qt_sql "select array_avg([])"
+        qt_sql "select array_sum([])"
+        qt_sql "select array_min([])"
+        qt_sql "select array_max([])"
+        qt_sql "select array_product([])"
+        qt_sql "select array_avg([null])"
+        qt_sql "select array_sum([null])"
+        qt_sql "select array_min([null])"
+        qt_sql "select array_max([null])"
+        qt_sql "select array_product([null])"
+        qt_sql "select array_product([1.12, 3.45, 4.23])"
+        qt_sql "select array_product([1.12, 3.45, -4.23])"
+        qt_sql "select array_min(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))"
+        qt_sql "select array_max(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))"
+        qt_sql "select array_min(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_max(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_avg(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
+        qt_sql "select array_sum(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
+        qt_sql "select array_min(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
+        qt_sql "select array_max(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
+        qt_sql "select array_product(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_distinct function
+        qt_sql "select array_distinct([1,1,2,2,3,3])"
+        qt_sql "select array_distinct([1,1,2,2,3,3,null])"
+        qt_sql "select array_distinct([1,1,3,3,null, null, null])"
+        qt_sql "select array_distinct(['a','a','a'])"
+        qt_sql "select array_distinct([null, 'a','a','a', null])"
+        qt_sql "select array_distinct([true, false, false, null])"
+        qt_sql "select array_distinct([])"
+        qt_sql "select array_distinct([null,null])"
+        qt_sql "select array_distinct([1, 0, 0, null])"
+        qt_sql "select array_distinct(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3)),cast 
('2023-02-04 23:07:34.999' as datetimev2(3))))"
+        qt_sql "select array_distinct(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2),cast ('2023-02-05' as datev2)))"
+        qt_sql "select array_distinct(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+
+        // array_remove function
+        qt_sql "select array_remove([1,2,3], 1)"
+        qt_sql "select array_remove([1,2,3,null], 1)"
+        qt_sql "select array_remove(['a','b','c'], 'a')"
+        qt_sql "select array_remove(['a','b','c',null], 'a')"
+        qt_sql "select array_remove([true, false, false], false)"
+        qt_sql "select array_remove(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), cast 
('2023-02-04 22:07:34.999' as datetimev2(3)))"
+        qt_sql "select array_remove(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_remove(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (111.111 as 
decimalv3(6,3)))"
+
+        // array_sort function
+        qt_sql_array_sort1 "select array_sort([1,2,3])"
+        qt_sql_array_sort2 "select array_sort([3,2,1])"
+        qt_sql_array_sort3 "select array_sort([1,2,3,null])"
+        qt_sql_array_sort4 "select array_sort([null,1,2,3])"
+        qt_sql_array_sort5 "select array_sort(['a','b','c'])"
+        qt_sql_array_sort6 "select array_sort(['c','b','a'])"
+        qt_sql_array_sort7 "select array_sort([true, false, true])"
+        qt_sql_array_sort8 "select array_sort([])"
+        qt_sql_array_sort9 "select array_sort(array(cast ('2023-02-06 
22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql_array_sort10 "select array_sort(array(cast ('2023-02-06' as 
datev2),cast ('2023-02-05' as datev2)))"
+        qt_sql_array_sort11 "select array_sort(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_reverse_sort function
+        qt_sql_array_reverse_sort1 "select array_reverse_sort([1,2,3])"
+        qt_sql_array_reverse_sort2 "select array_reverse_sort([3,2,1])"
+        qt_sql_array_reverse_sort3 "select array_reverse_sort([1,2,3,null])"
+        qt_sql_array_reverse_sort4 "select array_reverse_sort([null,1,2,3])"
+        qt_sql_array_reverse_sort5 "select array_reverse_sort(['a','b','c'])"
+        qt_sql_array_reverse_sort6 "select array_reverse_sort(['c','b','a'])"
+        qt_sql_array_reverse_sort7 "select array_reverse_sort([true, false, 
true])"
+        qt_sql_array_reverse_sort8 "select array_reverse_sort([])"
+        qt_sql_array_reverse_sort9 "select array_reverse_sort(array(cast 
('2023-02-06 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql_array_reverse_sort10 "select array_reverse_sort(array(cast 
('2023-02-06' as datev2),cast ('2023-02-05' as datev2)))"
+        qt_sql_array_reverse_sort11 "select array_reverse_sort(array(cast 
(111.111 as decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_overlap function
+        qt_sql "select arrays_overlap([1,2,3], [4,5,6])"
+        qt_sql "select arrays_overlap([1,2,3], [3,4,5])"
+        qt_sql "select arrays_overlap([1,2,3,null], [3,4,5])"
+        qt_sql "select arrays_overlap([true], [false])"
+        qt_sql "select arrays_overlap([], [])"
+        qt_sql "select arrays_overlap(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select arrays_overlap(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-08 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select arrays_overlap(array(cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select arrays_overlap(array(cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-08' as datev2)))"
+        qt_sql "select arrays_overlap(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), array(cast (222.222 as 
decimalv3(6,3)),cast (333.333 as decimalv3(6,3))))"
+
+        // array_binary function
+        qt_sql "select array_union([1,2,3], [2,3,4])"
+        qt_sql "select array_except([1,2,3], [2,3,4])"
+        qt_sql "select array_intersect([1,2,3], [2,3,4])"
+        qt_sql "select array_union([1,2,3], [2,3,4,null])"
+        qt_sql "select array_except([1,2,3], [2,3,4,null])"
+        qt_sql "select array_intersect([1,2,3], [2,3,4,null])"
+        qt_sql "select array_union([true], [false])"
+        qt_sql "select array_except([true, false], [true])"
+        qt_sql "select array_intersect([false, true], [false])"
+        qt_sql "select array_union([], [])"
+        qt_sql "select array_except([], [])"
+        qt_sql "select array_intersect([], [])"
+        qt_sql "select array_union([], [1,2,3])"
+        qt_sql "select array_except([], [1,2,3])"
+        qt_sql "select array_intersect([], [1,2,3])"
+        qt_sql "select array_union([null], [1,2,3])"
+        qt_sql "select array_except([null], [1,2,3])"
+        qt_sql "select array_intersect([null], [1,2,3])"
+        qt_sql "select array_union([1], [100000000])"
+        qt_sql "select array_except([1], [100000000])"
+        qt_sql "select array_intersect([1], [100000000])"
+        qt_sql "select array_union(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_except(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_intersect(array(cast ('2023-02-06 22:07:34.999' 
as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_union(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_except(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_intersect(array(cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_union(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), array(cast (222.222 as decimalv3(6,3)),cast 
(333.333 as decimalv3(6,3))))"
+        qt_sql "select array_except(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), array(cast (222.222 as 
decimalv3(6,3)),cast (333.333 as decimalv3(6,3))))"
+        qt_sql "select array_intersect(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), array(cast (222.222 as 
decimalv3(6,3)),cast (333.333 as decimalv3(6,3))))"
+
+        // array_slice function
+        qt_sql "select [1,2,3][1:1]"
+        qt_sql "select [1,2,3][1:3]"
+        qt_sql "select [1,2,3][1:5]"
+        qt_sql "select [1,2,3][2:]"
+        qt_sql "select [1,2,3][-2:]"
+        qt_sql "select [1,2,3][2:-1]"
+        qt_sql "select [1,2,3][0:]"
+        qt_sql "select [1,2,3][-5:]"
+        qt_sql "select [true, false, false][2:]"
+        qt_sql "select (array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))[1:2]"
+        qt_sql "select (array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)))[1:2]"
+        qt_sql "select (array(cast (111.111 as decimalv3(6,3)),cast (222.222 
as decimalv3(6,3))))[1:2]"
+
+        // array_intersect
+        qt_sql_intersect_1 "select array_intersect([1,2,3], [1,2,3], [null])"
+        qt_sql_intersect_2 "select array_intersect([1, 2, null], [1, 3, null], 
[1,2,3,null])"
+        qt_sql_intersect_3 "select array_intersect([1,2,3, null], 
[1,2,3,null], [1,2,null], [1, null])"
+        qt_sql_intersect_4 "select array_intersect([1,2,3], [1,2,3], [null], 
[])"
+
+        // array_union-with-multiple-arguments
+        qt_sql_union_1 "select array_union([1,2,3], [1,2,3], [null])"
+        qt_sql_union_2 "select array_union([1, 2, null], [1, 3, null], 
[1,2,3,null])"
+        qt_sql_union_3 "select array_union([1,2,3, null], [1,2,3,null], 
[1,2,null], [1, null])"
+        qt_sql_union_4 "select array_union([1,2,3], [1,2,3], [null], [])"
+
+        // array_popfront function
+        qt_sql "select array_popfront([1,2,3,4,5,6])"
+        qt_sql "select array_popfront([])"
+        qt_sql "select array_popfront(null)"
+        qt_sql "select array_popfront([null,2,3,4,5])"
+        qt_sql "select array_popfront([1,2,3,4,null])"
+        qt_sql "select array_popfront(['1','2','3','4','5','6'])"
+        qt_sql "select array_popfront([null,'2','3','4','5','6'])"
+        qt_sql "select array_popfront(['1','2','3','4','5',null])"
+        qt_sql "select array_popfront(array(cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2), cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_popfront(array(null, cast ('2023-02-06' as 
datev2), cast ('2023-02-05' as datev2), cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_popfront(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3)), cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_popfront(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_join function
+        qt_sql "select array_join([1, 2, 3], '_')"
+        qt_sql "select array_join(['1', '2', '3', null], '_')"
+        qt_sql "select array_join([null, '1', '2', '3', null], '_')"
+        qt_sql "select array_join(['', '2', '3'], '_')"
+        qt_sql "select array_join(['1', '2', ''], '_')"
+        qt_sql "select array_join(['1', '2', '', null], '_')"
+        qt_sql "select array_join(['', '', '3'], '_')"
+        qt_sql "select array_join(['1', '2', '', ''], '_')"
+        qt_sql "select array_join([null, null, '1', '2', '', '', null], '_')"
+        qt_sql "select array_join([null, null, 1, 2, '', '', null], '_', 
'any')"
+        qt_sql "select array_join([''], '_')"
+        qt_sql "select array_join(['', ''], '_')"
+        qt_sql_array_with_constant1 "select array_with_constant(3, '_'), 
array_repeat('_', 3)"
+        qt_sql_array_with_constant2 "select array_with_constant(2, '1'), 
array_repeat('1', 2)"
+        qt_sql_array_with_constant3 "select array_with_constant(4, 1223), 
array_repeat(1223, 4)"
+        qt_sql_array_with_constant4 "select array_with_constant(8, null), 
array_repeat(null, 8)"
+        qt_sql_array_with_constant5 "select array_with_constant(null, 'abc'), 
array_repeat('abc', null)"
+        qt_sql_array_with_constant6 "select array_with_constant(null, null), 
array_repeat(null, null)"
+        // array_compact function
+        qt_sql "select array_compact([1, 2, 3, 3, null, null, 4, 4])"
+        qt_sql "select array_compact([null, null, null])"
+        qt_sql "select array_compact([1.2, 1.2, 3.4, 3.3, 2.1])"
+        qt_sql "select array_compact(['a','b','c','c','d'])"
+        qt_sql "select array_compact(['aaa','aaa','bbb','ccc','ccccc',null, 
null,'dddd'])"
+        qt_sql "select array_compact(['2015-03-13','2015-03-13'])"
+        qt_sql "select array_compact(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3)), cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_compact(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2), cast ('2023-02-07' as datev2), cast ('2023-02-05' as 
datev2)))"
+        qt_sql "select array_compact(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3)),cast (222.222 as 
decimalv3(6,3)),cast (333.333 as decimalv3(6,3))))"
+        qt_sql "select array_compact(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_apply
+        qt_sql """select array_apply([1000000, 1000001, 1000002], '=', 
1000002)"""
+        qt_sql """select array_apply([1.111, 2.222, 3.333], '>=', 2)"""
+        qt_sql """select array_apply(cast(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17") as array<datetimev2>), ">", '2020-01-02')"""
+        qt_sql """select array_apply(array(cast (24.99 as decimal(10,3)),cast 
(25.99 as decimal(10,3))), ">", '25')"""
+        qt_sql """select array_apply(array(cast (24.99 as decimal(10,3)),cast 
(25.99 as decimal(10,3))), "!=", '25')"""
+        // qt_sql """select array_apply(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), ">", '111.111')"""
+
+        qt_sql "select array_concat([1, 2, 3], [2, 3, 4], [8, 1, 2], [9])"
+        qt_sql "select array_concat([12, 23], [25, null], [null], [66])"
+        qt_sql "select array_concat([1.2, 1.8], [9.0, 2.2], [2.8])"
+        qt_sql "select array_concat(['aaa', null], ['bbb', 'fff'], [null, 
'ccc'])"
+        qt_sql "select array_concat(null, [1, 2, 3], null)"
+        qt_sql "select array_concat(array(cast (12.99 as decimal(10,3)), cast 
(34.99 as decimal(10,3))), array(cast (999.28 as decimal(10,3)), cast (123.99 
as decimal(10,3))))"
+        qt_sql "select array_concat(array(cast ('2023-03-05' as datev2), cast 
('2023-03-04' as datev2)), array(cast ('2023-02-01' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_concat(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))))"
+
+        // array_shuffle
+        // do not check result, since shuffle result is random
+        sql "SELECT array_sum(array_shuffle([1, 2, 3, 3, null, null, 4, 4])), 
array_shuffle([1, 2, 3, 3, null, null, 4, 4], 0), shuffle([1, 2, 3, 3, null, 
null, 4, 4], 0)"
+        sql "SELECT array_sum(array_shuffle([1.111, 2.222, 3.333])), 
array_shuffle([1.111, 2.222, 3.333], 0), shuffle([1.111, 2.222, 3.333], 0)"
+        sql "SELECT array_size(array_shuffle(['aaa', null, 'bbb', 'fff'])), 
array_shuffle(['aaa', null, 'bbb', 'fff'], 0), shuffle(['aaa', null, 'bbb', 
'fff'], 0)"
+        sql """select array_size(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17")), array_shuffle(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17"), 0), shuffle(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17"), 0)"""
+
+        // array_zip
+        qt_sql "select array_zip(['a', 'b', 'c'], ['d', 'e', 'f'])"
+        qt_sql "select array_zip(['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 
'i'])"
+        qt_sql "select array_zip([1, 2, 3, 4, 5], ['d', 'o', 'r', 'i', 's'])"
+        qt_sql "select array_zip([1.1, 2.2, 3.3], [1, 2, 3])"
+        qt_sql "select array_zip([1, null, 3], [null, 'b', null])"
+        qt_sql "select array_zip(array(cast (3.05 as decimal(10,3)), cast 
(2.22 as decimal(10,3))), array(cast (3.14 as decimal(10,3)), cast (6.66 as 
decimal(10,3))))"
+        qt_sql "select array_zip(array(cast ('2000-03-05' as datev2), cast 
('2023-03-10' as datev2)), array(cast ('2000-02-02' as datev2), cast 
('2023-03-10' as datev2)))"
+        qt_sql "select array_zip(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))))"
+        qt_sql "select array_zip([1, 2, 3], null, ['foo', 'bar', 'test'])"
+
+        qt_sql "select array(8, null)"
+        qt_sql "select array('a', 1, 2)"
+        qt_sql "select array(null, null, null)"
+
+        // array_enumerate_uniq
+        qt_sql "select array_enumerate_uniq([])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 
2, 3, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 1, 2, 2, 3, 3, 4, 4])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 1, 3, 4, 2, 5, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 
1, 1, 1, 1, 1])"
+        qt_sql "select array_enumerate_uniq([null])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5, null, null])"
+        qt_sql "select array_enumerate_uniq([1, null, 2, null, 3, null, 4, 1, 
null, 2, null, 3, null, 4])"
+        qt_sql "select array_enumerate_uniq(['11', '22', '33', '11', '33', 
'22'])"
+        qt_sql "select array_enumerate_uniq(array(cast (24.99 as 
decimal(10,3)), cast (25.99 as decimal(10,3)), cast (24.99 as decimal(10,3))))"
+        qt_sql "select array_enumerate_uniq(array(cast ('2023-02-06 
22:07:34.999' as datetimev2(3)), cast ('2023-02-04 23:07:34.999' as 
datetimev2(3)), cast ('2023-02-06 22:07:34.999' as datetimev2(3))))"
+        qt_sql "select array_enumerate_uniq(array(cast (384.2933 as 
decimalv3(7, 4)), cast (984.1913 as decimalv3(7, 4)), cast (384.2933 as 
decimalv3(7, 4)), cast (722.9333 as decimalv3(7, 4)), cast (384.2933 as 
decimalv3(7, 4))))"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1], [1, 1, 1, 1, 1])"
+        qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1], [1, 1, 1, 1, 1])"
+        qt_sql "select array_enumerate_uniq([1, 1, 2, 2, 1, 2], [1, 2, 1, 2, 
2, 1])"
+        qt_sql "select array_enumerate_uniq([1, null, 1, null], [null, 1, 
null, 1])"
+        qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1, 1], [2, 1, 2, 1, 
2, 1], [3, 1, 3, 1, 3, 1])"
+        qt_sql "select array_enumerate_uniq([1, 3, 1], [2.0, 5.0, 2.0], ['3', 
'8', '3'], array(cast (34.9876 as decimalv3(6, 4)), cast (89.9865 as 
decimalv3(6, 4)), cast (34.9876 as decimalv3(6, 4))))"
+
+        // array_pushfront
+        qt_sql "select array_pushfront([1, 2, 3], 6)"
+        qt_sql "select array_pushfront([1, 2, 3], null)"
+        qt_sql "select array_pushfront(null, 6)"
+        qt_sql "select array_pushfront([1.111, 2.222, 3.333], 9.999)"
+        qt_sql "select array_pushfront(['aaa', 'bbb', 'ccc'], 'dddd')"
+        qt_sql "select array_pushfront(array(cast (12.99 as decimal(10,3)), 
cast (34.99 as decimal(10,3))), cast (999.28 as decimal(10,3)))"
+        qt_sql "select array_pushfront(array(cast ('2023-03-05' as datev2), 
cast ('2023-03-04' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_pushfront(array(cast ('2023-03-05 12:23:24.999' 
as datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))), cast 
('2023-03-08 16:23:54.999' as datetimev2(3)))"
+        qt_sql "select array_pushfront(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (333.333 as 
decimalv3(6,3)))"
+
+        // array_pushback
+        qt_sql "select array_pushback([1, 2, 3], 6)"
+        qt_sql "select array_pushback([1, 2, 3], null)"
+        qt_sql "select array_pushback(null, 6)"
+        qt_sql "select array_pushback([1.111, 2.222, 3.333], 9.999)"
+        qt_sql "select array_pushback(['aaa', 'bbb', 'ccc'], 'dddd')"
+        qt_sql "select array_pushback(array(cast (12.99 as decimal(10,3)), 
cast (34.99 as decimal(10,3))), cast (999.28 as decimal(10,3)))"
+        qt_sql "select array_pushback(array(cast ('2023-03-05' as datev2), 
cast ('2023-03-04' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_pushback(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))), cast 
('2023-03-08 16:23:54.999' as datetimev2(3)))"
+        qt_sql "select array_pushback(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (333.333 as 
decimalv3(6,3)))"
+        qt_sql "select array_pushback([null,null], null)"
+        qt_sql "select array_pushback([null,null,null,null], 80)"
+
+        // array_cum_sum
+        qt_sql "select array_cum_sum([0, 2, 127])"
+        qt_sql "select array_cum_sum([254, 4, 0])"
+        qt_sql "select array_cum_sum([1.0, 2.1 ,3.2, 4.3, 5.4])"
+        qt_sql "select array_cum_sum([-1, 2 ,-3, 4, -5])"
+        qt_sql "select array_cum_sum([-5.23, 4.12, -3.02, 2.00 ,1.01])"
+        qt_sql "select array_cum_sum([1, 2, 3, null])"
+        qt_sql "select array_cum_sum([null, 1, null, 3, 8, null])"
+        qt_sql "select array_cum_sum([null, null])"
+        qt_sql "select array_cum_sum([8])"
+        qt_sql "select array_cum_sum([1.1])"
+        qt_sql "select array_cum_sum([null])"
+        qt_sql "select array_cum_sum([])"
+        qt_sql "select array_cum_sum(array(cast (12.99 as decimal(10,3)), cast 
(34.99 as decimal(10,3)), cast (999.28 as decimal(10,3))))"
+        qt_sql "select array_cum_sum(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+        qt_sql "select array_cum_sum(array(cast (11.9999 as 
decimalv3(6,4)),cast (22.0001 as decimalv3(6,4))))"
+
+        // abnormal test
+        test {
+            sql "select array_intersect([1, 2, 3, 1, 2, 3], '1[3, 2, 5]')"
+            exception "No matching function with signature"
+        }
+
+        // array_min/max with nested array for args
+        test {
+            sql "select array_min(array(1,2,3),array(4,5,6));"
+            exception ""
+        }
+        test {
+            sql "select array_max(array(1,2,3),array(4,5,6));"
+            exception ""
+        }
+
+        test {
+            sql "select array_min(array(split_by_string('a,b,c',',')));"
+            exception ""
+        }
+        test {
+            sql "select array_max(array(split_by_string('a,b,c',',')));"
+            exception ""
+        }
+
+        // array_map with string is can be succeed
+        qt_sql_array_map """ select array_map(x->x!='', 
split_by_string('amory,is,better,committing', ',')) """
+
+        // array_apply with string should be failed
+        test {
+           sql """select 
array_apply(split_by_string("amory,is,better,committing", ","), '!=', '');"""
+           exception("No matching function with")
+        }
+
+        qt_sql """ SELECT ARRAY_AVG(CAST([] AS ARRAY < DECIMALV3(1,0) > )); """
+
+        // set session variable for enale_fold_constant_by_be and 
enable_decimal256
+        sql """ set enable_fold_constant_by_be = 0 """
+
+        // array function
+        // array_nested function
+        qt_sql "select a from (select array(1, 1, 2, 2, 2, 2) as a) t"
+
+        // array with decimal and other types
+        qt_sql_1 """select array(1.0,2.0,null, null,2.0);"""
+        qt_sql_1 """select array('a',2.0,null, null,2.0);"""
+        qt_sql_1 """select array(1,2.0,null, null,2.0);"""
+        qt_sql_2 """select array_sort(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_3 """select array_min(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_4 """select array_max(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_5 """select array_avg(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_6 """select array_sum(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_7 """select array_product(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_8 """select array_distinct(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_9 """select array_sort(array_intersect(array(1.0,2.0,null, 
null,2.0), array(1.0,2.0,null, null,2.0)));"""
+        qt_sql_10 """select array_sort(array_except(array(1.0,2.0,null, 
null,2.0), array(1.0,2.0,null, null,2.0)));"""
+        qt_sql_11 """select array_sort(array_union(array(1.0,2.0,null, 
null,2.0), array(1.0,2.0,null, null,2.0)));"""
+        qt_sql_14 """select array_popfront(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_15 """select array_popback(array(1.0,2.0,null, null,2.0));"""
+        qt_sql_16 """select array_concat(array(1.0,2.0,null, null,2.0), 
array(1.0,2.0,null, null,2.0));"""
+
+
+        // array_contains function
+        qt_sql "select array_contains([1.111, 2, 3.333], 2);"
+        qt_sql "select array_contains([1,2,3], 1)"
+        qt_sql "select array_contains([1,2,3], 4)"
+        qt_sql "select array_contains([1,2,3,NULL], 1)"
+        qt_sql "select array_contains([1,2,3,NULL], NULL)"
+        qt_sql "select array_contains([], true)"
+        qt_sql "select array_contains([], NULL)"
+        qt_sql "select array_contains(NULL, 1)"
+        qt_sql "select array_contains(NULL, NULL)"
+        qt_sql "select array_contains([true], false)"
+        qt_sql "select array_contains(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), cast 
('2023-02-04 22:07:34.999' as datetimev2(3)))"
+        qt_sql "select array_contains(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_contains(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (111.111 as 
decimalv3(6,3)))"
+
+        // array_position function
+        qt_sql "select array_position([1.111, 2, 3.333], 2);"
+        qt_sql "select array_position([1,2,3], 1)"
+        qt_sql "select array_position([1,2,3], 3)"
+        qt_sql "select array_position([1,2,3], 4)"
+        qt_sql "select array_position([NULL,2,3], 2)"
+        qt_sql "select array_position([NULL,2,3], NULL)"
+        qt_sql "select array_position([], true)"
+        qt_sql "select array_position([], NULL)"
+        qt_sql "select array_position(NULL, 1)"
+        qt_sql "select array_position(NULL, NULL)"
+        qt_sql "select array_position([null], true)"
+        qt_sql "select array_position([0], null)"
+        qt_sql "select array_position([null, '1'], '')"
+        qt_sql "select array_position([''], null)"
+        qt_sql "select array_position([false, NULL, true], true)"
+        qt_sql "select array_position(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), cast 
('2023-02-04 22:07:34.999' as datetimev2(3)))"
+        qt_sql "select array_position(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_position(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (111.111 as 
decimalv3(6,3)))"
+
+        // element_at function
+        qt_sql "select element_at([1,2,3], 1)"
+        qt_sql "select element_at([1,2,3], 3)"
+        qt_sql "select element_at([1,2,3], 4)"
+        qt_sql "select element_at([1,2,3], -1)"
+        qt_sql "select element_at([1,2,3], NULL)"
+        qt_sql "select element_at([1,2,NULL], 3)"
+        qt_sql "select element_at([1,2,NULL], 2)"
+        qt_sql "select element_at([], -1)"
+        qt_sql "select element_at([true, NULL, false], 2)"
+        qt_sql "select element_at(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), 1)"
+        qt_sql "select element_at(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), 2)"
+        qt_sql "select element_at(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), 1)"
+
+        // array subscript function
+        qt_sql "select [1,2,3][1]"
+        qt_sql "select [1,2,3][3]"
+        qt_sql "select [1,2,3][4]"
+        qt_sql "select [1,2,3][-1]"
+        qt_sql "select [1,2,3][NULL]"
+        qt_sql "select [1,2,NULL][3]"
+        qt_sql "select [1,2,NULL][2]"
+        qt_sql "select [][-1]"
+        qt_sql "select [true, false]"
+        qt_sql "select (array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))[2]"
+        qt_sql "select (array(cast ('2023-02-04' as datev2),cast ('2023-02-05' 
as datev2)))[2]"
+        qt_sql "select (array(cast (111.111 as decimalv3(6,3)),cast (222.222 
as decimalv3(6,3))))[2]"
+
+        // array_aggregation function
+        qt_sql "select array_avg([1,2,3])"
+        qt_sql "select array_sum([1,2,3])"
+        qt_sql "select array_min([1,2,3])"
+        qt_sql "select array_max([1,2,3])"
+        qt_sql "select array_product([1,2,3])"
+        qt_sql "select array_avg([1,2,3,null])"
+        qt_sql "select array_sum([1,2,3,null])"
+        qt_sql "select array_min([1,2,3,null])"
+        qt_sql "select array_max([1,2,3,null])"
+        qt_sql "select array_product([1,2,3,null])"
+        qt_sql "select array_avg([])"
+        qt_sql "select array_sum([])"
+        qt_sql "select array_min([])"
+        qt_sql "select array_max([])"
+        qt_sql "select array_product([])"
+        qt_sql "select array_avg([null])"
+        qt_sql "select array_sum([null])"
+        qt_sql "select array_min([null])"
+        qt_sql "select array_max([null])"
+        qt_sql "select array_product([null])"
+        qt_sql "select array_product([1.12, 3.45, 4.23])"
+        qt_sql "select array_product([1.12, 3.45, -4.23])"
+        qt_sql "select array_min(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))"
+        qt_sql "select array_max(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))"
+        qt_sql "select array_min(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_max(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_avg(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
+        qt_sql "select array_sum(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
+        qt_sql "select array_min(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
+        qt_sql "select array_max(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))))"
+        qt_sql "select array_product(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_distinct function
+        qt_sql "select array_distinct([1,1,2,2,3,3])"
+        qt_sql "select array_distinct([1,1,2,2,3,3,null])"
+        qt_sql "select array_distinct([1,1,3,3,null, null, null])"
+        qt_sql "select array_distinct(['a','a','a'])"
+        qt_sql "select array_distinct([null, 'a','a','a', null])"
+        qt_sql "select array_distinct([true, false, false, null])"
+        qt_sql "select array_distinct([])"
+        qt_sql "select array_distinct([null,null])"
+        qt_sql "select array_distinct([1, 0, 0, null])"
+        qt_sql "select array_distinct(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3)),cast 
('2023-02-04 23:07:34.999' as datetimev2(3))))"
+        qt_sql "select array_distinct(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2),cast ('2023-02-05' as datev2)))"
+        qt_sql "select array_distinct(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+
+        // array_remove function
+        qt_sql "select array_remove([1,2,3], 1)"
+        qt_sql "select array_remove([1,2,3,null], 1)"
+        qt_sql "select array_remove(['a','b','c'], 'a')"
+        qt_sql "select array_remove(['a','b','c',null], 'a')"
+        qt_sql "select array_remove([true, false, false], false)"
+        qt_sql "select array_remove(array(cast ('2023-02-04 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))), cast 
('2023-02-04 22:07:34.999' as datetimev2(3)))"
+        qt_sql "select array_remove(array(cast ('2023-02-04' as datev2),cast 
('2023-02-05' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_remove(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (111.111 as 
decimalv3(6,3)))"
+
+        // array_sort function
+        qt_sql_array_sort1 "select array_sort([1,2,3])"
+        qt_sql_array_sort2 "select array_sort([3,2,1])"
+        qt_sql_array_sort3 "select array_sort([1,2,3,null])"
+        qt_sql_array_sort4 "select array_sort([null,1,2,3])"
+        qt_sql_array_sort5 "select array_sort(['a','b','c'])"
+        qt_sql_array_sort6 "select array_sort(['c','b','a'])"
+        qt_sql_array_sort7 "select array_sort([true, false, true])"
+        qt_sql_array_sort8 "select array_sort([])"
+        qt_sql_array_sort9 "select array_sort(array(cast ('2023-02-06 
22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql_array_sort10 "select array_sort(array(cast ('2023-02-06' as 
datev2),cast ('2023-02-05' as datev2)))"
+        qt_sql_array_sort11 "select array_sort(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_reverse_sort function
+        qt_sql_array_reverse_sort1 "select array_reverse_sort([1,2,3])"
+        qt_sql_array_reverse_sort2 "select array_reverse_sort([3,2,1])"
+        qt_sql_array_reverse_sort3 "select array_reverse_sort([1,2,3,null])"
+        qt_sql_array_reverse_sort4 "select array_reverse_sort([null,1,2,3])"
+        qt_sql_array_reverse_sort5 "select array_reverse_sort(['a','b','c'])"
+        qt_sql_array_reverse_sort6 "select array_reverse_sort(['c','b','a'])"
+        qt_sql_array_reverse_sort7 "select array_reverse_sort([true, false, 
true])"
+        qt_sql_array_reverse_sort8 "select array_reverse_sort([])"
+        qt_sql_array_reverse_sort9 "select array_reverse_sort(array(cast 
('2023-02-06 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql_array_reverse_sort10 "select array_reverse_sort(array(cast 
('2023-02-06' as datev2),cast ('2023-02-05' as datev2)))"
+        qt_sql_array_reverse_sort11 "select array_reverse_sort(array(cast 
(111.111 as decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_overlap function
+        qt_sql "select arrays_overlap([1,2,3], [4,5,6])"
+        qt_sql "select arrays_overlap([1,2,3], [3,4,5])"
+        qt_sql "select arrays_overlap([1,2,3,null], [3,4,5])"
+        qt_sql "select arrays_overlap([true], [false])"
+        qt_sql "select arrays_overlap([], [])"
+        qt_sql "select arrays_overlap(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select arrays_overlap(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-08 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select arrays_overlap(array(cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select arrays_overlap(array(cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-08' as datev2)))"
+        qt_sql "select arrays_overlap(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), array(cast (222.222 as 
decimalv3(6,3)),cast (333.333 as decimalv3(6,3))))"
+
+        // array_binary function
+        qt_sql "select array_union([1,2,3], [2,3,4])"
+        qt_sql "select array_except([1,2,3], [2,3,4])"
+        qt_sql "select array_intersect([1,2,3], [2,3,4])"
+        qt_sql "select array_union([1,2,3], [2,3,4,null])"
+        qt_sql "select array_except([1,2,3], [2,3,4,null])"
+        qt_sql "select array_intersect([1,2,3], [2,3,4,null])"
+        qt_sql "select array_union([true], [false])"
+        qt_sql "select array_except([true, false], [true])"
+        qt_sql "select array_intersect([false, true], [false])"
+        qt_sql "select array_union([], [])"
+        qt_sql "select array_except([], [])"
+        qt_sql "select array_intersect([], [])"
+        qt_sql "select array_union([], [1,2,3])"
+        qt_sql "select array_except([], [1,2,3])"
+        qt_sql "select array_intersect([], [1,2,3])"
+        qt_sql "select array_union([null], [1,2,3])"
+        qt_sql "select array_except([null], [1,2,3])"
+        qt_sql "select array_intersect([null], [1,2,3])"
+        qt_sql "select array_union([1], [100000000])"
+        qt_sql "select array_except([1], [100000000])"
+        qt_sql "select array_intersect([1], [100000000])"
+        qt_sql "select array_union(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_except(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_intersect(array(cast ('2023-02-06 22:07:34.999' 
as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))),array(cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_union(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_except(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_intersect(array(cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2)), array(cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_union(array(cast (111.111 as decimalv3(6,3)),cast 
(222.222 as decimalv3(6,3))), array(cast (222.222 as decimalv3(6,3)),cast 
(333.333 as decimalv3(6,3))))"
+        qt_sql "select array_except(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), array(cast (222.222 as 
decimalv3(6,3)),cast (333.333 as decimalv3(6,3))))"
+        qt_sql "select array_intersect(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), array(cast (222.222 as 
decimalv3(6,3)),cast (333.333 as decimalv3(6,3))))"
+
+        // array_slice function
+        qt_sql "select [1,2,3][1:1]"
+        qt_sql "select [1,2,3][1:3]"
+        qt_sql "select [1,2,3][1:5]"
+        qt_sql "select [1,2,3][2:]"
+        qt_sql "select [1,2,3][-2:]"
+        qt_sql "select [1,2,3][2:-1]"
+        qt_sql "select [1,2,3][0:]"
+        qt_sql "select [1,2,3][-5:]"
+        qt_sql "select [true, false, false][2:]"
+        qt_sql "select (array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3))))[1:2]"
+        qt_sql "select (array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2)))[1:2]"
+        qt_sql "select (array(cast (111.111 as decimalv3(6,3)),cast (222.222 
as decimalv3(6,3))))[1:2]"
+
+        // array_intersect
+        qt_sql_intersect_1 "select array_intersect([1,2,3], [1,2,3], [null])"
+        qt_sql_intersect_2 "select array_intersect([1, 2, null], [1, 3, null], 
[1,2,3,null])"
+        qt_sql_intersect_3 "select array_intersect([1,2,3, null], 
[1,2,3,null], [1,2,null], [1, null])"
+        qt_sql_intersect_4 "select array_intersect([1,2,3], [1,2,3], [null], 
[])"
+
+        // array_union-with-multiple-arguments
+        qt_sql_union_1 "select array_union([1,2,3], [1,2,3], [null])"
+        qt_sql_union_2 "select array_union([1, 2, null], [1, 3, null], 
[1,2,3,null])"
+        qt_sql_union_3 "select array_union([1,2,3, null], [1,2,3,null], 
[1,2,null], [1, null])"
+        qt_sql_union_4 "select array_union([1,2,3], [1,2,3], [null], [])"
+
+        // array_popfront function
+        qt_sql "select array_popfront([1,2,3,4,5,6])"
+        qt_sql "select array_popfront([])"
+        qt_sql "select array_popfront(null)"
+        qt_sql "select array_popfront([null,2,3,4,5])"
+        qt_sql "select array_popfront([1,2,3,4,null])"
+        qt_sql "select array_popfront(['1','2','3','4','5','6'])"
+        qt_sql "select array_popfront([null,'2','3','4','5','6'])"
+        qt_sql "select array_popfront(['1','2','3','4','5',null])"
+        qt_sql "select array_popfront(array(cast ('2023-02-06' as datev2), 
cast ('2023-02-05' as datev2), cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_popfront(array(null, cast ('2023-02-06' as 
datev2), cast ('2023-02-05' as datev2), cast ('2023-02-07' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_popfront(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3)), cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_popfront(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_join function
+        qt_sql "select array_join([1, 2, 3], '_')"
+        qt_sql "select array_join(['1', '2', '3', null], '_')"
+        qt_sql "select array_join([null, '1', '2', '3', null], '_')"
+        qt_sql "select array_join(['', '2', '3'], '_')"
+        qt_sql "select array_join(['1', '2', ''], '_')"
+        qt_sql "select array_join(['1', '2', '', null], '_')"
+        qt_sql "select array_join(['', '', '3'], '_')"
+        qt_sql "select array_join(['1', '2', '', ''], '_')"
+        qt_sql "select array_join([null, null, '1', '2', '', '', null], '_')"
+        qt_sql "select array_join([null, null, 1, 2, '', '', null], '_', 
'any')"
+        qt_sql "select array_join([''], '_')"
+        qt_sql "select array_join(['', ''], '_')"
+        qt_sql_array_with_constant1 "select array_with_constant(3, '_'), 
array_repeat('_', 3)"
+        qt_sql_array_with_constant2 "select array_with_constant(2, '1'), 
array_repeat('1', 2)"
+        qt_sql_array_with_constant3 "select array_with_constant(4, 1223), 
array_repeat(1223, 4)"
+        qt_sql_array_with_constant4 "select array_with_constant(8, null), 
array_repeat(null, 8)"
+        qt_sql_array_with_constant5 "select array_with_constant(null, 'abc'), 
array_repeat('abc', null)"
+        qt_sql_array_with_constant6 "select array_with_constant(null, null), 
array_repeat(null, null)"
+        // array_compact function
+        qt_sql "select array_compact([1, 2, 3, 3, null, null, 4, 4])"
+        qt_sql "select array_compact([null, null, null])"
+        qt_sql "select array_compact([1.2, 1.2, 3.4, 3.3, 2.1])"
+        qt_sql "select array_compact(['a','b','c','c','d'])"
+        qt_sql "select array_compact(['aaa','aaa','bbb','ccc','ccccc',null, 
null,'dddd'])"
+        qt_sql "select array_compact(['2015-03-13','2015-03-13'])"
+        qt_sql "select array_compact(array(cast ('2023-02-06 22:07:34.999' as 
datetimev2(3)),cast ('2023-02-04 23:07:34.999' as datetimev2(3)), cast 
('2023-02-07 22:07:34.999' as datetimev2(3)),cast ('2023-02-04 23:07:34.999' as 
datetimev2(3))))"
+        qt_sql "select array_compact(array(cast ('2023-02-06' as datev2), cast 
('2023-02-05' as datev2), cast ('2023-02-07' as datev2), cast ('2023-02-05' as 
datev2)))"
+        qt_sql "select array_compact(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3)),cast (222.222 as 
decimalv3(6,3)),cast (333.333 as decimalv3(6,3))))"
+        qt_sql "select array_compact(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+
+        // array_apply
+        qt_sql """select array_apply([1000000, 1000001, 1000002], '=', 
1000002)"""
+        qt_sql """select array_apply([1.111, 2.222, 3.333], '>=', 2)"""
+        qt_sql """select array_apply(cast(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17") as array<datetimev2>), ">", '2020-01-02')"""
+        qt_sql """select array_apply(array(cast (24.99 as decimal(10,3)),cast 
(25.99 as decimal(10,3))), ">", '25')"""
+        qt_sql """select array_apply(array(cast (24.99 as decimal(10,3)),cast 
(25.99 as decimal(10,3))), "!=", '25')"""
+        // qt_sql """select array_apply(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), ">", '111.111')"""
+
+        qt_sql "select array_concat([1, 2, 3], [2, 3, 4], [8, 1, 2], [9])"
+        qt_sql "select array_concat([12, 23], [25, null], [null], [66])"
+        qt_sql "select array_concat([1.2, 1.8], [9.0, 2.2], [2.8])"
+        qt_sql "select array_concat(['aaa', null], ['bbb', 'fff'], [null, 
'ccc'])"
+        qt_sql "select array_concat(null, [1, 2, 3], null)"
+        qt_sql "select array_concat(array(cast (12.99 as decimal(10,3)), cast 
(34.99 as decimal(10,3))), array(cast (999.28 as decimal(10,3)), cast (123.99 
as decimal(10,3))))"
+        qt_sql "select array_concat(array(cast ('2023-03-05' as datev2), cast 
('2023-03-04' as datev2)), array(cast ('2023-02-01' as datev2), cast 
('2023-02-05' as datev2)))"
+        qt_sql "select array_concat(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))))"
+
+        // array_shuffle
+        // do not check result, since shuffle result is random
+        sql "SELECT array_sum(array_shuffle([1, 2, 3, 3, null, null, 4, 4])), 
array_shuffle([1, 2, 3, 3, null, null, 4, 4], 0), shuffle([1, 2, 3, 3, null, 
null, 4, 4], 0)"
+        sql "SELECT array_sum(array_shuffle([1.111, 2.222, 3.333])), 
array_shuffle([1.111, 2.222, 3.333], 0), shuffle([1.111, 2.222, 3.333], 0)"
+        sql "SELECT array_size(array_shuffle(['aaa', null, 'bbb', 'fff'])), 
array_shuffle(['aaa', null, 'bbb', 'fff'], 0), shuffle(['aaa', null, 'bbb', 
'fff'], 0)"
+        sql """select array_size(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17")), array_shuffle(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17"), 0), shuffle(array("2020-01-02", "2022-01-03", 
"2021-01-01", "1996-04-17"), 0)"""
+
+        // array_zip
+        qt_sql "select array_zip(['a', 'b', 'c'], ['d', 'e', 'f'])"
+        qt_sql "select array_zip(['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 
'i'])"
+        qt_sql "select array_zip([1, 2, 3, 4, 5], ['d', 'o', 'r', 'i', 's'])"
+        qt_sql "select array_zip([1.1, 2.2, 3.3], [1, 2, 3])"
+        qt_sql "select array_zip([1, null, 3], [null, 'b', null])"
+        qt_sql "select array_zip(array(cast (3.05 as decimal(10,3)), cast 
(2.22 as decimal(10,3))), array(cast (3.14 as decimal(10,3)), cast (6.66 as 
decimal(10,3))))"
+        qt_sql "select array_zip(array(cast ('2000-03-05' as datev2), cast 
('2023-03-10' as datev2)), array(cast ('2000-02-02' as datev2), cast 
('2023-03-10' as datev2)))"
+        qt_sql "select array_zip(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))))"
+        qt_sql "select array_zip([1, 2, 3], null, ['foo', 'bar', 'test'])"
+
+        qt_sql "select array(8, null)"
+        qt_sql "select array('a', 1, 2)"
+        qt_sql "select array(null, null, null)"
+
+        // array_enumerate_uniq
+        qt_sql "select array_enumerate_uniq([])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 
2, 3, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 1, 2, 2, 3, 3, 4, 4])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 1, 3, 4, 2, 5, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 
1, 1, 1, 1, 1])"
+        qt_sql "select array_enumerate_uniq([null])"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5, null, null])"
+        qt_sql "select array_enumerate_uniq([1, null, 2, null, 3, null, 4, 1, 
null, 2, null, 3, null, 4])"
+        qt_sql "select array_enumerate_uniq(['11', '22', '33', '11', '33', 
'22'])"
+        qt_sql "select array_enumerate_uniq(array(cast (24.99 as 
decimal(10,3)), cast (25.99 as decimal(10,3)), cast (24.99 as decimal(10,3))))"
+        qt_sql "select array_enumerate_uniq(array(cast ('2023-02-06 
22:07:34.999' as datetimev2(3)), cast ('2023-02-04 23:07:34.999' as 
datetimev2(3)), cast ('2023-02-06 22:07:34.999' as datetimev2(3))))"
+        qt_sql "select array_enumerate_uniq(array(cast (384.2933 as 
decimalv3(7, 4)), cast (984.1913 as decimalv3(7, 4)), cast (384.2933 as 
decimalv3(7, 4)), cast (722.9333 as decimalv3(7, 4)), cast (384.2933 as 
decimalv3(7, 4))))"
+        qt_sql "select array_enumerate_uniq([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])"
+        qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1], [1, 1, 1, 1, 1])"
+        qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1], [1, 1, 1, 1, 1])"
+        qt_sql "select array_enumerate_uniq([1, 1, 2, 2, 1, 2], [1, 2, 1, 2, 
2, 1])"
+        qt_sql "select array_enumerate_uniq([1, null, 1, null], [null, 1, 
null, 1])"
+        qt_sql "select array_enumerate_uniq([1, 1, 1, 1, 1, 1], [2, 1, 2, 1, 
2, 1], [3, 1, 3, 1, 3, 1])"
+        qt_sql "select array_enumerate_uniq([1, 3, 1], [2.0, 5.0, 2.0], ['3', 
'8', '3'], array(cast (34.9876 as decimalv3(6, 4)), cast (89.9865 as 
decimalv3(6, 4)), cast (34.9876 as decimalv3(6, 4))))"
+
+        // array_pushfront
+        qt_sql "select array_pushfront([1, 2, 3], 6)"
+        qt_sql "select array_pushfront([1, 2, 3], null)"
+        qt_sql "select array_pushfront(null, 6)"
+        qt_sql "select array_pushfront([1.111, 2.222, 3.333], 9.999)"
+        qt_sql "select array_pushfront(['aaa', 'bbb', 'ccc'], 'dddd')"
+        qt_sql "select array_pushfront(array(cast (12.99 as decimal(10,3)), 
cast (34.99 as decimal(10,3))), cast (999.28 as decimal(10,3)))"
+        qt_sql "select array_pushfront(array(cast ('2023-03-05' as datev2), 
cast ('2023-03-04' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_pushfront(array(cast ('2023-03-05 12:23:24.999' 
as datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))), cast 
('2023-03-08 16:23:54.999' as datetimev2(3)))"
+        qt_sql "select array_pushfront(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (333.333 as 
decimalv3(6,3)))"
+
+        // array_pushback
+        qt_sql "select array_pushback([1, 2, 3], 6)"
+        qt_sql "select array_pushback([1, 2, 3], null)"
+        qt_sql "select array_pushback(null, 6)"
+        qt_sql "select array_pushback([1.111, 2.222, 3.333], 9.999)"
+        qt_sql "select array_pushback(['aaa', 'bbb', 'ccc'], 'dddd')"
+        qt_sql "select array_pushback(array(cast (12.99 as decimal(10,3)), 
cast (34.99 as decimal(10,3))), cast (999.28 as decimal(10,3)))"
+        qt_sql "select array_pushback(array(cast ('2023-03-05' as datev2), 
cast ('2023-03-04' as datev2)), cast ('2023-02-05' as datev2))"
+        qt_sql "select array_pushback(array(cast ('2023-03-05 12:23:24.999' as 
datetimev2(3)),cast ('2023-03-05 15:23:23.997' as datetimev2(3))), cast 
('2023-03-08 16:23:54.999' as datetimev2(3)))"
+        qt_sql "select array_pushback(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), cast (333.333 as 
decimalv3(6,3)))"
+        qt_sql "select array_pushback([null,null], null)"
+        qt_sql "select array_pushback([null,null,null,null], 80)"
+
+        // array_cum_sum
+        qt_sql "select array_cum_sum([0, 2, 127])"
+        qt_sql "select array_cum_sum([254, 4, 0])"
+        qt_sql "select array_cum_sum([1.0, 2.1 ,3.2, 4.3, 5.4])"
+        qt_sql "select array_cum_sum([-1, 2 ,-3, 4, -5])"
+        qt_sql "select array_cum_sum([-5.23, 4.12, -3.02, 2.00 ,1.01])"
+        qt_sql "select array_cum_sum([1, 2, 3, null])"
+        qt_sql "select array_cum_sum([null, 1, null, 3, 8, null])"
+        qt_sql "select array_cum_sum([null, null])"
+        qt_sql "select array_cum_sum([8])"
+        qt_sql "select array_cum_sum([1.1])"
+        qt_sql "select array_cum_sum([null])"
+        qt_sql "select array_cum_sum([])"
+        qt_sql "select array_cum_sum(array(cast (12.99 as decimal(10,3)), cast 
(34.99 as decimal(10,3)), cast (999.28 as decimal(10,3))))"
+        qt_sql "select array_cum_sum(array(cast (111.111 as 
decimalv3(6,3)),cast (222.222 as decimalv3(6,3))))"
+        qt_sql "select array_cum_sum(array(cast (11.9999 as 
decimalv3(6,4)),cast (22.0001 as decimalv3(6,4))))"
+
+        // abnormal test
+        test {
+            sql "select array_intersect([1, 2, 3, 1, 2, 3], '1[3, 2, 5]')"
+            exception "No matching function with signature"
+        }
+
+        // array_min/max with nested array for args
+        test {
+            sql "select array_min(array(1,2,3),array(4,5,6));"
+            exception ""
+        }
+        test {
+            sql "select array_max(array(1,2,3),array(4,5,6));"
+            exception ""
+        }
+
+        test {
+            sql "select array_min(array(split_by_string('a,b,c',',')));"
+            exception ""
+        }
+        test {
+            sql "select array_max(array(split_by_string('a,b,c',',')));"
+            exception ""
+        }
+
+        // array_map with string is can be succeed
+        qt_sql_array_map """ select array_map(x->x!='', 
split_by_string('amory,is,better,committing', ',')) """
+
+        // array_apply with string should be failed
+        test {
+           sql """select 
array_apply(split_by_string("amory,is,better,committing", ","), '!=', '');"""
+           exception("No matching function with")
+        }
 
-    // array_map with string is can be succeed
-    qt_sql_array_map """ select array_map(x->x!='', 
split_by_string('amory,is,better,committing', ',')) """
+        qt_sql """ SELECT ARRAY_AVG(CAST([] AS ARRAY < DECIMALV3(1,0) > )); """
 
     // array_apply with string should be failed
     test {


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

Reply via email to