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

morrysnow 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 af8832389fe [feature](Nereids) add 4 array functions (#25488)
af8832389fe is described below

commit af8832389fe501e2cd1f8e0249f936e8146357d7
Author: morrySnow <[email protected]>
AuthorDate: Tue Oct 17 17:45:15 2023 +0800

    [feature](Nereids) add 4 array functions (#25488)
    
    - array_concat
    - array_pushback
    - array_pushfront
    - array_zip
---
 .../doris/catalog/BuiltinScalarFunctions.java      |    8 +
 .../expressions/functions/scalar/ArrayConcat.java  |   70 ++
 .../functions/scalar/ArrayPushBack.java            |   69 ++
 .../functions/scalar/ArrayPushFront.java           |   69 ++
 .../expressions/functions/scalar/ArrayZip.java     |   91 ++
 .../expressions/visitor/ScalarFunctionVisitor.java |   20 +
 .../nereids_function_p0/scalar_function/Array.out  | 1224 +++++++++++++++++++-
 .../array_functions/test_array_with_scale_type.out |   32 +-
 .../scalar_function/Array.groovy                   |  108 +-
 .../test_array_with_scale_type.groovy              |   16 +-
 10 files changed, 1677 insertions(+), 30 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
index 9bfad13a09d..e91f7949f79 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
@@ -30,6 +30,7 @@ import 
org.apache.doris.nereids.trees.expressions.functions.scalar.Array;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayApply;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayAvg;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayCompact;
+import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayConcat;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayContains;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayCount;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayCumSum;
@@ -52,6 +53,8 @@ import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayPopBack;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayPopFront;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayPosition;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayProduct;
+import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayPushBack;
+import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayPushFront;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayRange;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayRemove;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayRepeat;
@@ -62,6 +65,7 @@ import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArraySortBy;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArraySum;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayUnion;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayWithConstant;
+import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayZip;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArraysOverlap;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.Ascii;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.Asin;
@@ -421,6 +425,7 @@ public class BuiltinScalarFunctions implements 
FunctionHelper {
             scalar(ArrayApply.class, "array_apply"),
             scalar(ArrayAvg.class, "array_avg"),
             scalar(ArrayCompact.class, "array_compact"),
+            scalar(ArrayConcat.class, "array_concat"),
             scalar(ArrayContains.class, "array_contains"),
             scalar(ArrayCount.class, "array_count"),
             scalar(ArrayCumSum.class, "array_cum_sum"),
@@ -443,6 +448,8 @@ public class BuiltinScalarFunctions implements 
FunctionHelper {
             scalar(ArrayPopFront.class, "array_popfront"),
             scalar(ArrayPosition.class, "array_position"),
             scalar(ArrayProduct.class, "array_product"),
+            scalar(ArrayPushBack.class, "Array_pushback"),
+            scalar(ArrayPushFront.class, "Array_pushfront"),
             scalar(ArrayRange.class, "array_range"),
             scalar(ArrayRemove.class, "array_remove"),
             scalar(ArrayRepeat.class, "array_repeat"),
@@ -453,6 +460,7 @@ public class BuiltinScalarFunctions implements 
FunctionHelper {
             scalar(ArraySum.class, "array_sum"),
             scalar(ArrayUnion.class, "array_union"),
             scalar(ArrayWithConstant.class, "array_with_constant"),
+            scalar(ArrayZip.class, "array_zip"),
             scalar(ArraysOverlap.class, "arrays_overlap"),
             scalar(Ascii.class, "ascii"),
             scalar(Asin.class, "asin"),
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayConcat.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayConcat.java
new file mode 100644
index 00000000000..fe9d264a4ab
--- /dev/null
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayConcat.java
@@ -0,0 +1,70 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.doris.nereids.trees.expressions.functions.scalar;
+
+import org.apache.doris.catalog.FunctionSignature;
+import org.apache.doris.nereids.trees.expressions.Expression;
+import 
org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
+import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable;
+import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
+import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
+import org.apache.doris.nereids.types.ArrayType;
+import org.apache.doris.nereids.types.coercion.AnyDataType;
+import org.apache.doris.nereids.util.ExpressionUtils;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
+
+import java.util.List;
+
+/**
+ * ScalarFunction 'array_concat'
+ */
+public class ArrayConcat extends ScalarFunction implements 
ExplicitlyCastableSignature,
+        BinaryExpression, PropagateNullable {
+
+    public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+            FunctionSignature.retArgType(0).varArgs(ArrayType.of(new 
AnyDataType(0)))
+    );
+
+    /**
+     * constructor with more than 0 arguments.
+     */
+    public ArrayConcat(Expression arg, Expression ...varArgs) {
+        super("array_concat", ExpressionUtils.mergeArguments(arg, varArgs));
+    }
+
+    /**
+     * withChildren.
+     */
+    @Override
+    public ArrayConcat withChildren(List<Expression> children) {
+        Preconditions.checkArgument(!children.isEmpty());
+        return new ArrayConcat(children.get(0), children.subList(1, 
children.size()).toArray(new Expression[0]));
+    }
+
+    @Override
+    public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
+        return visitor.visitArrayConcat(this, context);
+    }
+
+    @Override
+    public List<FunctionSignature> getSignatures() {
+        return SIGNATURES;
+    }
+}
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java
new file mode 100644
index 00000000000..c1791a66f07
--- /dev/null
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java
@@ -0,0 +1,69 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.doris.nereids.trees.expressions.functions.scalar;
+
+import org.apache.doris.catalog.FunctionSignature;
+import org.apache.doris.nereids.trees.expressions.Expression;
+import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
+import 
org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
+import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
+import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
+import org.apache.doris.nereids.types.ArrayType;
+import org.apache.doris.nereids.types.coercion.AnyDataType;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
+
+import java.util.List;
+
+/**
+ * ScalarFunction 'array_pushback'.
+ */
+public class ArrayPushBack extends ScalarFunction
+        implements UnaryExpression, ExplicitlyCastableSignature, 
AlwaysNullable {
+
+    public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+            FunctionSignature.retArgType(0).args(ArrayType.of(new 
AnyDataType(0)), new AnyDataType(0))
+    );
+
+    /**
+     * constructor with 1 argument.
+     */
+    public ArrayPushBack(Expression arg0, Expression arg1) {
+        super("array_pushback", arg0, arg1);
+    }
+
+    /**
+     * withChildren.
+     */
+    @Override
+    public ArrayPushBack withChildren(List<Expression> children) {
+        Preconditions.checkArgument(children.size() == 2);
+        return new ArrayPushBack(children.get(0), children.get(1));
+    }
+
+    @Override
+    public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
+        return visitor.visitArrayPushBack(this, context);
+    }
+
+    @Override
+    public List<FunctionSignature> getSignatures() {
+        return SIGNATURES;
+    }
+}
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java
new file mode 100644
index 00000000000..458e062ba46
--- /dev/null
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java
@@ -0,0 +1,69 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.doris.nereids.trees.expressions.functions.scalar;
+
+import org.apache.doris.catalog.FunctionSignature;
+import org.apache.doris.nereids.trees.expressions.Expression;
+import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
+import 
org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
+import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
+import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
+import org.apache.doris.nereids.types.ArrayType;
+import org.apache.doris.nereids.types.coercion.AnyDataType;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
+
+import java.util.List;
+
+/**
+ * ScalarFunction 'array_pushfront'.
+ */
+public class ArrayPushFront extends ScalarFunction
+        implements UnaryExpression, ExplicitlyCastableSignature, 
AlwaysNullable {
+
+    public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+            FunctionSignature.retArgType(0).args(ArrayType.of(new 
AnyDataType(0)), new AnyDataType(0))
+    );
+
+    /**
+     * constructor with 1 argument.
+     */
+    public ArrayPushFront(Expression arg0, Expression arg1) {
+        super("array_pushfront", arg0, arg1);
+    }
+
+    /**
+     * withChildren.
+     */
+    @Override
+    public ArrayPushFront withChildren(List<Expression> children) {
+        Preconditions.checkArgument(children.size() == 2);
+        return new ArrayPushFront(children.get(0), children.get(1));
+    }
+
+    @Override
+    public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
+        return visitor.visitArrayPushFront(this, context);
+    }
+
+    @Override
+    public List<FunctionSignature> getSignatures() {
+        return SIGNATURES;
+    }
+}
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayZip.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayZip.java
new file mode 100644
index 00000000000..01455a4636c
--- /dev/null
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayZip.java
@@ -0,0 +1,91 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.doris.nereids.trees.expressions.functions.scalar;
+
+import org.apache.doris.catalog.FunctionSignature;
+import org.apache.doris.nereids.trees.expressions.Expression;
+import 
org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
+import org.apache.doris.nereids.trees.expressions.functions.ExpressionTrait;
+import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable;
+import org.apache.doris.nereids.trees.expressions.functions.SearchSignature;
+import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
+import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
+import org.apache.doris.nereids.types.ArrayType;
+import org.apache.doris.nereids.types.DataType;
+import org.apache.doris.nereids.types.StructField;
+import org.apache.doris.nereids.types.StructType;
+import org.apache.doris.nereids.types.TinyIntType;
+import org.apache.doris.nereids.util.ExpressionUtils;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
+
+import java.util.List;
+
+/**
+ * ScalarFunction 'array_zip'.
+ */
+public class ArrayZip extends ScalarFunction implements 
ExplicitlyCastableSignature,
+        BinaryExpression, PropagateNullable {
+
+    /**
+     * constructor with more than 0 arguments.
+     */
+    public ArrayZip(Expression arg, Expression ...varArgs) {
+        super("array_zip", ExpressionUtils.mergeArguments(arg, varArgs));
+    }
+
+    /**
+     * withChildren.
+     */
+    @Override
+    public ArrayZip withChildren(List<Expression> children) {
+        Preconditions.checkArgument(!children.isEmpty());
+        return new ArrayZip(children.get(0), children.subList(1, 
children.size()).toArray(new Expression[0]));
+    }
+
+    @Override
+    public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
+        return visitor.visitArrayZip(this, context);
+    }
+
+    @Override
+    public List<FunctionSignature> getSignatures() {
+        if (arity() == 0) {
+            SearchSignature.throwCanNotFoundFunctionException(getName(), 
getArguments());
+        }
+        if (!children.stream()
+                .map(ExpressionTrait::getDataType)
+                .filter(dt -> !dt.isNullType())
+                .allMatch(ArrayType.class::isInstance)) {
+            SearchSignature.throwCanNotFoundFunctionException(getName(), 
getArguments());
+        }
+        ImmutableList.Builder<StructField> structFieldBuilder = 
ImmutableList.builder();
+        for (int i = 0; i < children.size(); i++) {
+            DataType itemType = TinyIntType.INSTANCE;
+            DataType childType = children.get(i).getDataType();
+            if (childType instanceof ArrayType) {
+                itemType = ((ArrayType) childType).getItemType();
+            }
+            structFieldBuilder.add(new StructField(String.valueOf(i + 1), 
itemType, true, ""));
+        }
+
+        return ImmutableList.of(FunctionSignature.ret(ArrayType.of(new 
StructType(structFieldBuilder.build())))
+                
.args(children.stream().map(ExpressionTrait::getDataType).toArray(DataType[]::new)));
+    }
+}
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
index 230203ad09a..e94aae003c0 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
@@ -32,6 +32,7 @@ import 
org.apache.doris.nereids.trees.expressions.functions.scalar.Array;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayApply;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayAvg;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayCompact;
+import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayConcat;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayContains;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayCount;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayCumSum;
@@ -52,6 +53,8 @@ import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayPopBack;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayPopFront;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayPosition;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayProduct;
+import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayPushBack;
+import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayPushFront;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayRange;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayRemove;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayRepeat;
@@ -62,6 +65,7 @@ import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArraySortBy;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArraySum;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayUnion;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayWithConstant;
+import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayZip;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.ArraysOverlap;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.Ascii;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.Asin;
@@ -440,6 +444,10 @@ public interface ScalarFunctionVisitor<R, C> {
         return visitScalarFunction(arrayCompact, context);
     }
 
