This is an automated email from the ASF dual-hosted git repository.
gabriellee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 41947c73eb [Feature](array-function) Support array functions for
nested type datev2 and datetimev2 (#16382)
41947c73eb is described below
commit 41947c73eb5fee54ff5258acb4a757538ac6990c
Author: abmdocrt <[email protected]>
AuthorDate: Wed Feb 8 12:51:07 2023 +0800
[Feature](array-function) Support array functions for nested type datev2
and datetimev2 (#16382)
---
.../aggregate_function_collect.cpp | 4 +
be/src/vec/data_types/data_type_time_v2.cpp | 23 ++
be/src/vec/data_types/data_type_time_v2.h | 2 +
.../vec/functions/array/function_array_distinct.h | 6 +
.../vec/functions/array/function_array_element.h | 9 +
be/src/vec/functions/array/function_array_index.h | 17 ++
be/src/vec/functions/array/function_array_join.h | 6 +
be/src/vec/functions/array/function_array_remove.h | 18 +-
be/src/vec/functions/array/function_array_set.h | 2 +
be/src/vec/functions/array/function_array_sort.h | 6 +
.../vec/functions/array/function_arrays_overlap.h | 8 +
.../apache/doris/analysis/FunctionCallExpr.java | 64 +++--
gensrc/script/doris_builtins_functions.py | 10 +
.../test_array_aggregation_functions.out | 28 +--
.../array_functions/test_array_functions.out | 259 ++++++++++++++++++++-
.../test_array_functions_by_literal.out | 96 ++++++++
.../cast_function/test_cast_string_to_array.out | 6 +
.../test_array_aggregation_functions.groovy | 16 +-
.../array_functions/test_array_functions.groovy | 48 +++-
.../test_array_functions_by_literal.groovy | 34 ++-
.../cast_function/test_cast_string_to_array.groovy | 6 +
21 files changed, 607 insertions(+), 61 deletions(-)
diff --git a/be/src/vec/aggregate_functions/aggregate_function_collect.cpp
b/be/src/vec/aggregate_functions/aggregate_function_collect.cpp
index b0e713c87f..c1937cc06e 100644
--- a/be/src/vec/aggregate_functions/aggregate_function_collect.cpp
+++ b/be/src/vec/aggregate_functions/aggregate_function_collect.cpp
@@ -76,6 +76,10 @@ AggregateFunctionPtr create_aggregate_function_collect(const
std::string& name,
return create_agg_function_collect<Int64>(distinct, argument_types);
} else if (type.is_date_time()) {
return create_agg_function_collect<Int64>(distinct, argument_types);
+ } else if (type.is_date_v2()) {
+ return create_agg_function_collect<UInt32>(distinct, argument_types);
+ } else if (type.is_date_time_v2()) {
+ return create_agg_function_collect<UInt64>(distinct, argument_types);
} else if (type.is_string()) {
return create_agg_function_collect<StringRef>(distinct,
argument_types);
}
diff --git a/be/src/vec/data_types/data_type_time_v2.cpp
b/be/src/vec/data_types/data_type_time_v2.cpp
index ed52721ee7..a6405e1d5b 100644
--- a/be/src/vec/data_types/data_type_time_v2.cpp
+++ b/be/src/vec/data_types/data_type_time_v2.cpp
@@ -19,6 +19,7 @@
#include "util/binary_cast.hpp"
#include "vec/columns/columns_number.h"
+#include "vec/io/io_helper.h"
#include "vec/runtime/vdatetime_value.h"
namespace doris::vectorized {
@@ -48,6 +49,17 @@ void DataTypeDateV2::to_string(const IColumn& column, size_t
row_num, BufferWrit
ostr.write(buf, pos - buf - 1);
}
+Status DataTypeDateV2::from_string(ReadBuffer& rb, IColumn* column) const {
+ auto* column_data = static_cast<ColumnUInt32*>(column);
+ UInt32 val = 0;
+ if (!read_date_v2_text_impl<UInt32>(val, rb)) {
+ return Status::InvalidArgument("parse date fail, string: '{}'",
+ std::string(rb.position(),
rb.count()).c_str());
+ }
+ column_data->insert_value(val);
+ return Status::OK();
+}
+
MutableColumnPtr DataTypeDateV2::create_column() const {
return DataTypeNumberBase<UInt32>::create_column();
}
@@ -110,6 +122,17 @@ void DataTypeDateTimeV2::to_string(const IColumn& column,
size_t row_num,
ostr.write(buf, pos - buf - 1);
}
+Status DataTypeDateTimeV2::from_string(ReadBuffer& rb, IColumn* column) const {
+ auto* column_data = static_cast<ColumnUInt64*>(column);
+ UInt64 val = 0;
+ if (!read_datetime_v2_text_impl<UInt64>(val, rb)) {
+ return Status::InvalidArgument("parse date fail, string: '{}'",
+ std::string(rb.position(),
rb.count()).c_str());
+ }
+ column_data->insert_value(val);
+ return Status::OK();
+}
+
MutableColumnPtr DataTypeDateTimeV2::create_column() const {
return DataTypeNumberBase<UInt64>::create_column();
}
diff --git a/be/src/vec/data_types/data_type_time_v2.h
b/be/src/vec/data_types/data_type_time_v2.h
index 236e0887ba..11ecaf91b8 100644
--- a/be/src/vec/data_types/data_type_time_v2.h
+++ b/be/src/vec/data_types/data_type_time_v2.h
@@ -37,6 +37,7 @@ public:
bool equals(const IDataType& rhs) const override;
std::string to_string(const IColumn& column, size_t row_num) const
override;
void to_string(const IColumn& column, size_t row_num, BufferWritable&
ostr) const override;
+ Status from_string(ReadBuffer& rb, IColumn* column) const override;
MutableColumnPtr create_column() const override;
@@ -74,6 +75,7 @@ public:
bool equals(const IDataType& rhs) const override;
std::string to_string(const IColumn& column, size_t row_num) const
override;
void to_string(const IColumn& column, size_t row_num, BufferWritable&
ostr) const override;
+ Status from_string(ReadBuffer& rb, IColumn* column) const override;
MutableColumnPtr create_column() const override;
diff --git a/be/src/vec/functions/array/function_array_distinct.h
b/be/src/vec/functions/array/function_array_distinct.h
index 40e369e4ab..e19368d6df 100644
--- a/be/src/vec/functions/array/function_array_distinct.h
+++ b/be/src/vec/functions/array/function_array_distinct.h
@@ -259,6 +259,12 @@ private:
} else if (which.is_date_time()) {
res = _execute_number<ColumnDateTime>(src_column, src_offsets,
dest_column,
dest_offsets, src_null_map,
dest_null_map);
+ } else if (which.is_date_v2()) {
+ res = _execute_number<ColumnDateV2>(src_column, src_offsets,
dest_column, dest_offsets,
+ src_null_map, dest_null_map);
+ } else if (which.is_date_time_v2()) {
+ res = _execute_number<ColumnDateTimeV2>(src_column, src_offsets,
dest_column,
+ dest_offsets,
src_null_map, dest_null_map);
} else if (which.is_decimal128()) {
res = _execute_number<ColumnDecimal128>(src_column, src_offsets,
dest_column,
dest_offsets,
src_null_map, dest_null_map);
diff --git a/be/src/vec/functions/array/function_array_element.h
b/be/src/vec/functions/array/function_array_element.h
index 6722e09e9c..1a68c68827 100644
--- a/be/src/vec/functions/array/function_array_element.h
+++ b/be/src/vec/functions/array/function_array_element.h
@@ -21,6 +21,7 @@
#include <string_view>
+#include "vec/columns/column.h"
#include "vec/columns/column_array.h"
#include "vec/columns/column_const.h"
#include "vec/columns/column_string.h"
@@ -203,6 +204,14 @@ private:
res = _execute_number<ColumnDateTime>(offsets, *nested_column,
src_null_map,
*arguments[1].column,
nested_null_map,
dst_null_map);
+ } else if (check_column<ColumnDateV2>(nested_column)) {
+ res = _execute_number<ColumnDateV2>(offsets, *nested_column,
src_null_map,
+ *arguments[1].column,
nested_null_map,
+ dst_null_map);
+ } else if (check_column<ColumnDateTimeV2>(nested_column)) {
+ res = _execute_number<ColumnDateTime>(offsets, *nested_column,
src_null_map,
+ *arguments[1].column,
nested_null_map,
+ dst_null_map);
} else if (check_column<ColumnUInt8>(*nested_column)) {
res = _execute_number<ColumnUInt8>(offsets, *nested_column,
src_null_map,
*arguments[1].column,
nested_null_map, dst_null_map);
diff --git a/be/src/vec/functions/array/function_array_index.h
b/be/src/vec/functions/array/function_array_index.h
index bce8eb2caf..d8d9dbe4b5 100644
--- a/be/src/vec/functions/array/function_array_index.h
+++ b/be/src/vec/functions/array/function_array_index.h
@@ -21,6 +21,7 @@
#include <string_view>
+#include "vec/columns/column.h"
#include "vec/columns/column_array.h"
#include "vec/columns/column_string.h"
#include "vec/data_types/data_type_array.h"
@@ -233,6 +234,14 @@ private:
return _execute_number<NestedColumnType, ColumnDateTime>(
offsets, nested_null_map, nested_column, right_column,
right_nested_null_map,
outer_null_map);
+ } else if (check_column<ColumnDateV2>(right_column)) {
+ return _execute_number<NestedColumnType, ColumnDateV2>(
+ offsets, nested_null_map, nested_column, right_column,
right_nested_null_map,
+ outer_null_map);
+ } else if (check_column<ColumnDateTimeV2>(right_column)) {
+ return _execute_number<NestedColumnType, ColumnDateTimeV2>(
+ offsets, nested_null_map, nested_column, right_column,
right_nested_null_map,
+ outer_null_map);
} else if (check_column<ColumnDecimal128>(right_column)) {
return _execute_number<NestedColumnType, ColumnDecimal128>(
offsets, nested_null_map, nested_column, right_column,
right_nested_null_map,
@@ -337,6 +346,14 @@ private:
return_column = _execute_number_expanded<ColumnDateTime>(
offsets, nested_null_map, *nested_column,
*right_column,
right_nested_null_map, array_null_map);
+ } else if (check_column<ColumnDateV2>(*nested_column)) {
+ return_column = _execute_number_expanded<ColumnDateV2>(
+ offsets, nested_null_map, *nested_column,
*right_column,
+ right_nested_null_map, array_null_map);
+ } else if (check_column<ColumnDateTimeV2>(*nested_column)) {
+ return_column = _execute_number_expanded<ColumnDateTimeV2>(
+ offsets, nested_null_map, *nested_column,
*right_column,
+ right_nested_null_map, array_null_map);
}
}
diff --git a/be/src/vec/functions/array/function_array_join.h
b/be/src/vec/functions/array/function_array_join.h
index 6524507490..05b69901cc 100644
--- a/be/src/vec/functions/array/function_array_join.h
+++ b/be/src/vec/functions/array/function_array_join.h
@@ -235,6 +235,12 @@ private:
} else if (which.is_date_time()) {
res = _execute_number<ColumnDateTime>(src_column, src_offsets,
src_null_map, sep_str,
null_replace_str,
nested_type, dest_column_ptr);
+ } else if (which.is_date_v2()) {
+ res = _execute_number<ColumnDateV2>(src_column, src_offsets,
src_null_map, sep_str,
+ null_replace_str, nested_type,
dest_column_ptr);
+ } else if (which.is_date_time_v2()) {
+ res = _execute_number<ColumnDateTimeV2>(src_column, src_offsets,
src_null_map, sep_str,
+ null_replace_str,
nested_type, dest_column_ptr);
} else if (which.is_decimal128()) {
res = _execute_number<ColumnDecimal128>(src_column, src_offsets,
src_null_map, sep_str,
null_replace_str,
nested_type, dest_column_ptr);
diff --git a/be/src/vec/functions/array/function_array_remove.h
b/be/src/vec/functions/array/function_array_remove.h
index 6565102fb7..cb8ef46a0a 100644
--- a/be/src/vec/functions/array/function_array_remove.h
+++ b/be/src/vec/functions/array/function_array_remove.h
@@ -17,8 +17,10 @@
#pragma once
+#include "vec/columns/column.h"
#include "vec/columns/column_array.h"
#include "vec/columns/column_const.h"
+#include "vec/data_types/data_type.h"
#include "vec/data_types/data_type_array.h"
#include "vec/data_types/data_type_number.h"
#include "vec/functions/function.h"
@@ -245,6 +247,12 @@ private:
} else if (right_column.is_datetime_type()) {
return _execute_number<NestedColumnType, ColumnDateTime>(offsets,
nested_column,
right_column, nested_null_map);
+ } else if (check_column<ColumnDateV2>(right_column)) {
+ return _execute_number<NestedColumnType, ColumnDateV2>(offsets,
nested_column,
+
right_column, nested_null_map);
+ } else if (check_column<ColumnDateTimeV2>(right_column)) {
+ return _execute_number<NestedColumnType, ColumnDateTimeV2>(
+ offsets, nested_column, right_column, nested_null_map);
} else if (check_column<ColumnInt64>(right_column)) {
return _execute_number<NestedColumnType, ColumnInt64>(offsets,
nested_column,
right_column, nested_null_map);
@@ -330,8 +338,16 @@ private:
res = _execute_number_expanded<ColumnDateTime>(offsets,
*nested_column,
*right_column,
nested_null_map);
}
+ } else if (is_date_v2_or_datetime_v2(right_type) &&
+ is_date_v2_or_datetime_v2(left_element_type)) {
+ if (check_column<ColumnDateV2>(*nested_column)) {
+ res = _execute_number_expanded<ColumnDateV2>(offsets,
*nested_column, *right_column,
+ nested_null_map);
+ } else if (check_column<ColumnDateTimeV2>(*nested_column)) {
+ res = _execute_number_expanded<ColumnDateTimeV2>(offsets,
*nested_column,
+
*right_column, nested_null_map);
+ }
}
-
return res;
}
};
diff --git a/be/src/vec/functions/array/function_array_set.h
b/be/src/vec/functions/array/function_array_set.h
index df311131df..aeb895e07d 100644
--- a/be/src/vec/functions/array/function_array_set.h
+++ b/be/src/vec/functions/array/function_array_set.h
@@ -161,6 +161,8 @@ public:
if (_execute_internal<ColumnString>(dst, left_data, right_data) ||
_execute_internal<ColumnDate>(dst, left_data, right_data) ||
_execute_internal<ColumnDateTime>(dst, left_data, right_data) ||
+ _execute_internal<ColumnDateV2>(dst, left_data, right_data) ||
+ _execute_internal<ColumnDateTimeV2>(dst, left_data, right_data) ||
_execute_internal<ColumnUInt8>(dst, left_data, right_data) ||
_execute_internal<ColumnInt8>(dst, left_data, right_data) ||
_execute_internal<ColumnInt16>(dst, left_data, right_data) ||
diff --git a/be/src/vec/functions/array/function_array_sort.h
b/be/src/vec/functions/array/function_array_sort.h
index 2637e31429..5b1b78fed0 100644
--- a/be/src/vec/functions/array/function_array_sort.h
+++ b/be/src/vec/functions/array/function_array_sort.h
@@ -270,6 +270,12 @@ private:
} else if (which.is_date_time()) {
res = _execute_number<ColumnDateTime>(src_column, src_offsets,
dest_column,
dest_offsets, src_null_map,
dest_null_map);
+ } else if (which.is_date_v2()) {
+ res = _execute_number<ColumnDateV2>(src_column, src_offsets,
dest_column, dest_offsets,
+ src_null_map, dest_null_map);
+ } else if (which.is_date_time_v2()) {
+ res = _execute_number<ColumnDateTimeV2>(src_column, src_offsets,
dest_column,
+ dest_offsets,
src_null_map, dest_null_map);
} else if (which.is_decimal128()) {
res = _execute_number<ColumnDecimal128>(src_column, src_offsets,
dest_column,
dest_offsets,
src_null_map, dest_null_map);
diff --git a/be/src/vec/functions/array/function_arrays_overlap.h
b/be/src/vec/functions/array/function_arrays_overlap.h
index 72a33e4240..21eb10e24e 100644
--- a/be/src/vec/functions/array/function_arrays_overlap.h
+++ b/be/src/vec/functions/array/function_arrays_overlap.h
@@ -140,6 +140,14 @@ public:
ret = _execute_internal<ColumnDateTime>(left_exec_data,
right_exec_data,
dst_null_map_data,
dst_nested_col->get_data().data());
+ } else if (check_column<ColumnDateV2>(left_exec_data.nested_col)) {
+ ret = _execute_internal<ColumnDateV2>(left_exec_data,
right_exec_data,
+ dst_null_map_data,
+
dst_nested_col->get_data().data());
+ } else if (check_column<ColumnDateTimeV2>(left_exec_data.nested_col)) {
+ ret = _execute_internal<ColumnDateTimeV2>(left_exec_data,
right_exec_data,
+ dst_null_map_data,
+
dst_nested_col->get_data().data());
} else if (left_exec_data.nested_col->is_numeric()) {
if (check_column<ColumnUInt8>(*left_exec_data.nested_col)) {
ret = _execute_internal<ColumnUInt8>(left_exec_data,
right_exec_data,
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
index 3632c3577a..f4d6ea358c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
@@ -120,6 +120,19 @@ public class FunctionCallExpr extends Expr {
return returnType;
}
};
+ java.util.function.BiFunction<ArrayList<Expr>, Type, Type>
arrayDateTimeV2OrDecimalV3Rule
+ = (children, returnType) -> {
+ Preconditions.checkArgument(children != null &&
children.size() > 0);
+ if (children.get(0).getType().isArrayType() && (
+ ((ArrayType)
children.get(0).getType()).getItemType().isDecimalV3()
+ || ((ArrayType) children.get(0)
+ .getType()).getItemType().isDecimalV2() ||
((ArrayType) children.get(0)
+ .getType()).getItemType().isDatetimeV2()))
{
+ return ((ArrayType)
children.get(0).getType()).getItemType();
+ } else {
+ return returnType;
+ }
+ };
PRECISION_INFER_RULE = new HashMap<>();
PRECISION_INFER_RULE.put("sum", sumRule);
PRECISION_INFER_RULE.put("multi_distinct_sum", sumRule);
@@ -150,29 +163,10 @@ public class FunctionCallExpr extends Expr {
}
});
- PRECISION_INFER_RULE.put("array_min", (children, returnType) -> {
- Preconditions.checkArgument(children != null && children.size() >
0);
- if (children.get(0).getType().isArrayType() && (
- ((ArrayType)
children.get(0).getType()).getItemType().isDecimalV3() || ((ArrayType)
children.get(0)
- .getType()).getItemType().isDecimalV2() ||
((ArrayType) children.get(0)
- .getType()).getItemType().isDatetimeV2())) {
- return ((ArrayType) children.get(0).getType()).getItemType();
- } else {
- return returnType;
- }
- });
-
- PRECISION_INFER_RULE.put("array_max", (children, returnType) -> {
- Preconditions.checkArgument(children != null && children.size() >
0);
- if (children.get(0).getType().isArrayType() && (
- ((ArrayType)
children.get(0).getType()).getItemType().isDecimalV3() || ((ArrayType)
children.get(0)
- .getType()).getItemType().isDecimalV2() ||
((ArrayType) children.get(0)
- .getType()).getItemType().isDatetimeV2())) {
- return ((ArrayType) children.get(0).getType()).getItemType();
- } else {
- return returnType;
- }
- });
+ PRECISION_INFER_RULE.put("array_min", arrayDateTimeV2OrDecimalV3Rule);
+ PRECISION_INFER_RULE.put("array_max", arrayDateTimeV2OrDecimalV3Rule);
+ PRECISION_INFER_RULE.put("element_at", arrayDateTimeV2OrDecimalV3Rule);
+ PRECISION_INFER_RULE.put("%element_extract%",
arrayDateTimeV2OrDecimalV3Rule);
PRECISION_INFER_RULE.put("round", roundRule);
PRECISION_INFER_RULE.put("round_bankers", roundRule);
@@ -1372,7 +1366,7 @@ public class FunctionCallExpr extends Expr {
|| children.get(0).getType().isDatetimeV2() &&
args[ix].isDatetimeV2())) {
continue;
} else if
((fnName.getFunction().equalsIgnoreCase("array_min") || fnName.getFunction()
- .equalsIgnoreCase("array_max"))
+ .equalsIgnoreCase("array_max") ||
fnName.getFunction().equalsIgnoreCase("element_at"))
&& ((
children.get(0).getType().isDecimalV3() &&
((ArrayType) args[ix]).getItemType()
.isDecimalV3())
@@ -1460,6 +1454,28 @@ public class FunctionCallExpr extends Expr {
if (children.size() > 0) {
this.type = new ArrayType(children.get(0).getType());
}
+ } else if (fnName.getFunction().equalsIgnoreCase("if")) {
+ if (children.get(1).getType().isArrayType() && (
+ ((ArrayType)
children.get(1).getType()).getItemType().isDecimalV3()
+ || ((ArrayType) children.get(1)
+ .getType()).getItemType().isDecimalV2() ||
((ArrayType) children.get(1)
+ .getType()).getItemType().isDatetimeV2())) {
+ this.type = children.get(1).getType();
+ }
+ } else if (fnName.getFunction().equalsIgnoreCase("array_distinct") ||
fnName.getFunction()
+ .equalsIgnoreCase("array_remove") ||
fnName.getFunction().equalsIgnoreCase("array_sort")
+ || fnName.getFunction().equalsIgnoreCase("array_overlap")
+ || fnName.getFunction().equalsIgnoreCase("array_union")
+ || fnName.getFunction().equalsIgnoreCase("array_intersect")
+ || fnName.getFunction().equalsIgnoreCase("array_compact")
+ || fnName.getFunction().equalsIgnoreCase("array_slice")
+ || fnName.getFunction().equalsIgnoreCase("array_popback")
+ || fnName.getFunction().equalsIgnoreCase("reverse")
+ || fnName.getFunction().equalsIgnoreCase("%element_slice%")
+ || fnName.getFunction().equalsIgnoreCase("array_except")) {
+ if (children.size() > 0) {
+ this.type = children.get(0).getType();
+ }
}
if (this.type instanceof ArrayType) {
diff --git a/gensrc/script/doris_builtins_functions.py
b/gensrc/script/doris_builtins_functions.py
index 5222b6ce8d..fd6a47529e 100644
--- a/gensrc/script/doris_builtins_functions.py
+++ b/gensrc/script/doris_builtins_functions.py
@@ -456,6 +456,8 @@ visible_functions = [
[['array_slice', '%element_slice%'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT',
'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DATETIME', ['ARRAY_DATETIME',
'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DATE', ['ARRAY_DATE',
'BIGINT'], ''],
+ [['array_slice', '%element_slice%'], 'ARRAY_DATETIMEV2',
['ARRAY_DATETIMEV2', 'BIGINT'], ''],
+ [['array_slice', '%element_slice%'], 'ARRAY_DATEV2', ['ARRAY_DATEV2',
'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_FLOAT', ['ARRAY_FLOAT',
'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE',
'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DECIMALV2',
['ARRAY_DECIMALV2', 'BIGINT'], ''],
@@ -473,6 +475,8 @@ visible_functions = [
[['array_slice', '%element_slice%'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT',
'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DATETIME', ['ARRAY_DATETIME',
'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DATE', ['ARRAY_DATE',
'BIGINT', 'BIGINT'], ''],
+ [['array_slice', '%element_slice%'], 'ARRAY_DATETIMEV2',
['ARRAY_DATETIMEV2', 'BIGINT', 'BIGINT'], ''],
+ [['array_slice', '%element_slice%'], 'ARRAY_DATEV2', ['ARRAY_DATEV2',
'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_FLOAT', ['ARRAY_FLOAT',
'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE',
'BIGINT', 'BIGINT'], ''],
[['array_slice', '%element_slice%'], 'ARRAY_DECIMALV2',
['ARRAY_DECIMALV2', 'BIGINT', 'BIGINT'], ''],
@@ -490,6 +494,8 @@ visible_functions = [
[['array_popback'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], ''],
[['array_popback'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], ''],
[['array_popback'], 'ARRAY_DATE', ['ARRAY_DATE'], ''],
+ [['array_popback'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], ''],
+ [['array_popback'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], ''],
[['array_popback'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], ''],
[['array_popback'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], ''],
[['array_popback'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], ''],
@@ -507,6 +513,8 @@ visible_functions = [
[['array_with_constant'], 'ARRAY_LARGEINT', ['BIGINT', 'LARGEINT'],
'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DATETIME', ['BIGINT', 'DATETIME'],
'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DATE', ['BIGINT', 'DATE'],
'ALWAYS_NOT_NULLABLE'],
+ [['array_with_constant'], 'ARRAY_DATETIMEV2', ['BIGINT', 'DATETIMEV2'],
'ALWAYS_NOT_NULLABLE'],
+ [['array_with_constant'], 'ARRAY_DATEV2', ['BIGINT', 'DATEV2'],
'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_FLOAT', ['BIGINT', 'FLOAT'],
'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DOUBLE', ['BIGINT', 'DOUBLE'],
'ALWAYS_NOT_NULLABLE'],
[['array_with_constant'], 'ARRAY_DECIMALV2', ['BIGINT', 'DECIMALV2'],
'ALWAYS_NOT_NULLABLE'],
@@ -531,6 +539,8 @@ visible_functions = [
[['reverse'], 'ARRAY_LARGEINT', ['ARRAY_LARGEINT'], ''],
[['reverse'], 'ARRAY_DATETIME', ['ARRAY_DATETIME'], ''],
[['reverse'], 'ARRAY_DATE', ['ARRAY_DATE'], ''],
+ [['reverse'], 'ARRAY_DATETIMEV2', ['ARRAY_DATETIMEV2'], ''],
+ [['reverse'], 'ARRAY_DATEV2', ['ARRAY_DATEV2'], ''],
[['reverse'], 'ARRAY_FLOAT', ['ARRAY_FLOAT'], ''],
[['reverse'], 'ARRAY_DOUBLE', ['ARRAY_DOUBLE'], ''],
[['reverse'], 'ARRAY_DECIMALV2', ['ARRAY_DECIMALV2'], ''],
diff --git
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_aggregation_functions.out
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_aggregation_functions.out
index 6424664700..c0a773048f 100644
---
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_aggregation_functions.out
+++
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_aggregation_functions.out
@@ -1,31 +1,31 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !select --
-1 1 100 1000 2147483648 9223372036854775808 0
1.0 100.0001 2022-08-31 2022-08-31T12:00
-2 1 \N \N \N \N \N 127.0 4.023 \N
\N
-3 -1 -32768 -2147483647 -9223372036854775808
-117341182548128045443221445 -9.999999 -1.0 -128.0001 \N
\N
-4 \N \N \N \N \N \N \N \N \N
\N
+1 1 100 1000 2147483648 9223372036854775808 0E-9
1.0 100.0001 2022-08-31 2022-08-31T12:00 2022-08-31
2022-08-31T12:00:00.999
+2 1 \N \N \N \N \N 127.0 4.023 \N
\N \N \N
+3 -1 -32768 -2147483647 -9223372036854775808
-117341182548128045443221445 -9.999999000 -1.0 -128.0001 \N
\N \N \N
+4 \N \N \N \N \N \N \N \N \N
\N \N \N
-- !select --
-1 3 101 1001 2147483649 9223372036854775808
9.999999 1.5 100.0005 2022-10-15 2022-10-15T10:30
-2 3 \N \N \N \N \N 128.1 4.023 \N
\N
-3 1 -32767 -50000 0 170141183460469231731687303715884105727
9.999999 1.0 127.0001 \N \N
-4 \N \N \N \N \N \N \N \N \N
\N
+1 3 101 1001 2147483649 9223372036854775808
9.999999000 1.5 100.0005 2022-10-15 2022-10-15T10:30
2022-10-15 2022-10-15T10:30:00.999
+2 3 \N \N \N \N \N 128.1 4.023 \N
\N \N \N
+3 1 -32767 -50000 0 170141183460469231731687303715884105727
9.999999000 1.0 127.0001 \N \N \N \N
+4 \N \N \N \N \N \N \N \N \N
\N \N \N
-- !select --
-1 2.0 100.5 1000.5 2.1474836485E9 9.223372036854776E18
4.9999995 1.25 100.00030000000001
+1 2.0 100.5 1000.5 2.1474836485E9 9.223372036854776E18
4.999999500 1.25 100.00030000000001
2 2.0 \N \N \N \N \N 127.55000305175781
4.023
-3 0.0 -32767.5 -1.0737668235E9 -4.6116860184273879E18
8.5070591730175945E37 0 0.0 -0.5
+3 0.0 -32767.5 -1.0737668235E9 -4.6116860184273879E18
8.5070591730175945E37 0E-9 0.0 -0.5
4 \N \N \N \N \N \N \N \N
-- !select --
-1 6 201 2001 4294967297 9223372036854775808
9.999999 2.5 200.00060000000002
+1 6 201 2001 4294967297 9223372036854775808
9.999999000 2.5 200.00060000000002
2 12 \N \N \N \N \N 255.10000610351562
4.023
-3 0 -65535 -2147533647 -9223372036854775808
170141183460351890549139175670440884282 0 0.0 -1.0
+3 0 -65535 -2147533647 -9223372036854775808
170141183460351890549139175670440884282 0E-9 0.0 -1.0
4 \N \N \N \N \N \N \N \N
-- !select --
-1 6.0 10100.0 1001000.0 4.6116860205748716E18
9.223372036854776E18 0 1.5 10000.06000005
+1 6.0 10100.0 1001000.0 4.6116860205748716E18
9.223372036854776E18 0E-9 1.5 10000.06000005
2 36.0 \N \N \N \N \N 16268.700775146484
4.023
-3 -0.0 1.073709056E9 1.0737418235E14 -0.0 -1.9964567667389465E64
-7766259631453241920 -0.0 -16256.02550001
+3 -0.0 1.073709056E9 1.0737418235E14 -0.0 -1.9964567667389465E64
-99.999980000 -0.0 -16256.02550001
4 \N \N \N \N \N \N \N \N
diff --git
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions.out
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions.out
index 22a42eb4cf..0aa8122714 100644
---
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions.out
+++
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions.out
@@ -32,6 +32,28 @@
8 \N
9 true
+-- !select --
+1 true
+2 true
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
+-- !select --
+1 true
+2 true
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
-- !select --
1 [1, 2, 3] ['a', 'b', '']
2 [4] \N
@@ -43,6 +65,17 @@
8 [1, 2, 3, 4, NULL] ['a', 'b']
9 [1, 2, 3] ['a', 'b', '']
+-- !select --
+1 [2023-02-05, 2023-02-06] [2022-10-15 10:30:00.999, 2022-08-31
12:00:00.999]
+2 [2023-01-05, 2023-01-06] [2022-11-15 10:30:00.999, 2022-01-31
12:00:00.999]
+3 \N \N
+4 \N \N
+5 \N \N
+6 \N \N
+7 \N \N
+8 \N \N
+9 \N \N
+
-- !select --
[2, 3] 1
[4] 2
@@ -54,6 +87,28 @@
[1, 2, 3, 3, 4, 4, NULL] 8
[1, 2, 3] 9
+-- !select --
+[2023-02-06]
+[2023-01-05, 2023-01-06]
+\N
+\N
+\N
+\N
+\N
+\N
+\N
+
+-- !select --
+[2022-08-31 12:00:00.999]
+[2022-11-15 10:30:00.999, 2022-01-31 12:00:00.999]
+\N
+\N
+\N
+\N
+\N
+\N
+\N
+
-- !select --
1 [1, 2, 3] ['', 'a', 'b'] [1, 2]
2 [4] \N [5]
@@ -65,6 +120,17 @@
8 [NULL, 1, 2, 3, 3, 4, 4] ['a', 'b', 'b', 'b'] [1, 2, 2, 3]
9 [1, 2, 3] ['', 'a', 'b'] [1, 2]
+-- !select --
+1 [2023-02-05, 2023-02-06] [2022-08-31 12:00:00.999, 2022-10-15
10:30:00.999]
+2 [2023-01-05, 2023-01-06] [2022-01-31 12:00:00.999, 2022-11-15
10:30:00.999]
+3 \N \N
+4 \N \N
+5 \N \N
+6 \N \N
+7 \N \N
+8 \N \N
+9 \N \N
+
-- !select --
1 [1, 2, 3]
2 [4, 5]
@@ -76,6 +142,28 @@
8 [1, 2, 3, 4, NULL]
9 [1, 2, 3]
+-- !select --
+1 [2023-02-05, 2023-02-06, 2023-02-07]
+2 [2023-01-05, 2023-01-06, 2023-01-07]
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
+-- !select --
+1 [2022-10-15 10:30:00.999, 2022-08-31 12:00:00.999, 2022-10-16
10:30:00.999]
+2 [2022-11-15 10:30:00.999, 2022-01-31 12:00:00.999, 2022-11-16
10:30:00.999]
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
-- !select --
1 [3]
2 [4]
@@ -87,6 +175,28 @@
8 [4, NULL]
9 [3]
+-- !select --
+1 [2023-02-05]
+2 [2023-01-05]
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
+-- !select --
+1 [2022-10-15 10:30:00.999]
+2 [2022-11-15 10:30:00.999]
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
-- !select --
1 [1, 2]
2 []
@@ -98,6 +208,28 @@
8 [1, 2, 3]
9 [1, 2]
+-- !select --
+1 [2023-02-06]
+2 [2023-01-06]
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
+-- !select --
+1 [2022-08-31 12:00:00.999]
+2 [2022-01-31 12:00:00.999]
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
-- !select --
1 [2, 3]
2 []
@@ -120,6 +252,28 @@
8 [1, 2]
9 [1, 2]
+-- !select --
+1 [2023-02-05, 2023-02-06]
+2 [2023-01-05, 2023-01-06]
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
+-- !select --
+1 [2022-10-15 10:30:00.999, 2022-08-31 12:00:00.999]
+2 [2022-11-15 10:30:00.999, 2022-01-31 12:00:00.999]
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
-- !select --
1 [3, 2, 1] ['', 'b', 'a'] [2, 1]
2 [4] \N [5]
@@ -131,6 +285,17 @@
8 [NULL, 4, 4, 3, 3, 2, 1] ['b', 'b', 'b', 'a'] [3, 2, 2, 1]
9 [3, 2, 1] ['', 'b', 'a'] [2, 1]
+-- !select --
+1 [2023-02-06, 2023-02-05] [2022-08-31 12:00:00.999, 2022-10-15
10:30:00.999]
+2 [2023-01-06, 2023-01-05] [2022-01-31 12:00:00.999, 2022-11-15
10:30:00.999]
+3 \N \N
+4 \N \N
+5 \N \N
+6 \N \N
+7 \N \N
+8 \N \N
+9 \N \N
+
-- !select --
1 1_2_3 a-b-
2 4 \N
@@ -219,6 +384,28 @@
8 false
9 false
+-- !select --
+1 true
+2 false
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
+-- !select --
+1 true
+2 false
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
-- !select --
1 [1, 2, 3]
2 [1]
@@ -263,6 +450,28 @@
8 [1]
9 [1, 2]
+-- !select --
+1 [1, 2]
+2 [1, 2]
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
+-- !select --
+1 [1, 2]
+2 [1, 2]
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
-- !select --
1 [1, 2]
2 []
@@ -307,6 +516,28 @@
8 []
9 [2015-03-13 12:36:38]
+-- !select --
+1 [2023-02-05]
+2 [2023-01-05]
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
+-- !select --
+1 [2022-10-15 10:30:00.999]
+2 [2022-11-15 10:30:00.999]
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
-- !select --
1 [1, 1, 1]
2 [2, 2, 2]
@@ -461,6 +692,28 @@
8 0
9 0
+-- !select --
+1 1
+2 0
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
+-- !select --
+1 1
+2 0
+3 \N
+4 \N
+5 \N
+6 \N
+7 \N
+8 \N
+9 \N
+
-- !select --
\N \N
-1 \N
@@ -593,11 +846,11 @@
1 [2023-01-19 18:11:11.111, 2023-01-19 18:22:22.222, 2023-01-19
18:33:33.333] [2023-01-19 18:22:22.222, 2023-01-19 18:33:33.333, 2023-01-19
18:44:44.444] [2023-01-19 18:11:11.111111, 2023-01-19 18:22:22.222222,
2023-01-19 18:33:33.333333]
-- !select_array_datetimev2_2 --
-[2023-01-19 18:11:11, 2023-01-19 18:22:22, 2023-01-19 18:33:33]
+[2023-01-19 18:11:11.111, 2023-01-19 18:22:22.222, 2023-01-19 18:33:33.333]
-- !select_array_datetimev2_3 --
-[2023-01-19 18:22:22, 2023-01-19 18:33:33, 2023-01-19 18:44:44]
+[2023-01-19 18:22:22.222, 2023-01-19 18:33:33.333, 2023-01-19 18:44:44.444]
-- !select_array_datetimev2_4 --
-[2023-01-19 18:11:11, 2023-01-19 18:22:22, 2023-01-19 18:33:33]
+[2023-01-19 18:11:11.111, 2023-01-19 18:22:22.222, 2023-01-19 18:33:33.333]
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 01ec14bfdf..2384f7bec7 100644
---
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
@@ -26,6 +26,12 @@ false
-- !sql --
false
+-- !sql --
+true
+
+-- !sql --
+true
+
-- !sql --
1
@@ -71,6 +77,12 @@ false
-- !sql --
1
+-- !sql --
+2
+
+-- !sql --
+1
+
-- !sql --
3
@@ -95,6 +107,12 @@ false
-- !sql --
\N
+-- !sql --
+2023-02-04T22:07:34.999
+
+-- !sql --
+2023-02-05
+
-- !sql --
1
@@ -122,6 +140,12 @@ false
-- !sql --
[1, 0]
+-- !sql --
+2023-02-04T23:07:34.999
+
+-- !sql --
+2023-02-05
+
-- !sql --
2.0
@@ -188,6 +212,18 @@ false
-- !sql --
-16.344720000
+-- !sql --
+2023-02-04T22:07:34.999
+
+-- !sql --
+2023-02-04T23:07:34.999
+
+-- !sql --
+2023-02-04
+
+-- !sql --
+2023-02-05
+
-- !sql --
[1, 2, 3]
@@ -215,6 +251,12 @@ false
-- !sql --
[1, 0, NULL]
+-- !sql --
+[2023-02-04 22:07:34.999, 2023-02-04 23:07:34.999]
+
+-- !sql --
+[2023-02-04, 2023-02-05]
+
-- !sql --
[2, 3]
@@ -230,6 +272,12 @@ false
-- !sql --
[1]
+-- !sql --
+[2023-02-04 23:07:34.999]
+
+-- !sql --
+[2023-02-04]
+
-- !sql --
[1, 2, 3]
@@ -254,6 +302,12 @@ false
-- !sql --
[]
+-- !sql --
+[2023-02-04 23:07:34.999, 2023-02-06 22:07:34.999]
+
+-- !sql --
+[2023-02-05, 2023-02-06]
+
-- !sql --
false
@@ -269,6 +323,18 @@ false
-- !sql --
false
+-- !sql --
+true
+
+-- !sql --
+false
+
+-- !sql --
+true
+
+-- !sql --
+false
+
-- !sql --
[1, 2, 3, 4]
@@ -332,6 +398,24 @@ false
-- !sql --
[]
+-- !sql --
+[2023-02-06 22:07:34.999, 2023-02-04 23:07:34.999, 2023-02-07 22:07:34.999]
+
+-- !sql --
+[2023-02-06 22:07:34.999]
+
+-- !sql --
+[2023-02-04 23:07:34.999]
+
+-- !sql --
+[2023-02-06, 2023-02-05, 2023-02-07]
+
+-- !sql --
+[2023-02-06]
+
+-- !sql --
+[2023-02-05]
+
-- !sql --
[1]
@@ -359,6 +443,12 @@ false
-- !sql --
[0, 0]
+-- !sql --
+[2023-02-06 22:07:34.999, 2023-02-04 23:07:34.999]
+
+-- !sql --
+[2023-02-06, 2023-02-05]
+
-- !sql --
1_2_3
@@ -425,6 +515,12 @@ _
-- !sql --
['2015-03-13']
+-- !sql --
+[2023-02-06 22:07:34.999, 2023-02-04 23:07:34.999, 2023-02-07 22:07:34.999,
2023-02-04 23:07:34.999]
+
+-- !sql --
+[2023-02-06, 2023-02-05, 2023-02-07, 2023-02-05]
+
-- !sql --
[8, NULL]
diff --git
a/regression-test/data/query_p0/sql_functions/cast_function/test_cast_string_to_array.out
b/regression-test/data/query_p0/sql_functions/cast_function/test_cast_string_to_array.out
index 90d372c356..60eb0f837f 100644
---
a/regression-test/data/query_p0/sql_functions/cast_function/test_cast_string_to_array.out
+++
b/regression-test/data/query_p0/sql_functions/cast_function/test_cast_string_to_array.out
@@ -14,6 +14,12 @@
-- !sql --
[2022-09-01]
+-- !sql --
+[2022-09-01]
+
+-- !sql --
+[2022-09-01 00:00:00]
+
-- !sql --
[1, 2, 3, 0, 0, 0]
diff --git
a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_aggregation_functions.groovy
b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_aggregation_functions.groovy
index b48772a07c..fb7839c110 100644
---
a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_aggregation_functions.groovy
+++
b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_aggregation_functions.groovy
@@ -31,7 +31,9 @@ suite("test_array_aggregation_functions") {
`a7` array<float> NULL COMMENT "",
`a8` array<double> NULL COMMENT "",
`a9` array<date> NULL COMMENT "",
- `a10` array<datetime> NULL COMMENT ""
+ `a10` array<datetime> NULL COMMENT "",
+ `a11` array<datev2> NULL COMMENT "",
+ `a12` array<datetimev2(3)> NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(`k1`)
DISTRIBUTED BY HASH(`k1`) BUCKETS 1
@@ -40,13 +42,13 @@ suite("test_array_aggregation_functions") {
"storage_format" = "V2"
)
"""
- sql """ INSERT INTO ${tableName} VALUES(1, [1, 2, 3], [100, 101], [1000,
1001], [2147483648, 2147483649], [9223372036854775808], [0.0, 9.999999], [1.0,
1.5], [100.0001, 100.0005], ['2022-10-15', '2022-08-31', '2022-09-01'],
['2022-10-15 10:30:00', '2022-08-31 12:00:00', '2022-09-01 09:00:00']) """
- sql """ INSERT INTO ${tableName} VALUES(2, [1, 2, 3, NULL, 3, 2, 1], NULL,
NULL, NULL, NULL, NULL, [127, 128.1], [NULL, 4.023], NULL, NULL) """
- sql """ INSERT INTO ${tableName} VALUES(3, [-1, 0, 1], [-32767, -32768],
[-50000, -2147483647], [-9223372036854775808, 0],
[-117341182548128045443221445, 170141183460469231731687303715884105727],
[-9.999999, 9.999999], [-1.0, 0.0, 1.0], [-128.0001, 127.0001], NULL, NULL) """
- sql """ INSERT INTO ${tableName} VALUES(4, [], [], [], [], [], [], [], [],
[], NULL) """
+ sql """ INSERT INTO ${tableName} VALUES(1, [1, 2, 3], [100, 101], [1000,
1001], [2147483648, 2147483649], [9223372036854775808], [0.0, 9.999999], [1.0,
1.5], [100.0001, 100.0005], ['2022-10-15', '2022-08-31', '2022-09-01'],
['2022-10-15 10:30:00', '2022-08-31 12:00:00', '2022-09-01 09:00:00'],
['2022-10-15', '2022-08-31', '2022-09-01'], ['2022-10-15 10:30:00.999',
'2022-08-31 12:00:00.999', '2022-09-01 09:00:00.999']) """
+ sql """ INSERT INTO ${tableName} VALUES(2, [1, 2, 3, NULL, 3, 2, 1], NULL,
NULL, NULL, NULL, NULL, [127, 128.1], [NULL, 4.023], NULL, NULL, NULL, NULL) """
+ sql """ INSERT INTO ${tableName} VALUES(3, [-1, 0, 1], [-32767, -32768],
[-50000, -2147483647], [-9223372036854775808, 0],
[-117341182548128045443221445, 170141183460469231731687303715884105727],
[-9.999999, 9.999999], [-1.0, 0.0, 1.0], [-128.0001, 127.0001], NULL, NULL,
NULL, NULL) """
+ sql """ INSERT INTO ${tableName} VALUES(4, [], [], [], [], [], [], [], [],
[], NULL, NULL, NULL) """
- qt_select "SELECT k1, array_min(a1), array_min(a2), array_min(a3),
array_min(a4), array_min(a5), array_min(a6), array_min(a7), array_min(a8),
array_min(a9), array_min(a10) from ${tableName} order by k1"
- qt_select "SELECT k1, array_max(a1), array_max(a2), array_max(a3),
array_max(a4), array_max(a5), array_max(a6), array_max(a7), array_max(a8),
array_max(a9), array_max(a10) from ${tableName} order by k1"
+ qt_select "SELECT k1, array_min(a1), array_min(a2), array_min(a3),
array_min(a4), array_min(a5), array_min(a6), array_min(a7), array_min(a8),
array_min(a9), array_min(a10), array_min(a11), array_min(a12) from ${tableName}
order by k1"
+ qt_select "SELECT k1, array_max(a1), array_max(a2), array_max(a3),
array_max(a4), array_max(a5), array_max(a6), array_max(a7), array_max(a8),
array_max(a9), array_max(a10), array_max(a11), array_max(a12) from ${tableName}
order by k1"
qt_select "SELECT k1, array_avg(a1), array_avg(a2), array_avg(a3),
array_avg(a4), array_avg(a5), array_avg(a6), array_avg(a7), array_avg(a8) from
${tableName} order by k1"
qt_select "SELECT k1, array_sum(a1), array_sum(a2), array_sum(a3),
array_sum(a4), array_sum(a5), array_sum(a6), array_sum(a7), array_sum(a8) from
${tableName} order by k1"
qt_select "SELECT k1, array_product(a1), array_product(a2),
array_product(a3), array_product(a4), array_product(a5), array_product(a6),
array_product(a7), array_product(a8) from ${tableName} order by k1"
diff --git
a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions.groovy
b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions.groovy
index 096d3245fc..f4edcba8ea 100644
---
a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions.groovy
+++
b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions.groovy
@@ -27,7 +27,11 @@ suite("test_array_functions") {
`k4` ARRAY<int(11)> NULL COMMENT "",
`k5` ARRAY<CHAR(5)> NULL COMMENT "",
`k6` ARRAY<date> NULL COMMENT "",
- `k7` ARRAY<datetime> NULL COMMENT ""
+ `k7` ARRAY<datetime> NULL COMMENT "",
+ `k8` ARRAY<datev2> NULL COMMENT "",
+ `k9` ARRAY<datev2> NULL COMMENT "",
+ `k10` ARRAY<datetimev2(3)> NULL COMMENT "",
+ `k11` ARRAY<datetimev2(3)> NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(`k1`)
DISTRIBUTED BY HASH(`k1`) BUCKETS 1
@@ -36,28 +40,43 @@ suite("test_array_functions") {
"storage_format" = "V2"
)
"""
- sql """ INSERT INTO ${tableName}
VALUES(1,[1,2,3],["a","b",""],[1,2],["hi"],["2015-03-13"],["2015-03-13
12:36:38"]) """
- sql """ INSERT INTO ${tableName} VALUES(2,[4],NULL,[5],["hi2"],NULL,NULL)
"""
- sql """ INSERT INTO ${tableName} VALUES(3,[],[],NULL,["hi3"],NULL,NULL) """
- sql """ INSERT INTO ${tableName}
VALUES(4,[1,2,3,4,5,4,3,2,1],[],[],NULL,NULL,NULL) """
- sql """ INSERT INTO ${tableName}
VALUES(5,[],["a","b","c","d","c","b","a"],NULL,NULL,NULL,NULL) """
- sql """ INSERT INTO ${tableName}
VALUES(6,[1,2,3,4,5,4,3,2,1],["a","b","c","d","c","b","a"],NULL,NULL,NULL,NULL)
"""
- sql """ INSERT INTO ${tableName}
VALUES(7,[8,9,NULL,10,NULL],["f",NULL,"g",NULL,"h"],NULL,NULL,NULL,NULL) """
- sql """ INSERT INTO ${tableName}
VALUES(8,[1,2,3,3,4,4,NULL],["a","b","b","b"],[1,2,2,3],["hi","hi","hello"],["2015-03-13"],["2015-03-13
12:36:38"]) """
- sql """ INSERT INTO ${tableName}
VALUES(9,[1,2,3],["a","b",""],[1,2],["hi"],["2015-03-13","2015-03-13","2015-03-14"],["2015-03-13
12:36:38","2015-03-13 12:36:38"]) """
+ sql """ INSERT INTO ${tableName}
VALUES(1,[1,2,3],["a","b",""],[1,2],["hi"],["2015-03-13"],["2015-03-13
12:36:38"],["2023-02-05","2023-02-06"],["2023-02-07","2023-02-06"],['2022-10-15
10:30:00.999', '2022-08-31 12:00:00.999'],['2022-10-16 10:30:00.999',
'2022-08-31 12:00:00.999']) """
+ sql """ INSERT INTO ${tableName}
VALUES(2,[4],NULL,[5],["hi2"],NULL,NULL,["2023-01-05","2023-01-06"],["2023-01-07","2023-01-06"],['2022-11-15
10:30:00.999', '2022-01-31 12:00:00.999'],['2022-11-16 10:30:00.999',
'2022-01-31 12:00:00.999']) """
+ sql """ INSERT INTO ${tableName}
VALUES(3,[],[],NULL,["hi3"],NULL,NULL,NULL,NULL,NULL,NULL) """
+ sql """ INSERT INTO ${tableName}
VALUES(4,[1,2,3,4,5,4,3,2,1],[],[],NULL,NULL,NULL,NULL,NULL,NULL,NULL) """
+ sql """ INSERT INTO ${tableName}
VALUES(5,[],["a","b","c","d","c","b","a"],NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)
"""
+ sql """ INSERT INTO ${tableName}
VALUES(6,[1,2,3,4,5,4,3,2,1],["a","b","c","d","c","b","a"],NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)
"""
+ sql """ INSERT INTO ${tableName}
VALUES(7,[8,9,NULL,10,NULL],["f",NULL,"g",NULL,"h"],NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)
"""
+ sql """ INSERT INTO ${tableName}
VALUES(8,[1,2,3,3,4,4,NULL],["a","b","b","b"],[1,2,2,3],["hi","hi","hello"],["2015-03-13"],["2015-03-13
12:36:38"],NULL,NULL,NULL,NULL) """
+ sql """ INSERT INTO ${tableName}
VALUES(9,[1,2,3],["a","b",""],[1,2],["hi"],["2015-03-13","2015-03-13","2015-03-14"],["2015-03-13
12:36:38","2015-03-13 12:36:38"],NULL,NULL,NULL,NULL) """
qt_select "SELECT k1, size(k2), size(k3) FROM ${tableName} ORDER BY k1"
qt_select "SELECT k1, cardinality(k2), cardinality(k3) FROM ${tableName}
ORDER BY k1"
qt_select "SELECT k1, arrays_overlap(k2, k4) FROM ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, arrays_overlap(k8, k9) FROM ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, arrays_overlap(k10, k11) FROM ${tableName} ORDER BY
k1"
qt_select "SELECT k1, array_distinct(k2), array_distinct(k3) FROM
${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_distinct(k8), array_distinct(k10) FROM
${tableName} ORDER BY k1"
qt_select "SELECT array_remove(k2, k1), k1 FROM ${tableName} ORDER BY k1"
+ qt_select "SELECT array_remove(k8, cast('2023-02-05' as datev2)) FROM
${tableName} ORDER BY k1"
+ qt_select "SELECT array_remove(k10, cast('2022-10-15 10:30:00.999' as
datetimev2(3))) FROM ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_sort(k2), array_sort(k3), array_sort(k4) FROM
${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_sort(k8), array_sort(k10) FROM ${tableName}
ORDER BY k1"
qt_select "SELECT k1, array_union(k2, k4) FROM ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_union(k8, k9) FROM ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_union(k10, k11) FROM ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_except(k2, k4) FROM ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_except(k8, k9) FROM ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_except(k10, k11) FROM ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_intersect(k2, k4) FROM ${tableName} ORDER BY
k1"
+ qt_select "SELECT k1, array_intersect(k8, k9) FROM ${tableName} ORDER BY
k1"
+ qt_select "SELECT k1, array_intersect(k10, k11) FROM ${tableName} ORDER BY
k1"
qt_select "SELECT k1, array_slice(k2, 2) FROM ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_slice(k2, 1, 2) FROM ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_slice(k8, 1, 2) FROM ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_slice(k10, 1, 2) FROM ${tableName} ORDER BY k1"
qt_select "SELECT k1, reverse(k2), reverse(k3), reverse(k4) FROM
${tableName} ORDER BY k1"
+ qt_select "SELECT k1, reverse(k8), reverse(k10) FROM ${tableName} ORDER BY
k1"
qt_select "SELECT k1, array_join(k2, '_', 'null'), array_join(k3, '-',
'null') FROM ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_contains(k2, 1) FROM ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_contains(k3, 'a') FROM ${tableName} ORDER BY
k1"
@@ -66,14 +85,20 @@ suite("test_array_functions") {
qt_select "SELECT k1, array_contains(k5, 'hi') FROM ${tableName} ORDER BY
k1"
qt_select "SELECT k1, array_contains(k5, 'hi222') FROM ${tableName} ORDER
BY k1"
qt_select "SELECT k1, array_contains(k6, null) from ${tableName} ORDER BY
k1"
+ qt_select "SELECT k1, array_contains(k8, cast('2023-02-05' as datev2))
FROM ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_contains(k10, cast('2022-10-15 10:30:00.999'
as datetimev2(3))) FROM ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_enumerate(k2) from ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_enumerate(k5) from ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_enumerate(k6) from ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_enumerate(k7) from ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_enumerate(k8) from ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_enumerate(k10) from ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_popback(k2) from ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_popback(k5) from ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_popback(k6) from ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_popback(k7) from ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_popback(k8) from ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_popback(k10) from ${tableName} ORDER BY k1"
qt_select "SELECT k1, array_with_constant(3, k1) from ${tableName} ORDER
BY k1"
qt_select "SELECT k1, array_with_constant(10, null) from ${tableName}
ORDER BY k1"
qt_select "SELECT k1, array_with_constant(2, 'a') from ${tableName} ORDER
BY k1"
@@ -88,6 +113,8 @@ suite("test_array_functions") {
qt_select "SELECT k1, array_position(k5, 'hi') FROM ${tableName} ORDER BY
k1"
qt_select "SELECT k1, array_position(k5, 'hi222') FROM ${tableName} ORDER
BY k1"
qt_select "SELECT k1, array_position(k6, null) from ${tableName} ORDER BY
k1"
+ qt_select "SELECT k1, array_position(k8, cast('2023-02-05' as datev2))
FROM ${tableName} ORDER BY k1"
+ qt_select "SELECT k1, array_position(k10, cast('2022-10-15 10:30:00.999'
as datetimev2(3))) FROM ${tableName} ORDER BY k1"
def tableName2 = "tbl_test_array_range"
sql """DROP TABLE IF EXISTS ${tableName2}"""
@@ -175,7 +202,6 @@ suite("test_array_functions") {
["2023-01-19
18:11:11.111111","2023-01-19 18:22:22.222222","2023-01-19 18:33:33.333333"]) """
qt_select_array_datetimev2_1 "SELECT * FROM ${tableName4}"
- // Todo(Yukang-Lian): will fix if function bugs in the future
qt_select_array_datetimev2_2 "SELECT if(1,k2,k3) FROM ${tableName4}"
qt_select_array_datetimev2_3 "SELECT if(0,k2,k3) FROM ${tableName4}"
qt_select_array_datetimev2_4 "SELECT if(0,k2,k4) FROM ${tableName4}"
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 f60bbaf81a..c7afc7adb4 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
@@ -26,6 +26,8 @@ suite("test_array_functions_by_literal") {
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))"
// array_position function
qt_sql "select array_position([1,2,3], 1)"
@@ -42,6 +44,8 @@ suite("test_array_functions_by_literal") {
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))"
// element_at function
qt_sql "select element_at([1,2,3], 1)"
@@ -53,6 +57,8 @@ suite("test_array_functions_by_literal") {
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)"
// array subscript function
qt_sql "select [1,2,3][1]"
@@ -64,6 +70,8 @@ suite("test_array_functions_by_literal") {
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]"
// array_aggregation function
qt_sql "select array_avg([1,2,3])"
@@ -88,6 +96,10 @@ suite("test_array_functions_by_literal") {
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)))"
// array_distinct function
qt_sql "select array_distinct([1,1,2,2,3,3])"
@@ -99,6 +111,8 @@ suite("test_array_functions_by_literal") {
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)))"
// array_remove function
@@ -107,6 +121,8 @@ suite("test_array_functions_by_literal") {
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))"
// array_sort function
qt_sql "select array_sort([1,2,3])"
@@ -117,6 +133,8 @@ suite("test_array_functions_by_literal") {
qt_sql "select array_sort(['c','b','a'])"
qt_sql "select array_sort([true, false, true])"
qt_sql "select array_sort([])"
+ qt_sql "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 "select array_sort(array(cast ('2023-02-06' as datev2),cast
('2023-02-05' as datev2)))"
// array_overlap function
qt_sql "select arrays_overlap([1,2,3], [4,5,6])"
@@ -124,6 +142,10 @@ suite("test_array_functions_by_literal") {
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)))"
// array_binary function
qt_sql "select array_union([1,2,3], [2,3,4])"
@@ -147,8 +169,14 @@ suite("test_array_functions_by_literal") {
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)))"
- // arrat_slice function
+ // 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]"
@@ -158,6 +186,8 @@ suite("test_array_functions_by_literal") {
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]"
// array_join function
qt_sql "select array_join([1, 2, 3], '_')"
@@ -183,6 +213,8 @@ suite("test_array_functions_by_literal") {
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(8, null)"
qt_sql "select array('a', 1, 2)"
diff --git
a/regression-test/suites/query_p0/sql_functions/cast_function/test_cast_string_to_array.groovy
b/regression-test/suites/query_p0/sql_functions/cast_function/test_cast_string_to_array.groovy
index 311e310065..59d0a90413 100644
---
a/regression-test/suites/query_p0/sql_functions/cast_function/test_cast_string_to_array.groovy
+++
b/regression-test/suites/query_p0/sql_functions/cast_function/test_cast_string_to_array.groovy
@@ -31,6 +31,12 @@ suite("test_cast_string_to_array") {
// cast string to array<date>
qt_sql """ select cast ("[2022-09-01]" as array<date>) """
+ // cast string to array<datev2>
+ qt_sql """ select cast ("[2022-09-01]" as array<datev2>) """
+
+ // cast string to array<datetimev2>
+ qt_sql """ select cast ("[2022-09-01]" as array<datetimev2>) """
+
// cast empty value
qt_sql """ select cast ("[1,2,3,,,]" as array<int>) """
qt_sql """ select cast ("[a,b,c,,,]" as array<string>) """
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]