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