+    default R visitArrayConcat(ArrayConcat arrayConcat, C context) {
+        return visitScalarFunction(arrayConcat, context);
+    }
+
     default R visitArrayContains(ArrayContains arrayContains, C context) {
         return visitScalarFunction(arrayContains, context);
     }
@@ -516,6 +524,14 @@ public interface ScalarFunctionVisitor<R, C> {
         return visitScalarFunction(arrayProduct, context);
     }
 
+    default R visitArrayPushBack(ArrayPushBack arrayPushBack, C context) {
+        return visitScalarFunction(arrayPushBack, context);
+    }
+
+    default R visitArrayPushFront(ArrayPushFront arrayPushFront, C context) {
+        return visitScalarFunction(arrayPushFront, context);
+    }
+
     default R visitArrayRange(ArrayRange arrayRange, C context) {
         return visitScalarFunction(arrayRange, context);
     }
@@ -564,6 +580,10 @@ public interface ScalarFunctionVisitor<R, C> {
         return visitScalarFunction(arrayReverseSort, context);
     }
 
+    default R visitArrayZip(ArrayZip arrayZip, C context) {
+        return visitScalarFunction(arrayZip, context);
+    }
+
     default R visitAscii(Ascii ascii, C context) {
         return visitScalarFunction(ascii, context);
     }
diff --git a/regression-test/data/nereids_function_p0/scalar_function/Array.out 
b/regression-test/data/nereids_function_p0/scalar_function/Array.out
index 2d2a0ce49dd..1da82c833f9 100644
--- a/regression-test/data/nereids_function_p0/scalar_function/Array.out
+++ b/regression-test/data/nereids_function_p0/scalar_function/Array.out
@@ -637,6 +637,412 @@
 [2012-03-11]
 [2012-03-12]
 
