This is an automated email from the ASF dual-hosted git repository.
dataroaring 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 3ddc8211d17 [FIX](array )fix array<null> literal in fe (#27750)
3ddc8211d17 is described below
commit 3ddc8211d17149a38d81ebc0d72f6d88614a34ff
Author: amory <[email protected]>
AuthorDate: Sun Dec 3 13:19:22 2023 +0800
[FIX](array )fix array<null> literal in fe (#27750)
---
.../org/apache/doris/analysis/ArrayLiteral.java | 17 +++++++
.../org/apache/doris/analysis/DecimalLiteral.java | 5 ++
.../main/java/org/apache/doris/analysis/Expr.java | 4 ++
.../org/apache/doris/analysis/FloatLiteral.java | 19 ++++++-
.../org/apache/doris/analysis/LiteralExpr.java | 4 ++
.../org/apache/doris/analysis/NullLiteral.java | 5 ++
.../org/apache/doris/nereids/NereidsPlanner.java | 2 +-
.../org/apache/doris/planner/OriginalPlanner.java | 2 +-
.../java/org/apache/doris/planner/Planner.java | 20 --------
.../apache/doris/analysis/ArrayLiteralTest.java | 59 ++++++++++++++++++++++
.../org/apache/doris/analysis/DateLiteralTest.java | 8 +++
.../apache/doris/analysis/DecimalLiteralTest.java | 8 +++
.../apache/doris/analysis/FloatLiteralTest.java | 39 ++++++++++++++
.../test_array_functions_by_literal.out | 2 +-
.../array_functions/test_array_with_scale_type.out | 2 +-
.../conditional_functions/test_if_cast.out | 20 +++++++-
.../suites/nereids_syntax_p0/array_function.groovy | 3 +-
.../conditional_functions/test_if_cast.groovy | 14 +++++
18 files changed, 206 insertions(+), 27 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ArrayLiteral.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ArrayLiteral.java
index 415a4b6067c..7edba5d6093 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ArrayLiteral.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ArrayLiteral.java
@@ -18,6 +18,7 @@
package org.apache.doris.analysis;
import org.apache.doris.catalog.ArrayType;
+import org.apache.doris.catalog.ScalarType;
import org.apache.doris.catalog.Type;
import org.apache.doris.common.AnalysisException;
import org.apache.doris.thrift.TExprNode;
@@ -129,6 +130,22 @@ public class ArrayLiteral extends LiteralExpr {
return "[" + StringUtils.join(list, ", ") + "]";
}
+ @Override
+ public String getStringValueInFe() {
+ List<String> list = new ArrayList<>(children.size());
+ children.forEach(v -> {
+ // we should use type to decide we output array is suitable for
json format
+ if (!(v instanceof NullLiteral) && v.getType().isScalarType()
+ && (Type.getNumericTypes().contains((ScalarType)
v.getActualScalarType(v.getType()))
+ || v.getType() == Type.BOOLEAN)) {
+ list.add(v.getStringValueInFe());
+ } else {
+ list.add(v.getStringValueForArray());
+ }
+ });
+ return "[" + StringUtils.join(list, ", ") + "]";
+ }
+
@Override
protected void toThrift(TExprNode msg) {
msg.node_type = TExprNodeType.ARRAY_LITERAL;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DecimalLiteral.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DecimalLiteral.java
index 0762f3191f5..250bee7e8eb 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DecimalLiteral.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DecimalLiteral.java
@@ -246,6 +246,11 @@ public class DecimalLiteral extends LiteralExpr {
}
}
+ @Override
+ public String getStringValueInFe() {
+ return value.toPlainString();
+ }
+
@Override
public String toSqlImpl() {
return getStringValue();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
index fc4e46d3147..465f96c37de 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
@@ -2224,6 +2224,10 @@ public abstract class Expr extends TreeNode<Expr>
implements ParseNode, Cloneabl
return "";
}
+ public String getStringValueInFe() {
+ return getStringValue();
+ }
+
// A special method only for array literal, all primitive type in array
// will be wrapped by double quote. eg:
// ["1", "2", "3"]
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/FloatLiteral.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/FloatLiteral.java
index c87505b22d2..b95b3860aa5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FloatLiteral.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FloatLiteral.java
@@ -140,9 +140,26 @@ public class FloatLiteral extends LiteralExpr {
return nf.format(value);
}
+ @Override
+ public String getStringValueInFe() {
+ if (type == Type.TIME || type == Type.TIMEV2) {
+ // FloatLiteral used to represent TIME type, here we need to
remove apostrophe from timeStr
+ // for example '11:22:33' -> 11:22:33
+ String timeStr = getStringValue();
+ return timeStr.substring(1, timeStr.length() - 1);
+ } else {
+ return BigDecimal.valueOf(getValue()).toPlainString();
+ }
+ }
+
@Override
public String getStringValueForArray() {
- return "\"" + getStringValue() + "\"";
+ String ret = getStringValue();
+ if (type == Type.TIME || type == Type.TIMEV2) {
+ // here already wrapped in ''
+ ret = ret.substring(1, ret.length() - 1);
+ }
+ return "\"" + ret + "\"";
}
public static Type getDefaultTimeType(Type type) throws AnalysisException {
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/LiteralExpr.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/LiteralExpr.java
index 7047a8d900f..28da8d2d209 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/LiteralExpr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/LiteralExpr.java
@@ -234,6 +234,10 @@ public abstract class LiteralExpr extends Expr implements
Comparable<LiteralExpr
@Override
public abstract String getStringValue();
+ public String getStringValueInFe() {
+ return getStringValue();
+ }
+
@Override
public abstract String getStringValueForArray();
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/NullLiteral.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/NullLiteral.java
index 79e1b247b8a..3428d0a3d93 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/NullLiteral.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/NullLiteral.java
@@ -101,6 +101,11 @@ public class NullLiteral extends LiteralExpr {
return "NULL";
}
+ @Override
+ public String getStringValueInFe() {
+ return null;
+ }
+
// the null value inside an array is represented as "null", for exampe:
// [null, null]. Not same as other primitive type to represent as \N.
@Override
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
index ef016b0f371..f579c2c96dc 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
@@ -465,7 +465,7 @@ public class NereidsPlanner extends Planner {
if (expr instanceof Literal) {
LiteralExpr legacyExpr = ((Literal) expr).toLegacyLiteral();
columns.add(new Column(output.getName(),
output.getDataType().toCatalogDataType()));
- super.handleLiteralInFe(legacyExpr, data);
+ data.add(legacyExpr.getStringValueInFe());
} else {
return Optional.empty();
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/planner/OriginalPlanner.java
b/fe/fe-core/src/main/java/org/apache/doris/planner/OriginalPlanner.java
index 559c9b6d73d..42a2c23285f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/OriginalPlanner.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OriginalPlanner.java
@@ -670,7 +670,7 @@ public class OriginalPlanner extends Planner {
String columnName = columnLabels.get(i);
if (expr instanceof LiteralExpr) {
columns.add(new Column(columnName, expr.getType()));
- super.handleLiteralInFe((LiteralExpr) expr, data);
+ data.add(((LiteralExpr) expr).getStringValueInFe());
} else {
return Optional.empty();
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/Planner.java
b/fe/fe-core/src/main/java/org/apache/doris/planner/Planner.java
index b113d837978..f7899dfd33c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/Planner.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/Planner.java
@@ -17,18 +17,12 @@
package org.apache.doris.planner;
-import org.apache.doris.analysis.ArrayLiteral;
-import org.apache.doris.analysis.DecimalLiteral;
import org.apache.doris.analysis.DescriptorTable;
import org.apache.doris.analysis.ExplainOptions;
-import org.apache.doris.analysis.FloatLiteral;
-import org.apache.doris.analysis.LiteralExpr;
-import org.apache.doris.analysis.NullLiteral;
import org.apache.doris.analysis.StatementBase;
import org.apache.doris.common.UserException;
import org.apache.doris.common.profile.PlanTreeBuilder;
import org.apache.doris.common.profile.PlanTreePrinter;
-import org.apache.doris.common.util.LiteralUtils;
import org.apache.doris.qe.ResultSet;
import org.apache.doris.thrift.TQueryOptions;
@@ -111,20 +105,6 @@ public abstract class Planner {
return planNodeMap;
}
- protected void handleLiteralInFe(LiteralExpr literalExpr, List<String>
data) {
- if (literalExpr instanceof NullLiteral) {
- data.add(null);
- } else if (literalExpr instanceof FloatLiteral) {
- data.add(LiteralUtils.getStringValue((FloatLiteral) literalExpr));
- } else if (literalExpr instanceof DecimalLiteral) {
- data.add(((DecimalLiteral)
literalExpr).getValue().toPlainString());
- } else if (literalExpr instanceof ArrayLiteral) {
- data.add(LiteralUtils.getStringValue((ArrayLiteral) literalExpr));
- } else {
- data.add(literalExpr.getStringValue());
- }
- }
-
public void appendTupleInfo(StringBuilder stringBuilder) {}
public void appendHintInfo(StringBuilder stringBuilder) {}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/ArrayLiteralTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/ArrayLiteralTest.java
index 53b9ede98d0..fb9c6f0e18b 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ArrayLiteralTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ArrayLiteralTest.java
@@ -62,4 +62,63 @@ public class ArrayLiteralTest {
ArrayLiteral arrayLiteral9 = new ArrayLiteral();
Assert.assertEquals("[]", arrayLiteral9.getStringValueForArray());
}
+
+
+ @Test
+ public void testGetStringInFe() throws AnalysisException {
+ IntLiteral intLiteral1 = new IntLiteral(1);
+ FloatLiteral floatLiteral = new FloatLiteral("2.15");
+ FloatLiteral floatLiteral1 = new FloatLiteral((double) (11 * 3600 + 22
* 60 + 33),
+ FloatLiteral.getDefaultTimeType(Type.TIME));
+
+ BoolLiteral boolLiteral = new BoolLiteral(true);
+ StringLiteral stringLiteral = new StringLiteral("shortstring");
+ LargeIntLiteral largeIntLiteral = new
LargeIntLiteral("1000000000000000000000");
+ NullLiteral nullLiteral = new NullLiteral();
+ DateLiteral dateLiteral = new DateLiteral("2022-10-10", Type.DATE);
+ DateLiteral datetimeLiteral = new DateLiteral("2022-10-10 12:10:10",
Type.DATETIME);
+ ArrayLiteral arrayLiteral1 = new ArrayLiteral(intLiteral1,
floatLiteral);
+ Assert.assertEquals("[1.0, 2.15]", arrayLiteral1.getStringValueInFe());
+ ArrayLiteral arrayLiteralWithTime = new ArrayLiteral(floatLiteral1);
+ Assert.assertEquals("[\"11:22:33\"]",
arrayLiteralWithTime.getStringValueInFe());
+
+ ArrayLiteral arrayLiteral2 = new ArrayLiteral(boolLiteral,
boolLiteral);
+ Assert.assertEquals("[1, 1]", arrayLiteral2.getStringValueInFe());
+
+ ArrayLiteral arrayLiteral3 = new ArrayLiteral(stringLiteral,
stringLiteral);
+ Assert.assertEquals("[\"shortstring\", \"shortstring\"]",
arrayLiteral3.getStringValueInFe());
+
+ ArrayLiteral arrayLiteral4 = new ArrayLiteral(largeIntLiteral,
largeIntLiteral);
+ Assert.assertEquals("[1000000000000000000000,
1000000000000000000000]", arrayLiteral4.getStringValueInFe());
+
+ ArrayLiteral arrayLiteral5 = new ArrayLiteral(nullLiteral,
nullLiteral);
+ Assert.assertEquals("[null, null]",
arrayLiteral5.getStringValueInFe());
+
+ ArrayLiteral arrayLiteral6 = new ArrayLiteral(dateLiteral,
dateLiteral);
+ Assert.assertEquals("[\"2022-10-10\", \"2022-10-10\"]",
arrayLiteral6.getStringValueInFe());
+
+ ArrayLiteral arrayLiteral7 = new ArrayLiteral(datetimeLiteral,
datetimeLiteral);
+ Assert.assertEquals("[\"2022-10-10 12:10:10\", \"2022-10-10
12:10:10\"]", arrayLiteral7.getStringValueInFe());
+
+ ArrayLiteral arrayLiteral8 = new ArrayLiteral(arrayLiteral7,
arrayLiteral7);
+ Assert.assertEquals("[[\"2022-10-10 12:10:10\", \"2022-10-10
12:10:10\"], [\"2022-10-10 12:10:10\", \"2022-10-10 12:10:10\"]]",
+ arrayLiteral8.getStringValueInFe());
+
+ ArrayLiteral arrayLiteral9 = new ArrayLiteral();
+ Assert.assertEquals("[]", arrayLiteral9.getStringValueInFe());
+
+ DecimalLiteral decimalLiteral = new DecimalLiteral("1.0");
+ DecimalLiteral decimalLiteral2 = new DecimalLiteral("2");
+ ArrayLiteral arrayLiteral10 = new ArrayLiteral(decimalLiteral,
decimalLiteral2);
+ Assert.assertEquals("[1.0, 2.0]", arrayLiteral10.getStringValueInFe());
+
+ //array(1, null)
+ IntLiteral intLiteralWithNull = new IntLiteral(1);
+ ArrayLiteral arrayLiteral11 = new ArrayLiteral(intLiteralWithNull,
nullLiteral);
+ Assert.assertEquals("[1, null]", arrayLiteral11.getStringValueInFe());
+ //array(null, 1)
+ ArrayLiteral arrayLiteral12 = new ArrayLiteral(nullLiteral,
intLiteralWithNull);
+ Assert.assertEquals("[null, 1]", arrayLiteral12.getStringValueInFe());
+
+ }
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/DateLiteralTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/DateLiteralTest.java
index 9715b7a1826..556c8a52457 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/DateLiteralTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/DateLiteralTest.java
@@ -28,6 +28,14 @@ import org.junit.Test;
public class DateLiteralTest {
+ @Test
+ public void testGetStringInFe() throws AnalysisException {
+ DateLiteral literal = new DateLiteral("1997-10-07", Type.DATE);
+ String s = literal.getStringValueInFe();
+ Assert.assertEquals(s, "1997-10-07");
+
+ }
+
@Test
public void twoDigitYear() {
boolean hasException = false;
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/DecimalLiteralTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/DecimalLiteralTest.java
index 11cccf25bf6..bd7ca08e34a 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/DecimalLiteralTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/DecimalLiteralTest.java
@@ -31,6 +31,14 @@ import java.nio.ByteBuffer;
public class DecimalLiteralTest {
+ @Test
+ public void testGetStringInFe() {
+ BigDecimal decimal = new BigDecimal("-123456789123456789.123456789");
+ DecimalLiteral literal = new DecimalLiteral(decimal);
+ String s = literal.getStringValueInFe();
+ Assert.assertEquals("-123456789123456789.123456789", s);
+ }
+
@Test
public void testHashValue() throws AnalysisException {
BigDecimal decimal = new BigDecimal("-123456789123456789.123456789");
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/FloatLiteralTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/FloatLiteralTest.java
new file mode 100644
index 00000000000..6b7bfedbb59
--- /dev/null
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/FloatLiteralTest.java
@@ -0,0 +1,39 @@
+// 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.analysis;
+
+import org.apache.doris.catalog.Type;
+import org.apache.doris.common.AnalysisException;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+
+public class FloatLiteralTest {
+ @Test
+ public void testGetStringInFe() throws AnalysisException {
+ FloatLiteral literal = new FloatLiteral((double) (11 * 3600 + 22 * 60
+ 33),
+ FloatLiteral.getDefaultTimeType(Type.TIME));
+ String s = literal.getStringValueInFe();
+ Assert.assertEquals("11:22:33", s);
+
+ FloatLiteral literal1 = new FloatLiteral(11.22);
+ String s1 = literal1.getStringValueInFe();
+ Assert.assertEquals("11.22", s1);
+ }
+}
diff --git
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
index 387c0beb960..e90b40f61c4 100644
---
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
+++
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
@@ -801,7 +801,7 @@ _
["a", "1", "2"]
-- !sql --
-[NULL, NULL, NULL]
+[null, null, null]
-- !sql --
[]
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 811aba2040c..a9535841216 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
@@ -84,7 +84,7 @@
["2022-12-02 22:23:25.000", "2022-12-02 22:23:23.998"]
-- !select --
-[2022-12-02 22:23:25, 2022-12-02 22:23:23.998]
+["2022-12-02 22:23:25", "2022-12-02 22:23:23.998"]
-- !select --
[]
diff --git
a/regression-test/data/query_p0/sql_functions/conditional_functions/test_if_cast.out
b/regression-test/data/query_p0/sql_functions/conditional_functions/test_if_cast.out
index 1fb288a7636..255c00df0ee 100644
---
a/regression-test/data/query_p0/sql_functions/conditional_functions/test_if_cast.out
+++
b/regression-test/data/query_p0/sql_functions/conditional_functions/test_if_cast.out
@@ -15,5 +15,23 @@
["1970-01-01"]
-- !select --
-[NULL]
+[null]
+
+-- !select_nereid --
+["1970-01-01", "1970-01-01"]
+
+-- !select_nereid --
+["1970-01-01", "1970-01-01"]
+
+-- !select_nereid --
+["1970-01-01", "1970-01-01"]
+
+-- !select_nereid --
+[]
+
+-- !select_nereid --
+["1970-01-01"]
+
+-- !select_nereid --
+[null]
diff --git a/regression-test/suites/nereids_syntax_p0/array_function.groovy
b/regression-test/suites/nereids_syntax_p0/array_function.groovy
index e05dd92ec9b..fb883c94f25 100644
--- a/regression-test/suites/nereids_syntax_p0/array_function.groovy
+++ b/regression-test/suites/nereids_syntax_p0/array_function.groovy
@@ -25,8 +25,9 @@ suite("array_function") {
qt_4 "SELECT ARRAY_MAP(x->x+1, ARRAY(-82.31, -72.18, 35.59, -67.13))"
qt_5 "SELECT ARRAY_MAP((x,y)->x+y, ARRAY(-37.03, 81.89, 56.38, -36.76),
ARRAY(1.56, -14.58, 42.22, -56.13))"
test {
+ // array nested null show lower
sql "select array(), array(null), array(1), array('abc'), array(null,
1), array(1, null)"
- result([["[]", "[NULL]", "[1]", "[\"abc\"]", "[NULL, 1]", "[1,
NULL]"]])
+ result([["[]", "[null]", "[1]", "[\"abc\"]", "[null, 1]", "[1,
null]"]])
}
test {
diff --git
a/regression-test/suites/query_p0/sql_functions/conditional_functions/test_if_cast.groovy
b/regression-test/suites/query_p0/sql_functions/conditional_functions/test_if_cast.groovy
index 1b000823943..2c6116c094d 100644
---
a/regression-test/suites/query_p0/sql_functions/conditional_functions/test_if_cast.groovy
+++
b/regression-test/suites/query_p0/sql_functions/conditional_functions/test_if_cast.groovy
@@ -16,10 +16,24 @@
// under the License.
suite("test_if_cast") {
+ // test old planner
+ sql "set enable_nereids_planner=false"
qt_select """ select if(job_d is null, cast(array() as
array<varchar(10)>), job_d) as test from (select array('1970-01-01',
'1970-01-01') as job_d) t; """
qt_select """ select if(job_d is null, cast(array(null) as
array<varchar(10)>), job_d) as test from (select array('1970-01-01',
'1970-01-01') as job_d) t; """
qt_select """ select if(job_d is null, cast(array('1970-01-01') as
array<varchar(10)>), job_d) as test from (select array('1970-01-01',
'1970-01-01') as job_d) t; """
qt_select """ select if(job_d is null, job_d, cast(array() as
array<varchar(10)>)) as test from (select array('1970-01-01', '1970-01-01') as
job_d) t; """
qt_select """ select if(job_d is null, job_d, cast(array('1970-01-01') as
array<varchar(10)>)) as test from (select array('1970-01-01', '1970-01-01') as
job_d) t; """
qt_select """ select if(job_d is null, job_d, cast(array(null) as
array<varchar(10)>)) as test from (select array('1970-01-01', '1970-01-01') as
job_d) t; """
+
+ // test new planner
+ sql "set enable_nereids_planner=true"
+ sql "set enable_fallback_to_original_planner = false"
+ qt_select_nereid """ select if(job_d is null, cast(array() as
array<varchar(10)>), job_d) as test from (select array('1970-01-01',
'1970-01-01') as job_d) t; """
+ qt_select_nereid """ select if(job_d is null, cast(array(null) as
array<varchar(10)>), job_d) as test from (select array('1970-01-01',
'1970-01-01') as job_d) t; """
+ qt_select_nereid """ select if(job_d is null, cast(array('1970-01-01') as
array<varchar(10)>), job_d) as test from (select array('1970-01-01',
'1970-01-01') as job_d) t; """
+ qt_select_nereid """ select if(job_d is null, job_d, cast(array() as
array<varchar(10)>)) as test from (select array('1970-01-01', '1970-01-01') as
job_d) t; """
+ qt_select_nereid """ select if(job_d is null, job_d,
cast(array('1970-01-01') as array<varchar(10)>)) as test from (select
array('1970-01-01', '1970-01-01') as job_d) t; """
+ qt_select_nereid """ select if(job_d is null, job_d, cast(array(null) as
array<varchar(10)>)) as test from (select array('1970-01-01', '1970-01-01') as
job_d) t; """
+
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]