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

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


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 8b35b0e4774 branch-2.1: [fix](function) fixed some nested type func's 
param type which is not suitable and make result wrong #44923 (#45798)
8b35b0e4774 is described below

commit 8b35b0e4774697d2a6b2047dec3cb47d7524ba4e
Author: amory <[email protected]>
AuthorDate: Tue Dec 24 14:57:33 2024 +0800

    branch-2.1: [fix](function) fixed some nested type func's param type which 
is not suitable and make result wrong #44923 (#45798)
    
    Cherry-picked from #44923
---
 .../expressions/functions/scalar/ArrayApply.java   | 16 ++++++++--
 .../functions/scalar/ArrayContains.java            | 15 ++++++++--
 .../functions/scalar/ArrayPosition.java            | 16 ++++++++--
 .../functions/scalar/ArrayPushBack.java            | 16 ++++++++--
 .../functions/scalar/ArrayPushFront.java           | 16 ++++++++--
 .../expressions/functions/scalar/ArrayRemove.java  | 16 ++++++++--
 .../expressions/functions/scalar/CountEqual.java   | 19 ++++++++++--
 .../functions/scalar/MapContainsKey.java           | 17 +++++++++--
 .../functions/scalar/MapContainsValue.java         | 17 +++++++++--
 .../org/apache/doris/nereids/types/DataType.java   | 35 ++++++++++++++++++++++
 .../nereids_function_p0/scalar_function/Array.out  | 27 +++++++++++++++++
 .../scalar_function/Array.groovy                   | 16 ++++++++++
 12 files changed, 208 insertions(+), 18 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java
index 07e4c16d776..55e5fe3b1d2 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java
@@ -41,11 +41,16 @@ import java.util.List;
  */
 public class ArrayApply extends ScalarFunction
         implements BinaryExpression, ExplicitlyCastableSignature, 