+-- !sql_array_concat_Double --
+\N
+[0.1, 0.1]
+[0.2, 0.2]
+[0.3, 0.3]
+[0.4, 0.4]
+[0.5, 0.5]
+[0.6, 0.6]
+[0.7, 0.7]
+[0.8, 0.8]
+[0.9, 0.9]
+[1, 1]
+[1.1, 1.1]
+[1.2, 1.2]
+
+-- !sql_array_concat_Double_notnull --
+[0.1, 0.1]
+[0.2, 0.2]
+[0.3, 0.3]
+[0.4, 0.4]
+[0.5, 0.5]
+[0.6, 0.6]
+[0.7, 0.7]
+[0.8, 0.8]
+[0.9, 0.9]
+[1, 1]
+[1.1, 1.1]
+[1.2, 1.2]
+
+-- !sql_array_concat_Float --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_concat_Float_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_concat_LargeInt --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_concat_LargeInt_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_concat_BigInt --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_concat_BigInt_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_concat_SmallInt --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_concat_SmallInt_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_concat_Integer --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_concat_Integer_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_concat_TinyInt --
+\N
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+
+-- !sql_array_concat_TinyInt_notnull --
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+
+-- !sql_array_concat_DecimalV3 --
+\N
+[0.100000000, 0.100000000, 0.100000000, 0.100000000]
+[0.200000000, 0.200000000, 0.200000000, 0.200000000]
+[0.300000000, 0.300000000, 0.300000000, 0.300000000]
+[0.400000000, 0.400000000, 0.400000000, 0.400000000]
+[0.500000000, 0.500000000, 0.500000000, 0.500000000]
+[0.600000000, 0.600000000, 0.600000000, 0.600000000]
+[0.700000000, 0.700000000, 0.700000000, 0.700000000]
+[0.800000000, 0.800000000, 0.800000000, 0.800000000]
+[0.900000000, 0.900000000, 0.900000000, 0.900000000]
+[1.000000000, 1.000000000, 1.000000000, 1.000000000]
+[1.100000000, 1.100000000, 1.100000000, 1.100000000]
+[1.200000000, 1.200000000, 1.200000000, 1.200000000]
+
+-- !sql_array_concat_DecimalV3_notnull --
+[0.100000000, 0.100000000, 0.100000000, 0.100000000]
+[0.200000000, 0.200000000, 0.200000000, 0.200000000]
+[0.300000000, 0.300000000, 0.300000000, 0.300000000]
+[0.400000000, 0.400000000, 0.400000000, 0.400000000]
+[0.500000000, 0.500000000, 0.500000000, 0.500000000]
+[0.600000000, 0.600000000, 0.600000000, 0.600000000]
+[0.700000000, 0.700000000, 0.700000000, 0.700000000]
+[0.800000000, 0.800000000, 0.800000000, 0.800000000]
+[0.900000000, 0.900000000, 0.900000000, 0.900000000]
+[1.000000000, 1.000000000, 1.000000000, 1.000000000]
+[1.100000000, 1.100000000, 1.100000000, 1.100000000]
+[1.200000000, 1.200000000, 1.200000000, 1.200000000]
+
+-- !sql_array_concat_Boolean --
+\N
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+
+-- !sql_array_concat_Boolean_notnull --
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+
+-- !sql_array_concat_Char --
+\N
+["char11", "char21", "char31", "char11", "char21", "char31"]
+["char11", "char21", "char31", "char11", "char21", "char31"]
+["char11", "char21", "char31", "char11", "char21", "char31"]
+["char11", "char21", "char31", "char11", "char21", "char31"]
+["char12", "char22", "char32", "char12", "char22", "char32"]
+["char12", "char22", "char32", "char12", "char22", "char32"]
+["char12", "char22", "char32", "char12", "char22", "char32"]
+["char12", "char22", "char32", "char12", "char22", "char32"]
+["char13", "char23", "char33", "char13", "char23", "char33"]
+["char13", "char23", "char33", "char13", "char23", "char33"]
+["char13", "char23", "char33", "char13", "char23", "char33"]
+["char13", "char23", "char33", "char13", "char23", "char33"]
+
+-- !sql_array_concat_Char_notnull --
+["char11", "char21", "char31", "char11", "char21", "char31"]
+["char11", "char21", "char31", "char11", "char21", "char31"]
+["char11", "char21", "char31", "char11", "char21", "char31"]
+["char11", "char21", "char31", "char11", "char21", "char31"]
+["char12", "char22", "char32", "char12", "char22", "char32"]
+["char12", "char22", "char32", "char12", "char22", "char32"]
+["char12", "char22", "char32", "char12", "char22", "char32"]
+["char12", "char22", "char32", "char12", "char22", "char32"]
+["char13", "char23", "char33", "char13", "char23", "char33"]
+["char13", "char23", "char33", "char13", "char23", "char33"]
+["char13", "char23", "char33", "char13", "char23", "char33"]
+["char13", "char23", "char33", "char13", "char23", "char33"]
+
+-- !sql_array_concat_Varchar --
+\N
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"char11", "char21", "char31", "varchar11", "varchar21", "varchar31"]
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"char11", "char21", "char31", "varchar11", "varchar21", "varchar31"]
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"char11", "char21", "char31", "varchar11", "varchar21", "varchar31"]
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"char11", "char21", "char31", "varchar11", "varchar21", "varchar31"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"char12", "char22", "char32", "varchar12", "varchar22", "varchar32"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"char12", "char22", "char32", "varchar12", "varchar22", "varchar32"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"char12", "char22", "char32", "varchar12", "varchar22", "varchar32"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"char12", "char22", "char32", "varchar12", "varchar22", "varchar32"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"char13", "char23", "char33", "varchar13", "varchar23", "varchar33"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"char13", "char23", "char33", "varchar13", "varchar23", "varchar33"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"char13", "char23", "char33", "varchar13", "varchar23", "varchar33"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"char13", "char23", "char33", "varchar13", "varchar23", "varchar33"]
+
+-- !sql_array_concat_Varchar_notnull --
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"char11", "char21", "char31", "varchar11", "varchar21", "varchar31"]
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"char11", "char21", "char31", "varchar11", "varchar21", "varchar31"]
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"char11", "char21", "char31", "varchar11", "varchar21", "varchar31"]
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"char11", "char21", "char31", "varchar11", "varchar21", "varchar31"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"char12", "char22", "char32", "varchar12", "varchar22", "varchar32"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"char12", "char22", "char32", "varchar12", "varchar22", "varchar32"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"char12", "char22", "char32", "varchar12", "varchar22", "varchar32"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"char12", "char22", "char32", "varchar12", "varchar22", "varchar32"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"char13", "char23", "char33", "varchar13", "varchar23", "varchar33"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"char13", "char23", "char33", "varchar13", "varchar23", "varchar33"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"char13", "char23", "char33", "varchar13", "varchar23", "varchar33"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"char13", "char23", "char33", "varchar13", "varchar23", "varchar33"]
+
+-- !sql_array_concat_String --
+\N
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"char21", "char31", "varchar11", "varchar21", "varchar31", "string1"]
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"char21", "char31", "varchar11", "varchar21", "varchar31", "string1"]
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"char21", "char31", "varchar11", "varchar21", "varchar31", "string1"]
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"char21", "char31", "varchar11", "varchar21", "varchar31", "string1"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"char22", "char32", "varchar12", "varchar22", "varchar32", "string2"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"char22", "char32", "varchar12", "varchar22", "varchar32", "string2"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"char22", "char32", "varchar12", "varchar22", "varchar32", "string2"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"char22", "char32", "varchar12", "varchar22", "varchar32", "string2"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"char23", "char33", "varchar13", "varchar23", "varchar33", "string3"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"char23", "char33", "varchar13", "varchar23", "varchar33", "string3"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"char23", "char33", "varchar13", "varchar23", "varchar33", "string3"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"char23", "char33", "varchar13", "varchar23", "varchar33", "string3"]
+
+-- !sql_array_concat_String_notnull --
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"char21", "char31", "varchar11", "varchar21", "varchar31", "string1"]
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"char21", "char31", "varchar11", "varchar21", "varchar31", "string1"]
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"char21", "char31", "varchar11", "varchar21", "varchar31", "string1"]
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"char21", "char31", "varchar11", "varchar21", "varchar31", "string1"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"char22", "char32", "varchar12", "varchar22", "varchar32", "string2"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"char22", "char32", "varchar12", "varchar22", "varchar32", "string2"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"char22", "char32", "varchar12", "varchar22", "varchar32", "string2"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"char22", "char32", "varchar12", "varchar22", "varchar32", "string2"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"char23", "char33", "varchar13", "varchar23", "varchar33", "string3"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"char23", "char33", "varchar13", "varchar23", "varchar33", "string3"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"char23", "char33", "varchar13", "varchar23", "varchar33", "string3"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"char23", "char33", "varchar13", "varchar23", "varchar33", "string3"]
+
+-- !sql_array_concat_DatetimeV2 --
+\N
+[2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 
01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000, 
2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 
01:00:01.000000]
+[2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 
02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000, 
2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 
02:01:02.000000]
+[2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 
03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000, 
2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 
03:02:03.000000]
+[2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 
04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000, 
2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 
04:03:04.000000]
+[2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 
05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000, 
2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 
05:04:05.000000]
+[2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 
06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000, 
2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 
06:05:06.000000]
+[2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 
07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000, 
2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 
07:06:07.000000]
+[2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 
08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000, 
2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 
08:07:08.000000]
+[2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 
09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000, 
2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 
09:08:09.000000]
+[2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 
10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000, 
2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 
10:09:10.000000]
+[2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 
11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000, 
2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 
11:10:11.000000]
+[2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 
12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000, 
2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 
12:11:12.000000]
+
+-- !sql_array_concat_DatetimeV2_notnull --
+[2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 
01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000, 
2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 
01:00:01.000000]
+[2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 
02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000, 
2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 
02:01:02.000000]
+[2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 
03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000, 
2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 
03:02:03.000000]
+[2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 
04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000, 
2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 
04:03:04.000000]
+[2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 
05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000, 
2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 
05:04:05.000000]
+[2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 
06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000, 
2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 
06:05:06.000000]
+[2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 
07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000, 
2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 
07:06:07.000000]
+[2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 
08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000, 
2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 
08:07:08.000000]
+[2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 
09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000, 
2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 
09:08:09.000000]
+[2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 
10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000, 
2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 
10:09:10.000000]
+[2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 
11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000, 
2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 
11:10:11.000000]
+[2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 
12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000, 
2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 
12:11:12.000000]
+
+-- !sql_array_concat_DateV2 --
+\N
+[2012-03-01, 2012-03-01, 2012-03-01, 2012-03-01]
+[2012-03-02, 2012-03-02, 2012-03-02, 2012-03-02]
+[2012-03-03, 2012-03-03, 2012-03-03, 2012-03-03]
+[2012-03-04, 2012-03-04, 2012-03-04, 2012-03-04]
+[2012-03-05, 2012-03-05, 2012-03-05, 2012-03-05]
+[2012-03-06, 2012-03-06, 2012-03-06, 2012-03-06]
+[2012-03-07, 2012-03-07, 2012-03-07, 2012-03-07]
+[2012-03-08, 2012-03-08, 2012-03-08, 2012-03-08]
+[2012-03-09, 2012-03-09, 2012-03-09, 2012-03-09]
+[2012-03-10, 2012-03-10, 2012-03-10, 2012-03-10]
+[2012-03-11, 2012-03-11, 2012-03-11, 2012-03-11]
+[2012-03-12, 2012-03-12, 2012-03-12, 2012-03-12]
+
+-- !sql_array_concat_DateV2_notnull --
+[2012-03-01, 2012-03-01, 2012-03-01, 2012-03-01]
+[2012-03-02, 2012-03-02, 2012-03-02, 2012-03-02]
+[2012-03-03, 2012-03-03, 2012-03-03, 2012-03-03]
+[2012-03-04, 2012-03-04, 2012-03-04, 2012-03-04]
+[2012-03-05, 2012-03-05, 2012-03-05, 2012-03-05]
+[2012-03-06, 2012-03-06, 2012-03-06, 2012-03-06]
+[2012-03-07, 2012-03-07, 2012-03-07, 2012-03-07]
+[2012-03-08, 2012-03-08, 2012-03-08, 2012-03-08]
+[2012-03-09, 2012-03-09, 2012-03-09, 2012-03-09]
+[2012-03-10, 2012-03-10, 2012-03-10, 2012-03-10]
+[2012-03-11, 2012-03-11, 2012-03-11, 2012-03-11]
+[2012-03-12, 2012-03-12, 2012-03-12, 2012-03-12]
+
 -- !sql_array_difference_Double --
 \N
 [0]
@@ -5973,6 +6379,818 @@ true
 1.210000000
 1.440000000
 
