From 101b2593fc55dbca24b0e337e613ddaef3679401 Mon Sep 17 00:00:00 2001 From: Guangdong Liu Date: Wed, 24 Jan 2024 17:18:35 +0800 Subject: [PATCH] [regression test](schema change) add case for tinyint/smallint/int/bigint/float/double type in agg (#30193) --- ...test_schema_change_agg_check_all_types.out | 34 +++ ...t_schema_change_agg_check_all_types.groovy | 215 ++++++++++++++++++ 2 files changed, 249 insertions(+) create mode 100644 regression-test/data/schema_change_p0/test_schema_change_agg_check_all_types.out create mode 100644 regression-test/suites/schema_change_p0/test_schema_change_agg_check_all_types.groovy diff --git a/regression-test/data/schema_change_p0/test_schema_change_agg_check_all_types.out b/regression-test/data/schema_change_p0/test_schema_change_agg_check_all_types.out new file mode 100644 index 0000000000..3f7a29b7cd --- /dev/null +++ b/regression-test/data/schema_change_p0/test_schema_change_agg_check_all_types.out @@ -0,0 +1,34 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !tinyint_to_smallint -- +10001 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 + +-- !smallint_to_int -- +10001 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +10002 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 + +-- !int_to_bigint -- +10001 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +10002 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +10003 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 + +-- !bigint_to_largeint -- +10001 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +10002 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +10003 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +10004 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 + +-- !largeint_to_float -- +10001 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 0.0 +10002 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 0.0 +10003 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 0.0 +10004 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 0.0 +10005 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 1.11 + +-- !float_to_double -- +10001 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 0.0 +10002 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 0.0 +10003 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 0.0 +10004 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 0.0 +10005 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 1.1100000143051147 +10006 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 1.11 + diff --git a/regression-test/suites/schema_change_p0/test_schema_change_agg_check_all_types.groovy b/regression-test/suites/schema_change_p0/test_schema_change_agg_check_all_types.groovy new file mode 100644 index 0000000000..a23c909416 --- /dev/null +++ b/regression-test/suites/schema_change_p0/test_schema_change_agg_check_all_types.groovy @@ -0,0 +1,215 @@ +// 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("test_schema_change_agg_check_all_types", "p0") { + def tableName3 = "test_schema_change_agg_check_all_types" + + def getJobState = { tableName -> + def jobStateResult = sql """ SHOW ALTER TABLE COLUMN WHERE IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ + return jobStateResult[0][9] + } + + def getCreateViewState = { tableName -> + def createViewStateResult = sql """ SHOW ALTER TABLE MATERIALIZED VIEW WHERE IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ + return createViewStateResult[0][8] + } + + sql """ DROP TABLE IF EXISTS ${tableName3} """ + + sql """ + CREATE TABLE IF NOT EXISTS ${tableName3} ( + `k1` int(11) NULL, + `k2` tinyint(4) NULL, + `k3` smallint(6) NULL, + `k4` int(30) sum NULL, + `k5` largeint(40) sum NULL, + `k6` float sum NULL, + `k7` double sum NULL, + `k8` decimal(9, 0) max NULL, + `k9` char(10) replace NULL, + `k10` varchar(1024) replace NULL, + `k11` text replace NULL, + `k12` date replace NULL, + `k13` datetime replace NULL + ) ENGINE=OLAP + AGGREGATE KEY(k1, k2, k3) + DISTRIBUTED BY HASH(`k1`) BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + + // tinyint to smallint + sql """ alter table ${tableName3} modify column k2 smallint key NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + sleep(100) + if (max_try_num < 1){ + assertEquals(1,2) + } + } + } + + sql """ insert into ${tableName3} values (10001, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00') """ + + qt_tinyint_to_smallint """ select * from ${tableName3} """ + + + // smallint to int + sql """ alter table ${tableName3} modify column k2 int key NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + sleep(100) + if (max_try_num < 1){ + assertEquals(1,2) + } + } + } + + sql """ insert into ${tableName3} values (10002, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00') """ + + qt_smallint_to_int """ select * from ${tableName3} """ + + // int to bigint + sql """ alter table ${tableName3} modify column k2 bigint key NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + sleep(100) + if (max_try_num < 1){ + assertEquals(1,2) + } + } + } + + sql """ insert into ${tableName3} values (10003, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00') """ + + qt_int_to_bigint """ select * from ${tableName3} """ + + // bigint to largeint + + sql """ alter table ${tableName3} modify column k2 largeint key NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + sleep(100) + if (max_try_num < 1){ + assertEquals(1,2) + } + } + } + + sql """ insert into ${tableName3} values (10004, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00') """ + + qt_bigint_to_largeint """ select * from ${tableName3} """ + + // largeint to float + sql """ alter table ${tableName3} add column k14 largeint replace not null default "0" after k13""" + + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + sleep(100) + if (max_try_num < 1){ + assertEquals(1,2) + } + } + } + + sql """ alter table ${tableName3} modify column k14 float replace not null default "0" after k13""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + sleep(100) + if (max_try_num < 1){ + assertEquals(1,2) + } + } + } + + sql """ insert into ${tableName3} values (10005, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 1.11) """ + + qt_largeint_to_float """ select * from ${tableName3} """ + + // float to double + sql """ alter table ${tableName3} modify column k14 double replace not null default "0" after k13""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + sleep(100) + if (max_try_num < 1){ + assertEquals(1,2) + } + } + } + + sql """ insert into ${tableName3} values (10006, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00',1.11) """ + + qt_float_to_double """ select * from ${tableName3} """ + +} +