PropagateNullable {
-    public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+    public static final List<FunctionSignature> FOLLOW_DATATYPE_SIGNATURE = 
ImmutableList.of(
             FunctionSignature.retArgType(0)
                     .args(ArrayType.of(new AnyDataType(0)), 
VarcharType.SYSTEM_DEFAULT,
                             new FollowToAnyDataType(0)));
 
+    public static final List<FunctionSignature> MIN_COMMON_TYPE_SIGNATURES = 
ImmutableList.of(
+            FunctionSignature.retArgType(0)
+                    .args(ArrayType.of(new AnyDataType(0)), 
VarcharType.SYSTEM_DEFAULT,
+                            new AnyDataType(0)));
+
     /**
      * constructor
      */
@@ -93,6 +98,13 @@ public class ArrayApply extends ScalarFunction
 
     @Override
     public List<FunctionSignature> getSignatures() {
-        return SIGNATURES;
+        if (getArgument(0).getDataType().isArrayType()
+                &&
+                ((ArrayType) getArgument(0).getDataType()).getItemType()
+                        
.isSameTypeForComplexTypeParam(getArgument(2).getDataType())) {
+            // return least common type
+            return MIN_COMMON_TYPE_SIGNATURES;
+        }
+        return FOLLOW_DATATYPE_SIGNATURE;
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java
index 494a4a863c5..4eee7066584 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java
@@ -38,10 +38,14 @@ import java.util.List;
 public class ArrayContains extends ScalarFunction
         implements BinaryExpression, ExplicitlyCastableSignature {
 
-    public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+    public static final List<FunctionSignature> FOLLOW_DATATYPE_SIGNATURE = 
ImmutableList.of(
             FunctionSignature.ret(BooleanType.INSTANCE)
                     .args(ArrayType.of(new AnyDataType(0)), new 
FollowToAnyDataType(0))
     );
+    public static final List<FunctionSignature> MIN_COMMON_TYPE_SIGNATURES = 
ImmutableList.of(
+            FunctionSignature.ret(BooleanType.INSTANCE)
+                    .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0))
+    );
 
     /**
      * constructor with 2 arguments.
@@ -71,6 +75,13 @@ public class ArrayContains extends ScalarFunction
 
     @Override
     public List<FunctionSignature> getSignatures() {
-        return SIGNATURES;
+        if (getArgument(0).getDataType().isArrayType()
+                &&
+                ((ArrayType) getArgument(0).getDataType()).getItemType()
+                        
.isSameTypeForComplexTypeParam(getArgument(1).getDataType())) {
+            // return least common type
+            return MIN_COMMON_TYPE_SIGNATURES;
+        }
+        return FOLLOW_DATATYPE_SIGNATURE;
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java
index 3a94e84d511..b782a560719 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java
@@ -38,11 +38,16 @@ import java.util.List;
 public class ArrayPosition extends ScalarFunction
         implements BinaryExpression, ExplicitlyCastableSignature {
 
-    public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+    public static final List<FunctionSignature> FOLLOW_DATATYPE_SIGNATURE = 
ImmutableList.of(
             FunctionSignature.ret(BigIntType.INSTANCE)
                     .args(ArrayType.of(new AnyDataType(0)), new 
FollowToAnyDataType(0))
     );
 
+    public static final List<FunctionSignature> MIN_COMMON_TYPE_SIGNATURES = 
ImmutableList.of(
+            FunctionSignature.ret(BigIntType.INSTANCE)
+                    .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0))
+    );
+
     /**
      * constructor with 2 arguments.
      */
@@ -71,6 +76,13 @@ public class ArrayPosition extends ScalarFunction
 
     @Override
     public List<FunctionSignature> getSignatures() {
-        return SIGNATURES;
+        if (getArgument(0).getDataType().isArrayType()
+                &&
+                ((ArrayType) getArgument(0).getDataType()).getItemType()
+                        
.isSameTypeForComplexTypeParam(getArgument(1).getDataType())) {
+            // return least common type
+            return MIN_COMMON_TYPE_SIGNATURES;
+        }
+        return FOLLOW_DATATYPE_SIGNATURE;
     }
 }
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
index 932c2446132..a96c48c4b27 100644
--- 
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
@@ -38,11 +38,16 @@ import java.util.List;
 public class ArrayPushBack extends ScalarFunction
         implements UnaryExpression, ExplicitlyCastableSignature, 
AlwaysNullable {
 
-    public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+    public static final List<FunctionSignature> FOLLOW_DATATYPE_SIGNATURE = 
ImmutableList.of(
             FunctionSignature.retArgType(0)
                     .args(ArrayType.of(new AnyDataType(0)), new 
FollowToAnyDataType(0))
     );
 
+    public static final List<FunctionSignature> MIN_COMMON_TYPE_SIGNATURES = 
ImmutableList.of(
+            FunctionSignature.retArgType(0)
+                    .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0))
+    );
+
     /**
      * constructor with 1 argument.
      */
@@ -66,6 +71,13 @@ public class ArrayPushBack extends ScalarFunction
 
     @Override
     public List<FunctionSignature> getSignatures() {
-        return SIGNATURES;
+        if (getArgument(0).getDataType().isArrayType()
+                &&
+                ((ArrayType) getArgument(0).getDataType()).getItemType()
+                        
.isSameTypeForComplexTypeParam(getArgument(1).getDataType())) {
+            // return least common type
+            return MIN_COMMON_TYPE_SIGNATURES;
+        }
+        return FOLLOW_DATATYPE_SIGNATURE;
     }
 }
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
index 26e1cdd91e3..e20fea5cc20 100644
--- 
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
@@ -38,11 +38,16 @@ import java.util.List;
 public class ArrayPushFront extends ScalarFunction
         implements UnaryExpression, ExplicitlyCastableSignature, 