+-- !sql_array_pushback_Double --
+\N
+[0.1, 0.1]
+[0.2, 0.2]
+[0.3, 0.3]
+[0.4, 0.4]
+[0.5, 0.5]
+[0.6, 0.6]
+[0.7, 0.7]
+[0.8, 0.8]
+[0.9, 0.9]
+[1, 1]
+[1.1, 1.1]
+[1.2, 1.2]
+
+-- !sql_array_pushback_Double_notnull --
+[0.1, 0.1]
+[0.2, 0.2]
+[0.3, 0.3]
+[0.4, 0.4]
+[0.5, 0.5]
+[0.6, 0.6]
+[0.7, 0.7]
+[0.8, 0.8]
+[0.9, 0.9]
+[1, 1]
+[1.1, 1.1]
+[1.2, 1.2]
+
+-- !sql_array_pushback_Float --
+\N
+[1, 0.1]
+[10, 1]
+[11, 1.1]
+[12, 1.2]
+[2, 0.2]
+[3, 0.3]
+[4, 0.4]
+[5, 0.5]
+[6, 0.6]
+[7, 0.7]
+[8, 0.8]
+[9, 0.9]
+
+-- !sql_array_pushback_Float_notnull --
+[1, 0.1]
+[10, 1]
+[11, 1.1]
+[12, 1.2]
+[2, 0.2]
+[3, 0.3]
+[4, 0.4]
+[5, 0.5]
+[6, 0.6]
+[7, 0.7]
+[8, 0.8]
+[9, 0.9]
+
+-- !sql_array_pushback_LargeInt --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushback_LargeInt_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushback_BigInt --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushback_BigInt_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushback_SmallInt --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushback_SmallInt_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushback_Integer --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushback_Integer_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushback_TinyInt --
+\N
+[0, 1]
+[0, 2]
+[0, 3]
+[0, 4]
+[0, 5]
+[0, 6]
+[0, 7]
+[1, 10]
+[1, 11]
+[1, 12]
+[1, 8]
+[1, 9]
+
+-- !sql_array_pushback_TinyInt_notnull --
+[0, 1]
+[0, 2]
+[0, 3]
+[0, 4]
+[0, 5]
+[0, 6]
+[0, 7]
+[1, 10]
+[1, 11]
+[1, 12]
+[1, 8]
+[1, 9]
+
+-- !sql_array_pushback_DecimalV3 --
+\N
+[0.100000000, 0.100000000, 0.100000000]
+[0.200000000, 0.200000000, 0.200000000]
+[0.300000000, 0.300000000, 0.300000000]
+[0.400000000, 0.400000000, 0.400000000]
+[0.500000000, 0.500000000, 0.500000000]
+[0.600000000, 0.600000000, 0.600000000]
+[0.700000000, 0.700000000, 0.700000000]
+[0.800000000, 0.800000000, 0.800000000]
+[0.900000000, 0.900000000, 0.900000000]
+[1.000000000, 1.000000000, 1.000000000]
+[1.100000000, 1.100000000, 1.100000000]
+[1.200000000, 1.200000000, 1.200000000]
+
+-- !sql_array_pushback_DecimalV3_notnull --
+[0.100000000, 0.100000000, 0.100000000]
+[0.200000000, 0.200000000, 0.200000000]
+[0.300000000, 0.300000000, 0.300000000]
+[0.400000000, 0.400000000, 0.400000000]
+[0.500000000, 0.500000000, 0.500000000]
+[0.600000000, 0.600000000, 0.600000000]
+[0.700000000, 0.700000000, 0.700000000]
+[0.800000000, 0.800000000, 0.800000000]
+[0.900000000, 0.900000000, 0.900000000]
+[1.000000000, 1.000000000, 1.000000000]
+[1.100000000, 1.100000000, 1.100000000]
+[1.200000000, 1.200000000, 1.200000000]
+
+-- !sql_array_pushback_Boolean --
+\N
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+
+-- !sql_array_pushback_Boolean_notnull --
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+
+-- !sql_array_pushback_Char --
+\N
+["char11", "char21", "char31", "char11"]
+["char11", "char21", "char31", "char11"]
+["char11", "char21", "char31", "char11"]
+["char11", "char21", "char31", "char11"]
+["char12", "char22", "char32", "char12"]
+["char12", "char22", "char32", "char12"]
+["char12", "char22", "char32", "char12"]
+["char12", "char22", "char32", "char12"]
+["char13", "char23", "char33", "char13"]
+["char13", "char23", "char33", "char13"]
+["char13", "char23", "char33", "char13"]
+["char13", "char23", "char33", "char13"]
+
+-- !sql_array_pushback_Char_notnull --
+["char11", "char21", "char31", "char11"]
+["char11", "char21", "char31", "char11"]
+["char11", "char21", "char31", "char11"]
+["char11", "char21", "char31", "char11"]
+["char12", "char22", "char32", "char12"]
+["char12", "char22", "char32", "char12"]
+["char12", "char22", "char32", "char12"]
+["char12", "char22", "char32", "char12"]
+["char13", "char23", "char33", "char13"]
+["char13", "char23", "char33", "char13"]
+["char13", "char23", "char33", "char13"]
+["char13", "char23", "char33", "char13"]
+
+-- !sql_array_pushback_Varchar --
+\N
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"varchar11"]
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"varchar11"]
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"varchar11"]
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"varchar11"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"varchar12"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"varchar12"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"varchar12"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"varchar12"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"varchar13"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"varchar13"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"varchar13"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"varchar13"]
+
+-- !sql_array_pushback_Varchar_notnull --
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"varchar11"]
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"varchar11"]
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"varchar11"]
+["char11", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"varchar11"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"varchar12"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"varchar12"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"varchar12"]
+["char12", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"varchar12"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"varchar13"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"varchar13"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"varchar13"]
+["char13", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"varchar13"]
+
+-- !sql_array_pushback_String --
+\N
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"string1"]
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"string1"]
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"string1"]
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"string1"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"string2"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"string2"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"string2"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"string2"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"string3"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"string3"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"string3"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"string3"]
+
+-- !sql_array_pushback_String_notnull --
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"string1"]
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"string1"]
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"string1"]
+["char21", "char31", "varchar11", "varchar21", "varchar31", "string1", 
"string1"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"string2"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"string2"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"string2"]
+["char22", "char32", "varchar12", "varchar22", "varchar32", "string2", 
"string2"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"string3"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"string3"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"string3"]
+["char23", "char33", "varchar13", "varchar23", "varchar33", "string3", 
"string3"]
+
+-- !sql_array_pushback_DatetimeV2 --
+\N
+[2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 
01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000]
+[2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 
02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000]
+[2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 
03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000]
+[2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 
04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000]
+[2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 
05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000]
+[2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 
06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000]
+[2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 
07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000]
+[2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 
08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000]
+[2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 
09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000]
+[2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 
10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000]
+[2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 
11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000]
+[2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 
12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000]
+
+-- !sql_array_pushback_DatetimeV2_notnull --
+[2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 
01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000]
+[2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 
02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000]
+[2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 
03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000]
+[2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 
04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000]
+[2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 
05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000]
+[2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 
06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000]
+[2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 
07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000]
+[2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 
08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000]
+[2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 
09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000]
+[2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 
10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000]
+[2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 
11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000]
+[2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 
12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000]
+
+-- !sql_array_pushback_DateV2 --
+\N
+[2012-03-01, 2012-03-01, 2012-03-01]
+[2012-03-02, 2012-03-02, 2012-03-02]
+[2012-03-03, 2012-03-03, 2012-03-03]
+[2012-03-04, 2012-03-04, 2012-03-04]
+[2012-03-05, 2012-03-05, 2012-03-05]
+[2012-03-06, 2012-03-06, 2012-03-06]
+[2012-03-07, 2012-03-07, 2012-03-07]
+[2012-03-08, 2012-03-08, 2012-03-08]
+[2012-03-09, 2012-03-09, 2012-03-09]
+[2012-03-10, 2012-03-10, 2012-03-10]
+[2012-03-11, 2012-03-11, 2012-03-11]
+[2012-03-12, 2012-03-12, 2012-03-12]
+
+-- !sql_array_pushback_DateV2_notnull --
+[2012-03-01, 2012-03-01, 2012-03-01]
+[2012-03-02, 2012-03-02, 2012-03-02]
+[2012-03-03, 2012-03-03, 2012-03-03]
+[2012-03-04, 2012-03-04, 2012-03-04]
+[2012-03-05, 2012-03-05, 2012-03-05]
+[2012-03-06, 2012-03-06, 2012-03-06]
+[2012-03-07, 2012-03-07, 2012-03-07]
+[2012-03-08, 2012-03-08, 2012-03-08]
+[2012-03-09, 2012-03-09, 2012-03-09]
+[2012-03-10, 2012-03-10, 2012-03-10]
+[2012-03-11, 2012-03-11, 2012-03-11]
+[2012-03-12, 2012-03-12, 2012-03-12]
+
+-- !sql_array_pushfront_Double --
+\N
+[0.1, 0.1]
+[0.2, 0.2]
+[0.3, 0.3]
+[0.4, 0.4]
+[0.5, 0.5]
+[0.6, 0.6]
+[0.7, 0.7]
+[0.8, 0.8]
+[0.9, 0.9]
+[1, 1]
+[1.1, 1.1]
+[1.2, 1.2]
+
+-- !sql_array_pushfront_Double_notnull --
+[0.1, 0.1]
+[0.2, 0.2]
+[0.3, 0.3]
+[0.4, 0.4]
+[0.5, 0.5]
+[0.6, 0.6]
+[0.7, 0.7]
+[0.8, 0.8]
+[0.9, 0.9]
+[1, 1]
+[1.1, 1.1]
+[1.2, 1.2]
+
+-- !sql_array_pushfront_Float --
+\N
+[0.1, 1]
+[0.2, 2]
+[0.3, 3]
+[0.4, 4]
+[0.5, 5]
+[0.6, 6]
+[0.7, 7]
+[0.8, 8]
+[0.9, 9]
+[1, 10]
+[1.1, 11]
+[1.2, 12]
+
+-- !sql_array_pushfront_Float_notnull --
+[0.1, 1]
+[0.2, 2]
+[0.3, 3]
+[0.4, 4]
+[0.5, 5]
+[0.6, 6]
+[0.7, 7]
+[0.8, 8]
+[0.9, 9]
+[1, 10]
+[1.1, 11]
+[1.2, 12]
+
+-- !sql_array_pushfront_LargeInt --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushfront_LargeInt_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushfront_BigInt --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushfront_BigInt_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushfront_SmallInt --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushfront_SmallInt_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushfront_Integer --
+\N
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushfront_Integer_notnull --
+[1, 1]
+[10, 10]
+[11, 11]
+[12, 12]
+[2, 2]
+[3, 3]
+[4, 4]
+[5, 5]
+[6, 6]
+[7, 7]
+[8, 8]
+[9, 9]
+
+-- !sql_array_pushfront_TinyInt --
+\N
+[1, 0]
+[10, 1]
+[11, 1]
+[12, 1]
+[2, 0]
+[3, 0]
+[4, 0]
+[5, 0]
+[6, 0]
+[7, 0]
+[8, 1]
+[9, 1]
+
+-- !sql_array_pushfront_TinyInt_notnull --
+[1, 0]
+[10, 1]
+[11, 1]
+[12, 1]
+[2, 0]
+[3, 0]
+[4, 0]
+[5, 0]
+[6, 0]
+[7, 0]
+[8, 1]
+[9, 1]
+
+-- !sql_array_pushfront_DecimalV3 --
+\N
+[0.100000000, 0.100000000, 0.100000000]
+[0.200000000, 0.200000000, 0.200000000]
+[0.300000000, 0.300000000, 0.300000000]
+[0.400000000, 0.400000000, 0.400000000]
+[0.500000000, 0.500000000, 0.500000000]
+[0.600000000, 0.600000000, 0.600000000]
+[0.700000000, 0.700000000, 0.700000000]
+[0.800000000, 0.800000000, 0.800000000]
+[0.900000000, 0.900000000, 0.900000000]
+[1.000000000, 1.000000000, 1.000000000]
+[1.100000000, 1.100000000, 1.100000000]
+[1.200000000, 1.200000000, 1.200000000]
+
+-- !sql_array_pushfront_DecimalV3_notnull --
+[0.100000000, 0.100000000, 0.100000000]
+[0.200000000, 0.200000000, 0.200000000]
+[0.300000000, 0.300000000, 0.300000000]
+[0.400000000, 0.400000000, 0.400000000]
+[0.500000000, 0.500000000, 0.500000000]
+[0.600000000, 0.600000000, 0.600000000]
+[0.700000000, 0.700000000, 0.700000000]
+[0.800000000, 0.800000000, 0.800000000]
+[0.900000000, 0.900000000, 0.900000000]
+[1.000000000, 1.000000000, 1.000000000]
+[1.100000000, 1.100000000, 1.100000000]
+[1.200000000, 1.200000000, 1.200000000]
+
+-- !sql_array_pushfront_Boolean --
+\N
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+
+-- !sql_array_pushfront_Boolean_notnull --
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[0, 0]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+[1, 1]
+
+-- !sql_array_pushfront_Char --
+\N
+["char11", "char11", "char21", "char31"]
+["char11", "char11", "char21", "char31"]
+["char11", "char11", "char21", "char31"]
+["char11", "char11", "char21", "char31"]
+["char12", "char12", "char22", "char32"]
+["char12", "char12", "char22", "char32"]
+["char12", "char12", "char22", "char32"]
+["char12", "char12", "char22", "char32"]
+["char13", "char13", "char23", "char33"]
+["char13", "char13", "char23", "char33"]
+["char13", "char13", "char23", "char33"]
+["char13", "char13", "char23", "char33"]
+
+-- !sql_array_pushfront_Char_notnull --
+["char11", "char11", "char21", "char31"]
+["char11", "char11", "char21", "char31"]
+["char11", "char11", "char21", "char31"]
+["char11", "char11", "char21", "char31"]
+["char12", "char12", "char22", "char32"]
+["char12", "char12", "char22", "char32"]
+["char12", "char12", "char22", "char32"]
+["char12", "char12", "char22", "char32"]
+["char13", "char13", "char23", "char33"]
+["char13", "char13", "char23", "char33"]
+["char13", "char13", "char23", "char33"]
+["char13", "char13", "char23", "char33"]
+
+-- !sql_array_pushfront_Varchar --
+\N
+["varchar11", "char11", "char21", "char31", "varchar11", "varchar21", 
"varchar31"]
+["varchar11", "char11", "char21", "char31", "varchar11", "varchar21", 
"varchar31"]
+["varchar11", "char11", "char21", "char31", "varchar11", "varchar21", 
"varchar31"]
+["varchar11", "char11", "char21", "char31", "varchar11", "varchar21", 
"varchar31"]
+["varchar12", "char12", "char22", "char32", "varchar12", "varchar22", 
"varchar32"]
+["varchar12", "char12", "char22", "char32", "varchar12", "varchar22", 
"varchar32"]
+["varchar12", "char12", "char22", "char32", "varchar12", "varchar22", 
"varchar32"]
+["varchar12", "char12", "char22", "char32", "varchar12", "varchar22", 
"varchar32"]
+["varchar13", "char13", "char23", "char33", "varchar13", "varchar23", 
"varchar33"]
+["varchar13", "char13", "char23", "char33", "varchar13", "varchar23", 
"varchar33"]
+["varchar13", "char13", "char23", "char33", "varchar13", "varchar23", 
"varchar33"]
+["varchar13", "char13", "char23", "char33", "varchar13", "varchar23", 
"varchar33"]
+
+-- !sql_array_pushfront_Varchar_notnull --
+["varchar11", "char11", "char21", "char31", "varchar11", "varchar21", 
"varchar31"]
+["varchar11", "char11", "char21", "char31", "varchar11", "varchar21", 
"varchar31"]
+["varchar11", "char11", "char21", "char31", "varchar11", "varchar21", 
"varchar31"]
+["varchar11", "char11", "char21", "char31", "varchar11", "varchar21", 
"varchar31"]
+["varchar12", "char12", "char22", "char32", "varchar12", "varchar22", 
"varchar32"]
+["varchar12", "char12", "char22", "char32", "varchar12", "varchar22", 
"varchar32"]
+["varchar12", "char12", "char22", "char32", "varchar12", "varchar22", 
"varchar32"]
+["varchar12", "char12", "char22", "char32", "varchar12", "varchar22", 
"varchar32"]
+["varchar13", "char13", "char23", "char33", "varchar13", "varchar23", 
"varchar33"]
+["varchar13", "char13", "char23", "char33", "varchar13", "varchar23", 
"varchar33"]
+["varchar13", "char13", "char23", "char33", "varchar13", "varchar23", 
"varchar33"]
+["varchar13", "char13", "char23", "char33", "varchar13", "varchar23", 
"varchar33"]
+
+-- !sql_array_pushfront_String --
+\N
+["string1", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"string1"]
+["string1", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"string1"]
+["string1", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"string1"]
+["string1", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"string1"]
+["string2", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"string2"]
+["string2", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"string2"]
+["string2", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"string2"]
+["string2", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"string2"]
+["string3", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"string3"]
+["string3", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"string3"]
+["string3", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"string3"]
+["string3", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"string3"]
+
+-- !sql_array_pushfront_String_notnull --
+["string1", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"string1"]
+["string1", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"string1"]
+["string1", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"string1"]
+["string1", "char21", "char31", "varchar11", "varchar21", "varchar31", 
"string1"]
+["string2", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"string2"]
+["string2", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"string2"]
+["string2", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"string2"]
+["string2", "char22", "char32", "varchar12", "varchar22", "varchar32", 
"string2"]
+["string3", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"string3"]
+["string3", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"string3"]
+["string3", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"string3"]
+["string3", "char23", "char33", "varchar13", "varchar23", "varchar33", 
"string3"]
+
+-- !sql_array_pushfront_DatetimeV2 --
+\N
+[2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 
01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000]
+[2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 
02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000]
+[2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 
03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000]
+[2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 
04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000]
+[2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 
05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000]
+[2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 
06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000]
+[2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 
07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000]
+[2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 
08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000]
+[2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 
09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000]
+[2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 
10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000]
+[2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 
11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000]
+[2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 
12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000]
+
+-- !sql_array_pushfront_DatetimeV2_notnull --
+[2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 
01:00:01.000000, 2012-03-01 01:00:01.000000, 2012-03-01 01:00:01.000000]
+[2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 
02:01:02.000000, 2012-03-02 02:01:02.000000, 2012-03-02 02:01:02.000000]
+[2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 
03:02:03.000000, 2012-03-03 03:02:03.000000, 2012-03-03 03:02:03.000000]
+[2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 
04:03:04.000000, 2012-03-04 04:03:04.000000, 2012-03-04 04:03:04.000000]
+[2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 
05:04:05.000000, 2012-03-05 05:04:05.000000, 2012-03-05 05:04:05.000000]
+[2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 
06:05:06.000000, 2012-03-06 06:05:06.000000, 2012-03-06 06:05:06.000000]
+[2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 
07:06:07.000000, 2012-03-07 07:06:07.000000, 2012-03-07 07:06:07.000000]
+[2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 
08:07:08.000000, 2012-03-08 08:07:08.000000, 2012-03-08 08:07:08.000000]
+[2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 
09:08:09.000000, 2012-03-09 09:08:09.000000, 2012-03-09 09:08:09.000000]
+[2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 
10:09:10.000000, 2012-03-10 10:09:10.000000, 2012-03-10 10:09:10.000000]
+[2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 
11:10:11.000000, 2012-03-11 11:10:11.000000, 2012-03-11 11:10:11.000000]
+[2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 
12:11:12.000000, 2012-03-12 12:11:12.000000, 2012-03-12 12:11:12.000000]
+
+-- !sql_array_pushfront_DateV2 --
+\N
+[2012-03-01, 2012-03-01, 2012-03-01]
+[2012-03-02, 2012-03-02, 2012-03-02]
+[2012-03-03, 2012-03-03, 2012-03-03]
+[2012-03-04, 2012-03-04, 2012-03-04]
+[2012-03-05, 2012-03-05, 2012-03-05]
+[2012-03-06, 2012-03-06, 2012-03-06]
+[2012-03-07, 2012-03-07, 2012-03-07]
+[2012-03-08, 2012-03-08, 2012-03-08]
+[2012-03-09, 2012-03-09, 2012-03-09]
+[2012-03-10, 2012-03-10, 2012-03-10]
+[2012-03-11, 2012-03-11, 2012-03-11]
+[2012-03-12, 2012-03-12, 2012-03-12]
+
+-- !sql_array_pushfront_DateV2_notnull --
+[2012-03-01, 2012-03-01, 2012-03-01]
+[2012-03-02, 2012-03-02, 2012-03-02]
+[2012-03-03, 2012-03-03, 2012-03-03]
+[2012-03-04, 2012-03-04, 2012-03-04]
+[2012-03-05, 2012-03-05, 2012-03-05]
+[2012-03-06, 2012-03-06, 2012-03-06]
+[2012-03-07, 2012-03-07, 2012-03-07]
+[2012-03-08, 2012-03-08, 2012-03-08]
+[2012-03-09, 2012-03-09, 2012-03-09]
+[2012-03-10, 2012-03-10, 2012-03-10]
+[2012-03-11, 2012-03-11, 2012-03-11]
+[2012-03-12, 2012-03-12, 2012-03-12]
+
 -- !sql_array_range_one_param --
 \N
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
@@ -13008,12 +14226,12 @@ true
 -- !array_repeat1 --
 ["hello", "hello"]
 
