This is an automated email from the ASF dual-hosted git repository.
kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 992520484fd [pick](nestedtype)support nested type with agg
replace_if_not_null #38304 (#38716)
992520484fd is described below
commit 992520484fd96fce1c0be6a98a9defa5e81d9719
Author: amory <[email protected]>
AuthorDate: Tue Aug 6 17:46:43 2024 +0800
[pick](nestedtype)support nested type with agg replace_if_not_null #38304
(#38716)
---
be/src/vec/columns/column_nullable.h | 2 -
.../org/apache/doris/analysis/CreateTableStmt.java | 11 +-
.../create_nestedtypes_with_replaceIfNOtNull.out | 46 +++
...create_nestedtypes_with_replaceIfNOtNull.groovy | 325 +++++++++++++++++++++
4 files changed, 377 insertions(+), 7 deletions(-)
diff --git a/be/src/vec/columns/column_nullable.h
b/be/src/vec/columns/column_nullable.h
index 89cd27e8bd0..96ac8a8355d 100644
--- a/be/src/vec/columns/column_nullable.h
+++ b/be/src/vec/columns/column_nullable.h
@@ -353,8 +353,6 @@ public:
if (!nullable_rhs.is_null_at(row)) {
nested_column->replace_column_data(*nullable_rhs.nested_column,
row, self_row);
- } else {
- nested_column->replace_column_data_default(self_row);
}
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
index b2120a3133c..98cb7b3e9f2 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
@@ -494,11 +494,12 @@ public class CreateTableStmt extends DdlStmt {
columnDef.analyze(engineName.equals("olap"));
if (columnDef.getType().isComplexType() &&
engineName.equals("olap")) {
- if (columnDef.getAggregateType() != null
- && columnDef.getAggregateType() != AggregateType.NONE
- && columnDef.getAggregateType() !=
AggregateType.REPLACE) {
- throw new
AnalysisException(columnDef.getType().getPrimitiveType()
- + " column can't support aggregation " +
columnDef.getAggregateType());
+ if (columnDef.getAggregateType() != null &&
columnDef.getAggregateType() != AggregateType.NONE
+ && columnDef.getAggregateType() !=
AggregateType.REPLACE
+ && columnDef.getAggregateType() !=
AggregateType.REPLACE_IF_NOT_NULL) {
+ throw new AnalysisException(
+ columnDef.getType().getPrimitiveType() + " column
can't support aggregation "
+ + columnDef.getAggregateType());
}
if (columnDef.isKey()) {
throw new
AnalysisException(columnDef.getType().getPrimitiveType()
diff --git
a/regression-test/data/datatype_p0/nested_types/ddl/create_nestedtypes_with_replaceIfNOtNull.out
b/regression-test/data/datatype_p0/nested_types/ddl/create_nestedtypes_with_replaceIfNOtNull.out
new file mode 100644
index 00000000000..7513390d37c
--- /dev/null
+++
b/regression-test/data/datatype_p0/nested_types/ddl/create_nestedtypes_with_replaceIfNOtNull.out
@@ -0,0 +1,46 @@
+-- This file is automatically generated. You should know what you did if you
want to edit this
+-- !sql_all --
+1 [1, 0] [1, 2] [100, 200] [1000, 2000] [10000, 20000]
[100000, 200000] [1.1, 2.2] [1.11, 2.22] [10.01, 20.02] [30.03,
40.04] ["2024-01-01", "2024-01-02"] ["2024-01-01 12:00:00", "2024-01-02
12:00:00"] ["2024-01-03", "2024-01-04"] ["2024-01-03 12:00:00", "2024-01-04
12:00:00"] ["char1", "char2"] ["a", "b"] ["string1", "string2"]
+5 \N \N \N \N \N \N \N \N \N
\N \N \N \N \N \N \N \N
+7 [1, 1, 0] [12, 13, 14] [1200, 1300, 1400] [12000, 13000,
14000] [120000, 130000, 140000] [1200000, 1300000, 1400000]
[12.12, 13.13, 14.14] [12.12, 13.13, 14.14] [120.12, 130.13, 140.14]
[140.14, 150.15, 160.16] ["2024-07-01", "2024-07-02", "2024-07-03"]
["2024-07-01 12:00:00", "2024-07-02 12:00:00", "2024-07-03 12:00:00"]
["2024-07-03", "2024-07-04", "2024-07-05"] ["2024-07-03 12:00:00",
"2024-07-04 12:00:00", "2024-07-05 12:00:00"] ["char12", "char13", "char14"]
["l", "m", "n"] ["stri [...]
+
+-- !sql_replace_1 --
+1 [1, 1, 0] [12, 13, 14] [1200, 1300, 1400] [12000, 13000,
14000] [120000, 130000, 140000] [1200000, 1300000, 1400000]
[12.12, 13.13, 14.14] [12.12, 13.13, 14.14] [120.12, 130.13, 140.14]
[140.14, 150.15, 160.16] ["2024-07-01", "2024-07-02", "2024-07-03"]
["2024-07-01 12:00:00", "2024-07-02 12:00:00", "2024-07-03 12:00:00"]
["2024-07-03", "2024-07-04", "2024-07-05"] ["2024-07-03 12:00:00",
"2024-07-04 12:00:00", "2024-07-05 12:00:00"] ["char12", "char13", "char14"]
["l", "m", "n"] ["stri [...]
+5 \N \N \N \N \N \N \N \N \N
\N \N \N \N \N \N \N \N
+7 [1, 1, 0] [12, 13, 14] [1200, 1300, 1400] [12000, 13000,
14000] [120000, 130000, 140000] [1200000, 1300000, 1400000]
[12.12, 13.13, 14.14] [12.12, 13.13, 14.14] [120.12, 130.13, 140.14]
[140.14, 150.15, 160.16] ["2024-07-01", "2024-07-02", "2024-07-03"]
["2024-07-01 12:00:00", "2024-07-02 12:00:00", "2024-07-03 12:00:00"]
["2024-07-03", "2024-07-04", "2024-07-05"] ["2024-07-03 12:00:00",
"2024-07-04 12:00:00", "2024-07-05 12:00:00"] ["char12", "char13", "char14"]
["l", "m", "n"] ["stri [...]
+
+-- !sql_replace_2 --
+1 [1, 1, 0] [12, 13, 14] [1200, 1300, 1400] [12000, 13000,
14000] [120000, 130000, 140000] [1200000, 1300000, 1400000]
[12.12, 13.13, 14.14] [12.12, 13.13, 14.14] [120.12, 130.13, 140.14]
[140.14, 150.15, 160.16] ["2024-07-01", "2024-07-02", "2024-07-03"]
["2024-07-01 12:00:00", "2024-07-02 12:00:00", "2024-07-03 12:00:00"]
["2024-07-03", "2024-07-04", "2024-07-05"] ["2024-07-03 12:00:00",
"2024-07-04 12:00:00", "2024-07-05 12:00:00"] ["char12", "char13", "char14"]
["l", "m", "n"] ["stri [...]
+5 [1] [9] [900] [9000] [90000] [900000] [9.9] [9.99]
[90.09] [110.11] ["2024-05-01"] ["2024-05-01 12:00:00"] ["2024-05-02"]
["2024-05-02 12:00:00"] ["char9"] ["i"] ["string9"]
+7 [1, 1, 0] [12, 13, 14] [1200, 1300, 1400] [12000, 13000,
14000] [120000, 130000, 140000] [1200000, 1300000, 1400000]
[12.12, 13.13, 14.14] [12.12, 13.13, 14.14] [120.12, 130.13, 140.14]
[140.14, 150.15, 160.16] ["2024-07-01", "2024-07-02", "2024-07-03"]
["2024-07-01 12:00:00", "2024-07-02 12:00:00", "2024-07-03 12:00:00"]
["2024-07-03", "2024-07-04", "2024-07-05"] ["2024-07-03 12:00:00",
"2024-07-04 12:00:00", "2024-07-05 12:00:00"] ["char12", "char13", "char14"]
["l", "m", "n"] ["stri [...]
+
+-- !sql_map_all --
+1 {1:0, 0:1} {1:2, 2:3} {100:200, 200:300} {1000:2000,
2000:3000} {10000:20000, 20000:30000} {100000:200000, 200000:300000}
{1.1:2.2, 2.2:3.3} {1.11:2.22, 2.22:3.33} {10.01:20.02, 20.02:30.03}
{30.03:40.04, 40.04:50.05} {"2024-01-01":"2024-01-02",
"2024-01-02":"2024-01-03"} {"2024-01-01 12:00:00":"2024-01-02 12:00:00",
"2024-01-02 12:00:00":"2024-01-03 12:00:00"} {"2024-01-03":"2024-01-04",
"2024-01-04":"2024-01-05"} {"2024-01-03 12:00:00":"2024-01-04 12:00:00",
"2024-01-04 12:00:00":"20 [...]
+5 \N \N \N \N \N \N \N \N \N
\N \N \N \N \N \N \N \N
+7 {0:1} {7:70} {700:7000} {7000:70000} {70000:700000}
{700000:7000000} {7.7:7.77} {7.77:7.777} {70.07:700.70}
{90.09:900.90} {"2024-04-01":"2024-04-02"} {"2024-04-01
12:00:00":"2024-04-02 12:00:00"} {"2024-04-03":"2024-04-04"} {"2024-04-03
12:00:00":"2024-04-04 12:00:00"} {"char7":"charG"} {"g":"G"}
{"string7":"STRING7"}
+
+-- !sql_replace_map_1 --
+1 {0:1} {7:70} {700:7000} {7000:70000} {70000:700000}
{700000:7000000} {7.7:7.77} {7.77:7.777} {70.07:700.70}
{90.09:900.90} {"2024-04-01":"2024-04-02"} {"2024-04-01
12:00:00":"2024-04-02 12:00:00"} {"2024-04-03":"2024-04-04"} {"2024-04-03
12:00:00":"2024-04-04 12:00:00"} {"char7":"charG"} {"g":"G"}
{"string7":"STRING7"}
+5 \N \N \N \N \N \N \N \N \N
\N \N \N \N \N \N \N \N
+7 {0:1} {7:70} {700:7000} {7000:70000} {70000:700000}
{700000:7000000} {7.7:7.77} {7.77:7.777} {70.07:700.70}
{90.09:900.90} {"2024-04-01":"2024-04-02"} {"2024-04-01
12:00:00":"2024-04-02 12:00:00"} {"2024-04-03":"2024-04-04"} {"2024-04-03
12:00:00":"2024-04-04 12:00:00"} {"char7":"charG"} {"g":"G"}
{"string7":"STRING7"}
+
+-- !sql_replace_map_2 --
+1 {0:1} {7:70} {700:7000} {7000:70000} {70000:700000}
{700000:7000000} {7.7:7.77} {7.77:7.777} {70.07:700.70}
{90.09:900.90} {"2024-04-01":"2024-04-02"} {"2024-04-01
12:00:00":"2024-04-02 12:00:00"} {"2024-04-03":"2024-04-04"} {"2024-04-03
12:00:00":"2024-04-04 12:00:00"} {"char7":"charG"} {"g":"G"}
{"string7":"STRING7"}
+5 {1:0} {9:90} {900:9000} {9000:90000} {90000:900000}
{900000:9000000} {9.9:9.99} {9.99:9.999} {90.09:900.90}
{110.11:1100.11} {"2024-05-01":"2024-05-02"} {"2024-05-01
12:00:00":"2024-05-02 12:00:00"} {"2024-05-02":"2024-05-03"} {"2024-05-02
12:00:00":"2024-05-03 12:00:00"} {"char9":"charG"} {"g":"G"}
{"string9":"STRING9"}
+7 {0:1} {7:70} {700:7000} {7000:70000} {70000:700000}
{700000:7000000} {7.7:7.77} {7.77:7.777} {70.07:700.70}
{90.09:900.90} {"2024-04-01":"2024-04-02"} {"2024-04-01
12:00:00":"2024-04-02 12:00:00"} {"2024-04-03":"2024-04-04"} {"2024-04-03
12:00:00":"2024-04-04 12:00:00"} {"char7":"charG"} {"g":"G"}
{"string7":"STRING7"}
+
+-- !sql_struct_all --
+1 {"f1": 1} {"f1": 1} {"f1": 100} {"f1": 1000} {"f1":
10000} {"f1": 100000} {"f1": 1.1} {"f1": 1.11} {"f1": 10.01} {"f1":
20.02} {"f1": "2024-01-01"} {"f1": "2024-01-01 12:00:00"} {"f1":
"2024-01-02"} {"f1": "2024-01-02 12:00:00"} {"f1": "char1"} {"f1": "a"}
{"f1": "string1"}
+5 \N \N \N \N \N \N \N \N \N
\N \N \N \N \N \N \N \N
+7 {"f1": 1} {"f1": 7} {"f1": 700} {"f1": 7000} {"f1":
70000} {"f1": 700000} {"f1": 7.7} {"f1": 7.77} {"f1": 130.13} {"f1":
140.14} {"f1": "2024-07-01"} {"f1": "2024-07-01 12:00:00"} {"f1":
"2024-07-02"} {"f1": "2024-07-02 12:00:00"} {"f1": "char7"} {"f1": "g"}
{"f1": "string7"}
+
+-- !sql_replace_struct_1 --
+1 {"f1": 1} {"f1": 7} {"f1": 700} {"f1": 7000} {"f1":
70000} {"f1": 700000} {"f1": 7.7} {"f1": 7.77} {"f1": 130.13} {"f1":
140.14} {"f1": "2024-07-01"} {"f1": "2024-07-01 12:00:00"} {"f1":
"2024-07-02"} {"f1": "2024-07-02 12:00:00"} {"f1": "char7"} {"f1": "g"}
{"f1": "string7"}
+5 \N \N \N \N \N \N \N \N \N
\N \N \N \N \N \N \N \N
+7 {"f1": 1} {"f1": 7} {"f1": 700} {"f1": 7000} {"f1":
70000} {"f1": 700000} {"f1": 7.7} {"f1": 7.77} {"f1": 130.13} {"f1":
140.14} {"f1": "2024-07-01"} {"f1": "2024-07-01 12:00:00"} {"f1":
"2024-07-02"} {"f1": "2024-07-02 12:00:00"} {"f1": "char7"} {"f1": "g"}
{"f1": "string7"}
+
+-- !sql_replace_struct_2 --
+1 {"f1": 1} {"f1": 7} {"f1": 700} {"f1": 7000} {"f1":
70000} {"f1": 700000} {"f1": 7.7} {"f1": 7.77} {"f1": 130.13} {"f1":
140.14} {"f1": "2024-07-01"} {"f1": "2024-07-01 12:00:00"} {"f1":
"2024-07-02"} {"f1": "2024-07-02 12:00:00"} {"f1": "char7"} {"f1": "g"}
{"f1": "string7"}
+5 {"f1": 1} {"f1": 5} {"f1": 500} {"f1": 5000} {"f1":
50000} {"f1": 500000} {"f1": 5.5} {"f1": 5.55} {"f1": 90.09} {"f1":
100.10} {"f1": "2024-05-01"} {"f1": "2024-05-01 12:00:00"} {"f1":
"2024-05-02"} {"f1": "2024-05-02 12:00:00"} {"f1": "char5"} {"f1": "e"}
{"f1": "string5"}
+7 {"f1": 1} {"f1": 7} {"f1": 700} {"f1": 7000} {"f1":
70000} {"f1": 700000} {"f1": 7.7} {"f1": 7.77} {"f1": 130.13} {"f1":
140.14} {"f1": "2024-07-01"} {"f1": "2024-07-01 12:00:00"} {"f1":
"2024-07-02"} {"f1": "2024-07-02 12:00:00"} {"f1": "char7"} {"f1": "g"}
{"f1": "string7"}
+
diff --git
a/regression-test/suites/datatype_p0/nested_types/ddl/create_nestedtypes_with_replaceIfNOtNull.groovy
b/regression-test/suites/datatype_p0/nested_types/ddl/create_nestedtypes_with_replaceIfNOtNull.groovy
new file mode 100644
index 00000000000..032b95085da
--- /dev/null
+++
b/regression-test/suites/datatype_p0/nested_types/ddl/create_nestedtypes_with_replaceIfNOtNull.groovy
@@ -0,0 +1,325 @@
+// 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.
+
+suite("create_nestedtypes_with_repalceIfNotNull", "p0") {
+ def colNameArr = ["c_bool", "c_tinyint", "c_smallint", "c_int",
"c_bigint", "c_largeint", "c_float",
+ "c_double", "c_decimal", "c_decimalv3", "c_date",
"c_datetime", "c_datev2", "c_datetimev2",
+ "c_char", "c_varchar", "c_string"]
+ def colTypeArr = ["BOOLEAN", "TINYINT", "SMALLINT", "INT", "BIGINT",
"LARGEINT", "FLOAT", "DOUBLE",
+ "DECIMAL(10, 2)", "DECIMAL(10, 2)", "DATE", "DATETIME",
"DATE", "DATETIME",
+ "CHAR(10)", "VARCHAR(1)", "STRING"]
+
+ def create_nested_table = {testTablex, nested_type ->
+ def stmt = "CREATE TABLE IF NOT EXISTS " + testTablex + "(\n" +
+ "`k1` bigint(11) NULL,\n"
+
+ for (int i = 0; i < colTypeArr.size(); i++) {
+ def nestedType = ""
+ if (nested_type == 0) {
+ nestedType = "ARRAY<" + colTypeArr[i] + ">"
+ } else if (nested_type == 1) {
+ nestedType = "MAP<" + colTypeArr[i] + ", " + colTypeArr[i] +
">"
+ } else if (nested_type == 2) {
+ nestedType = "STRUCT<f1: " + colTypeArr[i] + ">"
+ }
+
+ String strTmp = "`" + colNameArr[i] + "` " + nestedType + "
REPLACE_IF_NOT_NULL,\n";
+ stmt += strTmp
+ }
+ stmt = stmt.substring(0, stmt.length()-2)
+ stmt += ") ENGINE=OLAP\n" +
+ "AGGREGATE KEY(`k1`)\n" +
+ "COMMENT 'OLAP'\n" +
+ "DISTRIBUTED BY HASH(`k1`) BUCKETS 10\n" +
+ "PROPERTIES(\"replication_num\" = \"1\");"
+ sql "DROP TABLE IF EXISTS $testTablex"
+ sql stmt
+ }
+
+ // array
+ create_nested_table.call("test_array_agg_replace_if_not_null", 0)
+ // insert data
+ sql """insert into test_array_agg_replace_if_not_null values(
+ 1,
+ [true, false],
+ [1, 2],
+ [100, 200],
+ [1000, 2000],
+ [10000, 20000],
+ [100000, 200000],
+ [1.1, 2.2],
+ [1.11, 2.22],
+ [10.01, 20.02],
+ [30.03, 40.04],
+ ['2024-01-01', '2024-01-02'],
+ ['2024-01-01 12:00:00', '2024-01-02 12:00:00'],
+ ['2024-01-03', '2024-01-04'],
+ ['2024-01-03 12:00:00', '2024-01-04 12:00:00'],
+ ['char1', 'char2'],
+ ['a', 'b'],
+ ['string1', 'string2']) """
+ sql """ insert into test_array_agg_replace_if_not_null(k1) values(5)"""
+ sql """ insert into test_array_agg_replace_if_not_null values(
+ 7,
+ [true, true, false],
+ [12, 13, 14],
+ [1200, 1300, 1400],
+ [12000, 13000, 14000],
+ [120000, 130000, 140000],
+ [1200000, 1300000, 1400000],
+ [12.12, 13.13, 14.14],
+ [12.12, 13.13, 14.14],
+ [120.12, 130.13, 140.14],
+ [140.14, 150.15, 160.16],
+ ['2024-07-01', '2024-07-02', '2024-07-03'],
+ ['2024-07-01 12:00:00', '2024-07-02 12:00:00', '2024-07-03
12:00:00'],
+ ['2024-07-03', '2024-07-04', '2024-07-05'],
+ ['2024-07-03 12:00:00', '2024-07-04 12:00:00', '2024-07-05
12:00:00'],
+ ['char12', 'char13', 'char14'],
+ ['l', 'm', 'n'],
+ ['string12', 'string13', 'string14']
+ ); """
+ qt_sql_all "select * from test_array_agg_replace_if_not_null order by k1;"
+ sql """ insert into test_array_agg_replace_if_not_null values(
+ 1,
+ [true, true, false],
+ [12, 13, 14],
+ [1200, 1300, 1400],
+ [12000, 13000, 14000],
+ [120000, 130000, 140000],
+ [1200000, 1300000, 1400000],
+ [12.12, 13.13, 14.14],
+ [12.12, 13.13, 14.14],
+ [120.12, 130.13, 140.14],
+ [140.14, 150.15, 160.16],
+ ['2024-07-01', '2024-07-02', '2024-07-03'],
+ ['2024-07-01 12:00:00', '2024-07-02 12:00:00', '2024-07-03
12:00:00'],
+ ['2024-07-03', '2024-07-04', '2024-07-05'],
+ ['2024-07-03 12:00:00', '2024-07-04 12:00:00', '2024-07-05
12:00:00'],
+ ['char12', 'char13', 'char14'],
+ ['l', 'm', 'n'],
+ ['string12', 'string13', 'string14'])"""
+ sql """ insert into test_array_agg_replace_if_not_null(k1) values(7)"""
+ qt_sql_replace_1 "select * from test_array_agg_replace_if_not_null order
by k1;"
+ sql """ insert into test_array_agg_replace_if_not_null values(
+ 5,
+ [true],
+ [9],
+ [900],
+ [9000],
+ [90000],
+ [900000],
+ [9.9],
+ [9.99],
+ [90.09],
+ [110.11],
+ ['2024-05-01'],
+ ['2024-05-01 12:00:00'],
+ ['2024-05-02'],
+ ['2024-05-02 12:00:00'],
+ ['char9'],
+ ['i'],
+ ['string9']
+ );
+ """
+ qt_sql_replace_2 "select * from test_array_agg_replace_if_not_null order
by k1;"
+ // map
+ create_nested_table.call("test_map_agg_replace_if_not_null", 1)
+ // insert data
+ sql """INSERT INTO test_map_agg_replace_if_not_null VALUES
+ (
+ 1,
+ {true: false, false: true},
+ {1: 2, 2: 3},
+ {100: 200, 200: 300},
+ {1000: 2000, 2000: 3000},
+ {10000: 20000, 20000: 30000},
+ {100000: 200000, 200000: 300000},
+ {1.1: 2.2, 2.2: 3.3},
+ {1.11: 2.22, 2.22: 3.33},
+ {10.01: 20.02, 20.02: 30.03},
+ {30.03: 40.04, 40.04: 50.05},
+ {'2024-01-01': '2024-01-02', '2024-01-02':
'2024-01-03'},
+ {'2024-01-01 12:00:00': '2024-01-02 12:00:00',
'2024-01-02 12:00:00': '2024-01-03 12:00:00'},
+ {'2024-01-03': '2024-01-04', '2024-01-04':
'2024-01-05'},
+ {'2024-01-03 12:00:00': '2024-01-04 12:00:00',
'2024-01-04 12:00:00': '2024-01-05 12:00:00'},
+ {'char1': 'char2', 'char2': 'char3'},
+ {'a': 'b', 'b': 'c'},
+ {'string1': 'string2', 'string2': 'string3'}
+ ); """
+ sql """ insert into test_map_agg_replace_if_not_null(k1) values(5)"""
+ sql """ insert into test_map_agg_replace_if_not_null values(
+ 7,
+ {false: true},
+ {7: 70},
+ {700: 7000},
+ {7000: 70000},
+ {70000: 700000},
+ {700000: 7000000},
+ {7.7: 7.77},
+ {7.77: 7.777},
+ {70.07: 700.70},
+ {90.09: 900.90},
+ {'2024-04-01': '2024-04-02'},
+ {'2024-04-01 12:00:00': '2024-04-02 12:00:00'},
+ {'2024-04-03': '2024-04-04'},
+ {'2024-04-03 12:00:00': '2024-04-04 12:00:00'},
+ {'char7': 'charG'},
+ {'g': 'G'},
+ {'string7': 'STRING7'}
+ ); """
+ qt_sql_map_all "select * from test_map_agg_replace_if_not_null order by
k1;"
+ sql """ insert into test_map_agg_replace_if_not_null values(
+ 1,
+ {false: true},
+ {7: 70},
+ {700: 7000},
+ {7000: 70000},
+ {70000: 700000},
+ {700000: 7000000},
+ {7.7: 7.77},
+ {7.77: 7.777},
+ {70.07: 700.70},
+ {90.09: 900.90},
+ {'2024-04-01': '2024-04-02'},
+ {'2024-04-01 12:00:00': '2024-04-02 12:00:00'},
+ {'2024-04-03': '2024-04-04'},
+ {'2024-04-03 12:00:00': '2024-04-04 12:00:00'},
+ {'char7': 'charG'},
+ {'g': 'G'},
+ {'string7': 'STRING7'}
+ ); """
+ sql """ insert into test_map_agg_replace_if_not_null(k1) values(7)"""
+ qt_sql_replace_map_1 "select * from test_map_agg_replace_if_not_null order
by k1;"
+ sql """ insert into test_map_agg_replace_if_not_null values(
+ 5,
+ {true: false},
+ {9: 90},
+ {900: 9000},
+ {9000: 90000},
+ {90000: 900000},
+ {900000: 9000000},
+ {9.9: 9.99},
+ {9.99: 9.999},
+ {90.09: 900.90},
+ {110.11: 1100.11},
+ {'2024-05-01': '2024-05-02'},
+ {'2024-05-01 12:00:00': '2024-05-02 12:00:00'},
+ {'2024-05-02': '2024-05-03'},
+ {'2024-05-02 12:00:00': '2024-05-03 12:00:00'},
+ {'char9': 'charG'},
+ {'g': 'G'},
+ {'string9': 'STRING9'}
+ );
+ """
+ qt_sql_replace_map_2 "select * from test_map_agg_replace_if_not_null order
by k1;"
+
+ // struct
+ create_nested_table.call("test_struct_agg_replace_if_not_null", 2)
+ // insert data
+ sql """INSERT INTO test_struct_agg_replace_if_not_null (
+ `k1`, `c_bool`, `c_tinyint`, `c_smallint`, `c_int`,
`c_bigint`, `c_largeint`,
+ `c_float`, `c_double`, `c_decimal`, `c_decimalv3`,
`c_date`, `c_datetime`,
+ `c_datev2`, `c_datetimev2`, `c_char`, `c_varchar`,
`c_string`
+ ) VALUES
+ (
+ 1,
+ {true},
+ {1},
+ {100},
+ {1000},
+ {10000},
+ {100000},
+ {1.1},
+ {1.11},
+ {10.01},
+ {20.02},
+ {'2024-01-01'},
+ {'2024-01-01 12:00:00'},
+ {'2024-01-02'},
+ {'2024-01-02 12:00:00'},
+ {'char1'},
+ {'a'},
+ {'string1'}
+ ); """
+ sql """ insert into test_struct_agg_replace_if_not_null(k1) values(5)"""
+ sql """ insert into test_struct_agg_replace_if_not_null values(
+ 7,
+ {true},
+ {7},
+ {700},
+ {7000},
+ {70000},
+ {700000},
+ {7.7},
+ {7.77},
+ {130.13},
+ {140.14},
+ {'2024-07-01'},
+ {'2024-07-01 12:00:00'},
+ {'2024-07-02'},
+ {'2024-07-02 12:00:00'},
+ {'char7'},
+ {'g'},
+ {'string7'}
+ ); """
+ qt_sql_struct_all "select * from test_struct_agg_replace_if_not_null
order by k1;"
+ sql """ insert into test_struct_agg_replace_if_not_null values(
+ 1,
+ {true},
+ {7},
+ {700},
+ {7000},
+ {70000},
+ {700000},
+ {7.7},
+ {7.77},
+ {130.13},
+ {140.14},
+ {'2024-07-01'},
+ {'2024-07-01 12:00:00'},
+ {'2024-07-02'},
+ {'2024-07-02 12:00:00'},
+ {'char7'},
+ {'g'},
+ {'string7'}
+ ); """
+ sql """ insert into test_struct_agg_replace_if_not_null(k1) values(7)"""
+ qt_sql_replace_struct_1 "select * from test_struct_agg_replace_if_not_null
order by k1;"
+ sql """ insert into test_struct_agg_replace_if_not_null values(
+ 5,
+ {true},
+ {5},
+ {500},
+ {5000},
+ {50000},
+ {500000},
+ {5.5},
+ {5.55},
+ {90.09},
+ {100.10},
+ {'2024-05-01'},
+ {'2024-05-01 12:00:00'},
+ {'2024-05-02'},
+ {'2024-05-02 12:00:00'},
+ {'char5'},
+ {'e'},
+ {'string5'}
+ );
+ """
+ qt_sql_replace_struct_2 "select * from test_struct_agg_replace_if_not_null
order by k1;"
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]