AlwaysNullable {
 
-    public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+    public static final List<FunctionSignature> FOLLOW_DATATYPE_SIGNATURE = 
ImmutableList.of(
             FunctionSignature.retArgType(0)
                     .args(ArrayType.of(new AnyDataType(0)), new 
FollowToAnyDataType(0))
     );
 
+    public static final List<FunctionSignature> MIN_COMMON_TYPE_SIGNATURES = 
ImmutableList.of(
+            FunctionSignature.retArgType(0)
+                    .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0))
+    );
+
     /**
      * constructor with 1 argument.
      */
@@ -66,6 +71,13 @@ public class ArrayPushFront extends ScalarFunction
 
     @Override
     public List<FunctionSignature> getSignatures() {
-        return SIGNATURES;
+        if (getArgument(0).getDataType().isArrayType()
+                &&
+                ((ArrayType) getArgument(0).getDataType()).getItemType()
+                        
.isSameTypeForComplexTypeParam(getArgument(1).getDataType())) {
+            // return least common type
+            return MIN_COMMON_TYPE_SIGNATURES;
+        }
+        return FOLLOW_DATATYPE_SIGNATURE;
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java
index acf731b8bb4..f5996776867 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java
@@ -38,11 +38,16 @@ import java.util.List;
 public class ArrayRemove extends ScalarFunction
         implements BinaryExpression, ExplicitlyCastableSignature, 
PropagateNullable {
 
-    public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+    public static final List<FunctionSignature> FOLLOW_DATATYPE_SIGNATURE = 
ImmutableList.of(
             FunctionSignature.retArgType(0).args(
                     ArrayType.of(new AnyDataType(0)), new 
FollowToAnyDataType(0))
     );
 
+    public static final List<FunctionSignature> MIN_COMMON_TYPE_SIGNATURES = 
ImmutableList.of(
+            FunctionSignature.retArgType(0).args(
+                    ArrayType.of(new AnyDataType(0)), new AnyDataType(0))
+    );
+
     /**
      * constructor with 2 arguments.
      */
@@ -66,6 +71,13 @@ public class ArrayRemove extends ScalarFunction
 
     @Override
     public List<FunctionSignature> getSignatures() {
-        return SIGNATURES;
+        if (getArgument(0).getDataType().isArrayType()
+                &&
+                ((ArrayType) getArgument(0).getDataType()).getItemType()
+                        
.isSameTypeForComplexTypeParam(getArgument(1).getDataType())) {
+            // return least common type
+            return MIN_COMMON_TYPE_SIGNATURES;
+        }
+        return FOLLOW_DATATYPE_SIGNATURE;
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java
index 2ba0c907243..bb76aecde31 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java
@@ -38,11 +38,16 @@ import java.util.List;
 public class CountEqual extends ScalarFunction
         implements BinaryExpression, ExplicitlyCastableSignature {
 
-    public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+    public static final List<FunctionSignature> FOLLOW_DATATYPE_SIGNATURE = 
ImmutableList.of(
             FunctionSignature.ret(BigIntType.INSTANCE)
                     .args(ArrayType.of(new AnyDataType(0)), new 
FollowToAnyDataType(0))
     );
 
+    public static final List<FunctionSignature> MIN_COMMON_TYPE_SIGNATURES = 
ImmutableList.of(
+            FunctionSignature.ret(BigIntType.INSTANCE)
+                    .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0))
+    );
+
     /**
      * constructor with 2 arguments.
      */
@@ -71,6 +76,16 @@ public class CountEqual extends ScalarFunction
 
     @Override
     public List<FunctionSignature> getSignatures() {
-        return SIGNATURES;
+        // to find out element type in array vs param type,
+        // if they are different, return first array element type,
+        // else return least common type between element type and param
+        if (getArgument(0).getDataType().isArrayType()
+                &&
+                ((ArrayType) getArgument(0).getDataType()).getItemType()
+                        
.isSameTypeForComplexTypeParam(getArgument(1).getDataType())) {
+            // return least common type
+            return MIN_COMMON_TYPE_SIGNATURES;
+        }
+        return FOLLOW_DATATYPE_SIGNATURE;
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java
index b489bd47963..798101e1a2b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java
@@ -38,12 +38,18 @@ import java.util.List;
 public class MapContainsKey extends ScalarFunction
         implements BinaryExpression, ExplicitlyCastableSignature {
 
-    public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+    public static final List<FunctionSignature> FOLLOW_DATATYPE_SIGNATURE = 
ImmutableList.of(
             FunctionSignature.ret(BooleanType.INSTANCE)
                     .args(MapType.of(new AnyDataType(0), 
AnyDataType.INSTANCE_WITHOUT_INDEX),
                             new FollowToAnyDataType(0))
     );
 
+    public static final List<FunctionSignature> MIN_COMMON_TYPE_SIGNATURES = 
ImmutableList.of(
+            FunctionSignature.ret(BooleanType.INSTANCE)
+                    .args(MapType.of(new AnyDataType(0), 
AnyDataType.INSTANCE_WITHOUT_INDEX),
+                            new AnyDataType(0))
+    );
+
     /**
      * constructor with 2 arguments.
      */
@@ -72,6 +78,13 @@ public class MapContainsKey extends ScalarFunction
 
     @Override
     public List<FunctionSignature> getSignatures() {
-        return SIGNATURES;
+        if (getArgument(0).getDataType().isMapType()
+                &&
+                ((MapType) getArgument(0).getDataType()).getKeyType()
+                        
.isSameTypeForComplexTypeParam(getArgument(1).getDataType())) {
+            // return least common type
+            return MIN_COMMON_TYPE_SIGNATURES;
+        }
+        return FOLLOW_DATATYPE_SIGNATURE;
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java
index de77386c889..0a8bcdc49c5 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java
@@ -38,12 +38,18 @@ import java.util.List;
 public class MapContainsValue extends ScalarFunction
         implements BinaryExpression, ExplicitlyCastableSignature {
 
-    public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+    public static final List<FunctionSignature> FOLLOW_DATATYPE_SIGNATURE = 
ImmutableList.of(
             FunctionSignature.ret(BooleanType.INSTANCE)
                     .args(MapType.of(AnyDataType.INSTANCE_WITHOUT_INDEX, new 
AnyDataType(0)),
                             new FollowToAnyDataType(0))
     );
 
+    public static final List<FunctionSignature> MIN_COMMON_TYPE_SIGNATURES = 
ImmutableList.of(
+            FunctionSignature.ret(BooleanType.INSTANCE)
+                    .args(MapType.of(AnyDataType.INSTANCE_WITHOUT_INDEX, new 
AnyDataType(0)),
+                            new AnyDataType(0))
+    );
+
     /**
      * constructor with 2 arguments.
      */
@@ -72,6 +78,13 @@ public class MapContainsValue extends ScalarFunction
 
     @Override
     public List<FunctionSignature> getSignatures() {
-        return SIGNATURES;
+        if (getArgument(0).getDataType().isMapType()
+                &&
+                ((MapType) getArgument(0).getDataType()).getValueType()
+                        
.isSameTypeForComplexTypeParam(getArgument(1).getDataType())) {
+            // return least common type
+            return MIN_COMMON_TYPE_SIGNATURES;
+        }
+        return FOLLOW_DATATYPE_SIGNATURE;
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java
index 5631a9cdcb6..29d549681f3 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java
@@ -648,6 +648,41 @@ public abstract class DataType {
         }
     }
 
+    /**
+     * whether the param dataType is same-like type for nested in complex type
+     *  same-like type means: string-like, date-like, number type
+     */
+    public boolean isSameTypeForComplexTypeParam(DataType paramType) {
+        if (this.isArrayType() && paramType.isArrayType()) {
+            return ((ArrayType) this).getItemType()
+                    .isSameTypeForComplexTypeParam(((ArrayType) 
paramType).getItemType());
+        } else if (this.isMapType() && paramType.isMapType()) {
+            MapType thisMapType = (MapType) this;
+            MapType otherMapType = (MapType) paramType;
+            return 
thisMapType.getKeyType().isSameTypeForComplexTypeParam(otherMapType.getKeyType())
+                    && 
thisMapType.getValueType().isSameTypeForComplexTypeParam(otherMapType.getValueType());
+        } else if (this.isStructType() && paramType.isStructType()) {
+            StructType thisStructType = (StructType) this;
+            StructType otherStructType = (StructType) paramType;
+            if (thisStructType.getFields().size() != 
otherStructType.getFields().size()) {
+                return false;
+            }
+            for (int i = 0; i < thisStructType.getFields().size(); i++) {
+                if 
(!thisStructType.getFields().get(i).getDataType().isSameTypeForComplexTypeParam(
+                        otherStructType.getFields().get(i).getDataType())) {
+                    return false;
+                }
+            }
+            return true;
+        } else if (this.isStringLikeType() && paramType.isStringLikeType()) {
+            return true;
+        } else if (this.isDateLikeType() && paramType.isDateLikeType()) {
+            return true;
+        } else {
+            return this.isNumericType() && paramType.isNumericType();
+        }
+    }
+
     /** getAllPromotions */
     public List<DataType> getAllPromotions() {
         if (this instanceof ArrayType) {
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 4e7054255bd..ebabba9b7da 100644
--- a/regression-test/data/nereids_function_p0/scalar_function/Array.out
+++ b/regression-test/data/nereids_function_p0/scalar_function/Array.out
@@ -15579,3 +15579,30 @@ false
 \N
 \N
 
+-- !sql --
+0      0
+
+-- !sql --
+[258]  []
+
+-- !sql --
+false  false
+
+-- !sql --
+[257, 258]     [258, 1, 2, 3]
+
+-- !sql --
+[1, 258, 257]  [1, 2, 3, 258]
+
+-- !sql --
+[1, 258]       [1, 2, 3]
+
+-- !sql --
+0      0
+
+-- !sql --
+false  false
+
+-- !sql --
+false  false
+
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 446dbcc6f74..b2a1d4e68fa 100644
--- a/regression-test/suites/nereids_function_p0/scalar_function/Array.groovy
+++ b/regression-test/suites/nereids_function_p0/scalar_function/Array.groovy
@@ -1375,4 +1375,20 @@ suite("nereids_scalar_fn_Array") {
     order_qt_sql_array_overlaps_5 """select arrays_overlap(b, c) from 
fn_test_array_with_large_decimal order by id"""
     order_qt_sql_array_overlaps_6 """select arrays_overlap(c, b) from 
fn_test_array_with_large_decimal order by id"""
 
+    // tests for nereids array functions for number overflow cases
+    qt_sql """ SELECT array_position([1,258],257),array_position([2],258);"""
+    qt_sql """ select array_apply([258], '>' , 257), array_apply([1,2,3], '>', 
258);"""
+    qt_sql """ select array_contains([258], 257), array_contains([1,2,3], 
258);"""
+    // pushfront and pushback
+    qt_sql """ select array_pushfront([258], 257), array_pushfront([1,2,3], 
258);"""
+    qt_sql """ select array_pushback([1,258], 257), array_pushback([1,2,3], 
258);"""
+    // array_remove
+    qt_sql """ select array_remove([1,258], 257), array_remove([1,2,3], 
258);"""
+    // countequal
+    qt_sql """ select countequal([1,258], 257), countequal([1,2,3], 258);"""
+    // map_contains_key
+    qt_sql """ select map_contains_key(map(1,258), 257), 
map_contains_key(map(2,1), 258);"""
+    // map_contains_value
+    qt_sql """ select map_contains_value(map(1,1), 257), 
map_contains_value(map(1,2), 258);"""
+
 }


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

Reply via email to