--- !array_repeat1 --
+-- !array_repeat2 --
 [123, 123]
 
--- !array_repeat1 --
+-- !array_repeat3 --
 [NULL, NULL]
 
--- !array_repeat1 --
+-- !array_repeat4 --
 []
 
diff --git 
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_with_scale_type.out
 
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_with_scale_type.out
index 70feafa910b..c643331e2a4 100644
--- 
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_with_scale_type.out
+++ 
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_with_scale_type.out
@@ -111,16 +111,16 @@
 \N
 
 -- !select --
-[2022-12-02 22:23:24.999, 2022-12-02 22:23:23.997]
-[2022-12-02 22:23:24.999, 2022-12-02 22:23:23.997]
+[2022-12-02 22:23:24.123, 2022-12-02 22:23:23.123]
+[2022-12-02 22:23:24.123, 2022-12-02 22:23:23.123]
 
 -- !select --
 [2022-12-01 22:23:25.000, 2022-12-01 23:23:25.000]
 [2022-12-02 22:23:25.000, 2022-12-02 23:23:25.000]
 
 -- !select --
-[2022-12-01 22:23:25.000, 2022-12-01 23:23:25.000, 2022-12-02 22:23:24.999, 
2022-12-02 22:23:23.997]
-[2022-12-02 22:23:25.000, 2022-12-02 23:23:25.000, 2022-12-02 22:23:24.999, 
2022-12-02 22:23:23.997]
+[2022-12-01 22:23:25.000, 2022-12-01 23:23:25.000, 2022-12-02 22:23:24.123, 
2022-12-02 22:23:23.123]
+[2022-12-02 22:23:25.000, 2022-12-02 23:23:25.000, 2022-12-02 22:23:24.123, 
2022-12-02 22:23:23.123]
 
 -- !select --
 [22.679, 33.679, 22.679, 33.679, 22.679, 33.679]
@@ -131,24 +131,24 @@
 [{23.679, 23.679, 2022-12-02 22:23:25.000, 23.679}, {34.679, 34.679, 
2022-12-02 23:23:25.000, 34.679}]
 
 -- !select --
-[{2022-12-02 22:23:24.999}, {2022-12-02 22:23:23.997}]
-[{2022-12-02 22:23:24.999}, {2022-12-02 22:23:23.997}]
+[{2022-12-02 22:23:24.123}, {2022-12-02 22:23:23.123}]
+[{2022-12-02 22:23:24.123}, {2022-12-02 22:23:23.123}]
 
 -- !select --
 [{2022-12-01 22:23:25.000}, {2022-12-01 23:23:25.000}]
 [{2022-12-02 22:23:25.000}, {2022-12-02 23:23:25.000}]
 
 -- !select --
-[{2022-12-01 22:23:25.000, 2022-12-02 22:23:24.999}, {2022-12-01 23:23:25.000, 
2022-12-02 22:23:23.997}]
-[{2022-12-02 22:23:25.000, 2022-12-02 22:23:24.999}, {2022-12-02 23:23:25.000, 
2022-12-02 22:23:23.997}]
+[{2022-12-01 22:23:25.000, 2022-12-02 22:23:24.123}, {2022-12-01 23:23:25.000, 
2022-12-02 22:23:23.123}]
+[{2022-12-02 22:23:25.000, 2022-12-02 22:23:24.123}, {2022-12-02 23:23:25.000, 
2022-12-02 22:23:23.123}]
 
 -- !select --
-[2022-12-02 22:23:23.997, 2022-12-02 22:23:24.999]
-[2022-12-02 22:23:23.997, 2022-12-02 22:23:24.999]
+[2022-12-02 22:23:23.123, 2022-12-02 22:23:24.123]
+[2022-12-02 22:23:23.123, 2022-12-02 22:23:24.123]
 
 -- !select --
-[2023-03-08 23:23:23.997, 2022-12-01 22:23:25.000, 2022-12-01 23:23:25.000]
-[2023-03-08 23:23:23.997, 2022-12-02 22:23:25.000, 2022-12-02 23:23:25.000]
+[2023-03-08 23:23:23.123, 2022-12-01 22:23:25.000, 2022-12-01 23:23:25.000]
+[2023-03-08 23:23:23.123, 2022-12-02 22:23:25.000, 2022-12-02 23:23:25.000]
 
 -- !select --
 2022-12-01T22:23:25    [2022-12-01 22:23:25.000, 2022-12-01 23:23:25.000]      
[2022-12-01 22:23:25.000, 2022-12-01 22:23:25.000, 2022-12-01 23:23:25.000]
@@ -163,12 +163,12 @@
 23.679 [23.679, 34.679]        [23.679, 23.679, 34.679]
 
 -- !select --
-[2022-12-02 22:23:24.999, 2022-12-02 22:23:23.997]
-[2022-12-02 22:23:24.999, 2022-12-02 22:23:23.997]
+[2022-12-02 22:23:24.123, 2022-12-02 22:23:23.123]
+[2022-12-02 22:23:24.123, 2022-12-02 22:23:23.123]
 
 -- !select --
-[2022-12-01 22:23:25.000, 2022-12-01 23:23:25.000, 2023-03-08 23:23:23.997]
-[2022-12-02 22:23:25.000, 2022-12-02 23:23:25.000, 2023-03-08 23:23:23.997]
+[2022-12-01 22:23:25.000, 2022-12-01 23:23:25.000, 2023-03-08 23:23:23.123]
+[2022-12-02 22:23:25.000, 2022-12-02 23:23:25.000, 2023-03-08 23:23:23.123]
 
 -- !select --
 2022-12-01T22:23:25    [2022-12-01 22:23:25.000, 2022-12-01 23:23:25.000]      
[2022-12-01 22:23:25.000, 2022-12-01 23:23:25.000, 2022-12-01 22:23:25.000]
diff --git 
a/regression-test/suites/nereids_function_p0/scalar_function/Array.groovy 
b/regression-test/suites/nereids_function_p0/scalar_function/Array.groovy
index 3ea27c11c12..42b5cf8525c 100644
--- a/regression-test/suites/nereids_function_p0/scalar_function/Array.groovy
+++ b/regression-test/suites/nereids_function_p0/scalar_function/Array.groovy
@@ -71,6 +71,39 @@ suite("nereids_scalar_fn_Array") {
     order_qt_sql_array_compact_DateV2 "select array_compact(kadtv2) from 
fn_test"
     order_qt_sql_array_compact_DateV2_notnull "select array_compact(kadtv2) 
from fn_test_not_nullable"
 
+    // array_concat
+    order_qt_sql_array_concat_Double "select array_concat(kadbl, kadbl) from 
fn_test"
+    order_qt_sql_array_concat_Double_notnull "select array_concat(kadbl, 
kadbl) from fn_test_not_nullable"
+    order_qt_sql_array_concat_Float "select array_concat(kafloat, kafloat) 
from fn_test"
+    order_qt_sql_array_concat_Float_notnull "select array_concat(kafloat, 
kafloat) from fn_test_not_nullable"
+    order_qt_sql_array_concat_LargeInt "select array_concat(kalint, kalint) 
from fn_test"
+    order_qt_sql_array_concat_LargeInt_notnull "select array_concat(kalint, 
kalint) from fn_test_not_nullable"
+    order_qt_sql_array_concat_BigInt "select array_concat(kabint, kabint) from 
fn_test"
+    order_qt_sql_array_concat_BigInt_notnull "select array_concat(kabint, 
kabint) from fn_test_not_nullable"
+    order_qt_sql_array_concat_SmallInt "select array_concat(kasint, kasint) 
from fn_test"
+    order_qt_sql_array_concat_SmallInt_notnull "select array_concat(kasint, 
kasint) from fn_test_not_nullable"
+    order_qt_sql_array_concat_Integer "select array_concat(kaint, kaint) from 
fn_test"
+    order_qt_sql_array_concat_Integer_notnull "select array_concat(kaint, 
kaint) from fn_test_not_nullable"
+    order_qt_sql_array_concat_TinyInt "select array_concat(katint, katint) 
from fn_test"
+    order_qt_sql_array_concat_TinyInt_notnull "select array_concat(katint, 
katint) from fn_test_not_nullable"
+    order_qt_sql_array_concat_DecimalV3 "select array_concat(kadcml, kadcml) 
from fn_test"
+    order_qt_sql_array_concat_DecimalV3_notnull "select array_concat(kadcml, 
kadcml) from fn_test_not_nullable"
+
+    order_qt_sql_array_concat_Boolean "select array_concat(kabool, kabool) 
from fn_test"
+    order_qt_sql_array_concat_Boolean_notnull "select array_concat(kabool, 
kabool) from fn_test_not_nullable"
+
+    order_qt_sql_array_concat_Char "select array_concat(kachr, kachr) from 
fn_test"
+    order_qt_sql_array_concat_Char_notnull "select array_concat(kachr, kachr) 
from fn_test_not_nullable"
+    order_qt_sql_array_concat_Varchar "select array_concat(kavchr, kavchr) 
from fn_test"
+    order_qt_sql_array_concat_Varchar_notnull "select array_concat(kavchr, 
kavchr) from fn_test_not_nullable"
+    order_qt_sql_array_concat_String "select array_concat(kastr, kastr) from 
fn_test"
+    order_qt_sql_array_concat_String_notnull "select array_concat(kastr, 
kastr) from fn_test_not_nullable"
+
+    order_qt_sql_array_concat_DatetimeV2 "select array_concat(kadtmv2, 
kadtmv2) from fn_test"
+    order_qt_sql_array_concat_DatetimeV2_notnull "select array_concat(kadtmv2, 
kadtmv2) from fn_test_not_nullable"
+    order_qt_sql_array_concat_DateV2 "select array_concat(kadtv2, kadtv2) from 
fn_test"
+    order_qt_sql_array_concat_DateV2_notnull "select array_concat(kadtv2, 
kadtv2) from fn_test_not_nullable"
+
     // array_difference
     order_qt_sql_array_difference_Double "select array_difference(kadbl) from 
fn_test"
     order_qt_sql_array_difference_Double_notnull "select 
array_difference(kadbl) from fn_test_not_nullable"
@@ -517,6 +550,72 @@ suite("nereids_scalar_fn_Array") {
     order_qt_sql_array_product_DecimalV3 "select array_product(kadcml) from 
fn_test"
     order_qt_sql_array_product_DecimalV3_notnull "select array_product(kadcml) 
from fn_test_not_nullable"
 
+    // array_pushback
+    order_qt_sql_array_pushback_Double "select array_pushback(kadbl, kdbl) 
from fn_test"
+    order_qt_sql_array_pushback_Double_notnull "select array_pushback(kadbl, 
kdbl) from fn_test_not_nullable"
+    order_qt_sql_array_pushback_Float "select array_pushback(kafloat, kfloat) 
from fn_test"
+    order_qt_sql_array_pushback_Float_notnull "select array_pushback(kafloat, 
kfloat) from fn_test_not_nullable"
+    order_qt_sql_array_pushback_LargeInt "select array_pushback(kalint, klint) 
from fn_test"
+    order_qt_sql_array_pushback_LargeInt_notnull "select 
array_pushback(kalint, klint) from fn_test_not_nullable"
+    order_qt_sql_array_pushback_BigInt "select array_pushback(kabint, kbint) 
from fn_test"
+    order_qt_sql_array_pushback_BigInt_notnull "select array_pushback(kabint, 
kbint) from fn_test_not_nullable"
+    order_qt_sql_array_pushback_SmallInt "select array_pushback(kasint, ksint) 
from fn_test"
+    order_qt_sql_array_pushback_SmallInt_notnull "select 
array_pushback(kasint, ksint) from fn_test_not_nullable"
+    order_qt_sql_array_pushback_Integer "select array_pushback(kaint, kint) 
from fn_test"
+    order_qt_sql_array_pushback_Integer_notnull "select array_pushback(kaint, 
kint) from fn_test_not_nullable"
+    order_qt_sql_array_pushback_TinyInt "select array_pushback(katint, ktint) 
from fn_test"
+    order_qt_sql_array_pushback_TinyInt_notnull "select array_pushback(katint, 
ktint) from fn_test_not_nullable"
+    order_qt_sql_array_pushback_DecimalV3 "select array_pushback(kadcml, 
kdcmls1) from fn_test"
+    order_qt_sql_array_pushback_DecimalV3_notnull "select 
array_pushback(kadcml, kdcmls1) from fn_test_not_nullable"
+
+    order_qt_sql_array_pushback_Boolean "select array_pushback(kabool, kbool) 
from fn_test"
+    order_qt_sql_array_pushback_Boolean_notnull "select array_pushback(kabool, 
kbool) from fn_test_not_nullable"
+
+    order_qt_sql_array_pushback_Char "select array_pushback(kachr, kchrs1) 
from fn_test"
+    order_qt_sql_array_pushback_Char_notnull "select array_pushback(kachr, 
kchrs1) from fn_test_not_nullable"
+    order_qt_sql_array_pushback_Varchar "select array_pushback(kavchr, 
kvchrs1) from fn_test"
+    order_qt_sql_array_pushback_Varchar_notnull "select array_pushback(kavchr, 
kvchrs1) from fn_test_not_nullable"
+    order_qt_sql_array_pushback_String "select array_pushback(kastr, kstr) 
from fn_test"
+    order_qt_sql_array_pushback_String_notnull "select array_pushback(kastr, 
kstr) from fn_test_not_nullable"
+
+    order_qt_sql_array_pushback_DatetimeV2 "select array_pushback(kadtmv2, 
kdtmv2s1) from fn_test"
+    order_qt_sql_array_pushback_DatetimeV2_notnull "select 
array_pushback(kadtmv2, kdtmv2s1) from fn_test_not_nullable"
+    order_qt_sql_array_pushback_DateV2 "select array_pushback(kadtv2, kdtv2) 
from fn_test"
+    order_qt_sql_array_pushback_DateV2_notnull "select array_pushback(kadtv2, 
kdtv2) from fn_test_not_nullable"
+
+    // array_pushfront
+    order_qt_sql_array_pushfront_Double "select array_pushfront(kadbl, kdbl) 
from fn_test"
+    order_qt_sql_array_pushfront_Double_notnull "select array_pushfront(kadbl, 
kdbl) from fn_test_not_nullable"
+    order_qt_sql_array_pushfront_Float "select array_pushfront(kafloat, 
kfloat) from fn_test"
+    order_qt_sql_array_pushfront_Float_notnull "select 
array_pushfront(kafloat, kfloat) from fn_test_not_nullable"
+    order_qt_sql_array_pushfront_LargeInt "select array_pushfront(kalint, 
klint) from fn_test"
+    order_qt_sql_array_pushfront_LargeInt_notnull "select 
array_pushfront(kalint, klint) from fn_test_not_nullable"
+    order_qt_sql_array_pushfront_BigInt "select array_pushfront(kabint, kbint) 
from fn_test"
+    order_qt_sql_array_pushfront_BigInt_notnull "select 
array_pushfront(kabint, kbint) from fn_test_not_nullable"
+    order_qt_sql_array_pushfront_SmallInt "select array_pushfront(kasint, 
ksint) from fn_test"
+    order_qt_sql_array_pushfront_SmallInt_notnull "select 
array_pushfront(kasint, ksint) from fn_test_not_nullable"
+    order_qt_sql_array_pushfront_Integer "select array_pushfront(kaint, kint) 
from fn_test"
+    order_qt_sql_array_pushfront_Integer_notnull "select 
array_pushfront(kaint, kint) from fn_test_not_nullable"
+    order_qt_sql_array_pushfront_TinyInt "select array_pushfront(katint, 
ktint) from fn_test"
+    order_qt_sql_array_pushfront_TinyInt_notnull "select 
array_pushfront(katint, ktint) from fn_test_not_nullable"
+    order_qt_sql_array_pushfront_DecimalV3 "select array_pushfront(kadcml, 
kdcmls1) from fn_test"
+    order_qt_sql_array_pushfront_DecimalV3_notnull "select 
array_pushfront(kadcml, kdcmls1) from fn_test_not_nullable"
+
+    order_qt_sql_array_pushfront_Boolean "select array_pushfront(kabool, 
kbool) from fn_test"
+    order_qt_sql_array_pushfront_Boolean_notnull "select 
array_pushfront(kabool, kbool) from fn_test_not_nullable"
+
+    order_qt_sql_array_pushfront_Char "select array_pushfront(kachr, kchrs1) 
from fn_test"
+    order_qt_sql_array_pushfront_Char_notnull "select array_pushfront(kachr, 
kchrs1) from fn_test_not_nullable"
+    order_qt_sql_array_pushfront_Varchar "select array_pushfront(kavchr, 
kvchrs1) from fn_test"
+    order_qt_sql_array_pushfront_Varchar_notnull "select 
array_pushfront(kavchr, kvchrs1) from fn_test_not_nullable"
+    order_qt_sql_array_pushfront_String "select array_pushfront(kastr, kstr) 
from fn_test"
+    order_qt_sql_array_pushfront_String_notnull "select array_pushfront(kastr, 
kstr) from fn_test_not_nullable"
+
+    order_qt_sql_array_pushfront_DatetimeV2 "select array_pushfront(kadtmv2, 
kdtmv2s1) from fn_test"
+    order_qt_sql_array_pushfront_DatetimeV2_notnull "select 
array_pushfront(kadtmv2, kdtmv2s1) from fn_test_not_nullable"
+    order_qt_sql_array_pushfront_DateV2 "select array_pushfront(kadtv2, kdtv2) 
from fn_test"
+    order_qt_sql_array_pushfront_DateV2_notnull "select 
array_pushfront(kadtv2, kdtv2) from fn_test_not_nullable"
+
     // array_range
     order_qt_sql_array_range_one_param "select array_range(kint) from fn_test"
     order_qt_sql_array_range_one_param_notnull "select array_range(kint) from 
fn_test_not_nullable"
@@ -1154,8 +1253,11 @@ suite("nereids_scalar_fn_Array") {
 
     // array_repeat
     qt_array_repeat1 """select array_repeat("hello", 2)"""
-    qt_array_repeat1 """select array_repeat(123, 2)"""
-    qt_array_repeat1 """select array_repeat(null, 2)"""
-    qt_array_repeat1 """select array_repeat(3, null)"""
+    qt_array_repeat2 """select array_repeat(123, 2)"""
+    qt_array_repeat3 """select array_repeat(null, 2)"""
+    qt_array_repeat4 """select array_repeat(3, null)"""
+
+    // array_zip
+    sql "select array_zip([1], ['1'], [1.0])"
 
 }
\ No newline at end of file
diff --git 
a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_with_scale_type.groovy
 
b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_with_scale_type.groovy
index 53a37100f0e..6cd4312b14e 100644
--- 
a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_with_scale_type.groovy
+++ 
b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_with_scale_type.groovy
@@ -78,24 +78,24 @@ suite("test_array_with_scale_type") {
         qt_select """select array_apply(c_array_decimal, ">=", 22.1) from 
${tableName}"""
         qt_select """select array_apply(c_array_decimal, ">=", null) from 
${tableName}"""
 
-        qt_select """select array_concat(array(cast ('2022-12-02 
22:23:24.999999' as datetimev2(3)),cast ('2022-12-02 22:23:23.997799' as 
datetimev2(3)))) from ${tableName}"""
+        qt_select """select array_concat(array(cast ('2022-12-02 
22:23:24.123123' as datetimev2(3)),cast ('2022-12-02 22:23:23.123123' as 
datetimev2(3)))) from ${tableName}"""
         qt_select """select array_concat(c_array_datetimev2) from 
${tableName}"""
-        qt_select """select array_concat(c_array_datetimev2, array(cast 
('2022-12-02 22:23:24.999999' as datetimev2(3)),cast ('2022-12-02 
22:23:23.997799' as datetimev2(3)))) from ${tableName}"""
+        qt_select """select array_concat(c_array_datetimev2, array(cast 
('2022-12-02 22:23:24.123123' as datetimev2(3)),cast ('2022-12-02 
22:23:23.123123' as datetimev2(3)))) from ${tableName}"""
         qt_select """select array_concat(c_array_decimal, c_array_decimal, 
c_array_decimal) from ${tableName}"""
         qt_select """select array_zip(c_array_decimal, c_array_decimal, 
c_array_datetimev2, c_array_decimal) from ${tableName}"""
 
-        qt_select """select array_zip(array(cast ('2022-12-02 22:23:24.999999' 
as datetimev2(3)),cast ('2022-12-02 22:23:23.997799' as datetimev2(3)))) from 
${tableName}"""
+        qt_select """select array_zip(array(cast ('2022-12-02 22:23:24.123123' 
as datetimev2(3)),cast ('2022-12-02 22:23:23.123123' as datetimev2(3)))) from 
${tableName}"""
         qt_select """select array_zip(c_array_datetimev2) from ${tableName}"""
-        qt_select """select array_zip(c_array_datetimev2, array(cast 
('2022-12-02 22:23:24.999999' as datetimev2(3)),cast ('2022-12-02 
22:23:23.997799' as datetimev2(3)))) from ${tableName}"""
+        qt_select """select array_zip(c_array_datetimev2, array(cast 
('2022-12-02 22:23:24.123123' as datetimev2(3)),cast ('2022-12-02 
22:23:23.123123' as datetimev2(3)))) from ${tableName}"""
 
-        qt_select "select array_pushfront(array(cast ('2022-12-02 
22:23:24.999999' as datetimev2(3))),cast ('2022-12-02 22:23:23.997799' as 
datetimev2(3))) from ${tableName}"
-        qt_select "select array_pushfront(c_array_datetimev2, cast 
('2023-03-08 23:23:23.997799' as datetimev2(3))) from ${tableName}"
+        qt_select "select array_pushfront(array(cast ('2022-12-02 
22:23:24.123123' as datetimev2(3))),cast ('2022-12-02 22:23:23.123123' as 
datetimev2(3))) from ${tableName}"
+        qt_select "select array_pushfront(c_array_datetimev2, cast 
('2023-03-08 23:23:23.123123' as datetimev2(3))) from ${tableName}"
         qt_select "select c_datetimev2, c_array_datetimev2, 
array_pushfront(c_array_datetimev2, c_datetimev2) from ${tableName}"
         qt_select "select array_pushfront(c_array_decimal, cast (25.99 as 
decimalv3(10,3))) from ${tableName}"
         qt_select "select c_decimal, c_array_decimal, 
array_pushfront(c_array_decimal, c_decimal) from ${tableName}"
 
-        qt_select "select array_pushback(array(cast ('2022-12-02 
22:23:24.999999' as datetimev2(3))),cast ('2022-12-02 22:23:23.997799' as 
datetimev2(3))) from ${tableName}"
-        qt_select "select array_pushback(c_array_datetimev2, cast ('2023-03-08 
23:23:23.997799' as datetimev2(3))) from ${tableName}"
+        qt_select "select array_pushback(array(cast ('2022-12-02 
22:23:24.123123' as datetimev2(3))),cast ('2022-12-02 22:23:23.123123' as 
datetimev2(3))) from ${tableName}"
+        qt_select "select array_pushback(c_array_datetimev2, cast ('2023-03-08 
23:23:23.123123' as datetimev2(3))) from ${tableName}"
         qt_select "select c_datetimev2, c_array_datetimev2, 
array_pushback(c_array_datetimev2, c_datetimev2) from ${tableName}"
         qt_select "select array_pushback(c_array_decimal, cast (25.99 as 
decimalv3(10,3))) from ${tableName}"
         qt_select "select c_decimal, c_array_decimal, 
array_pushback(c_array_decimal, c_decimal) from ${tableName}"


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

Reply via email to