From f0a35f6e2d5c04634028a8644adecce8d6b31a91 Mon Sep 17 00:00:00 2001 From: Guangdong Liu Date: Mon, 29 Jan 2024 21:04:04 +0800 Subject: [PATCH] [regression test](schema change) add some case for agg col (#30479) --- .../doris/alter/SchemaChangeHandler.java | 2 +- .../test_schema_change_agg.groovy | 161 +++++++++--------- 2 files changed, 77 insertions(+), 86 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java index 206f028b02..81e8984780 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java @@ -2644,7 +2644,7 @@ public class SchemaChangeHandler extends AlterHandler { try { changedIndexIdToSchema = checkTable(db, olapTable, indexSchemaMap); } catch (DdlException e) { - throw new DdlException("Table " + db.getFullName() + "." + olapTable.getName() + " check failed"); + throw new DdlException("Table " + db.getFullName() + "." + olapTable.getName() + " check failed", e); } if (changedIndexIdToSchema.isEmpty() && !hasIndexChange) { diff --git a/regression-test/suites/schema_change_p0/test_schema_change_agg.groovy b/regression-test/suites/schema_change_p0/test_schema_change_agg.groovy index 2534c219ca..e2931bda9a 100644 --- a/regression-test/suites/schema_change_p0/test_schema_change_agg.groovy +++ b/regression-test/suites/schema_change_p0/test_schema_change_agg.groovy @@ -15,32 +15,9 @@ // specific language governing permissions and limitations // under the License. -import java.util.Date -import java.text.SimpleDateFormat -import org.apache.http.HttpResponse -import org.apache.http.client.methods.HttpPut -import org.apache.http.impl.client.CloseableHttpClient -import org.apache.http.impl.client.HttpClients -import org.apache.http.entity.ContentType -import org.apache.http.entity.StringEntity -import org.apache.http.client.config.RequestConfig -import org.apache.http.client.RedirectStrategy -import org.apache.http.protocol.HttpContext -import org.apache.http.HttpRequest -import org.apache.http.impl.client.LaxRedirectStrategy -import org.apache.http.client.methods.RequestBuilder -import org.apache.http.entity.StringEntity -import org.apache.http.client.methods.CloseableHttpResponse -import org.apache.http.util.EntityUtils - suite("test_schema_change_agg", "p0") { def tableName3 = "test_all_agg" - 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] @@ -96,21 +73,10 @@ suite("test_schema_change_agg", "p0") { execStreamLoad() sql """ alter table ${tableName3} modify column k2 bigint(11) 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 { - execStreamLoad() - if (max_try_num < 1) { - println "test timeout," + "state:" + res - assertEquals("FINISHED",res) - } - } + + waitForSchemaChangeDone { + sql """SHOW ALTER TABLE COLUMN WHERE IndexName='${tableName3}' ORDER BY createtime DESC LIMIT 1""" + time 60 } /* @@ -134,21 +100,9 @@ suite("test_schema_change_agg", "p0") { */ sql """ alter table ${tableName3} modify column k4 bigint(11) sum 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 { - execStreamLoad() - if (max_try_num < 1) { - println "test timeout," + "state:" + res - assertEquals("FINISHED",res) - } - } + waitForSchemaChangeDone { + sql """SHOW ALTER TABLE COLUMN WHERE IndexName='${tableName3}' ORDER BY createtime DESC LIMIT 1""" + time 60 } sql """ alter table ${tableName3} add column v14 int sum NOT NULL default "0" after k13 """ @@ -156,24 +110,9 @@ suite("test_schema_change_agg", "p0") { 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 10086) """ sql """ alter table ${tableName3} modify column v14 int sum NULL default "0" """ - sleep(10) - max_try_num = 6000 - while (max_try_num--) { - String res = getJobState(tableName3) - if (res == "FINISHED" || res == "CANCELLED") { - assertEquals("FINISHED", res) - sleep(3000) - break - } else { - int val = 100000 + max_try_num - sql """ insert into ${tableName3} values (${val}, 2, 3, 4, 5, 6.6, 1.7, 8.8, - 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 9527) """ - sleep(10) - if (max_try_num < 1) { - println "test timeout," + "state:" + res - assertEquals("FINISHED",res) - } - } + waitForSchemaChangeDone { + sql """SHOW ALTER TABLE COLUMN WHERE IndexName='${tableName3}' ORDER BY createtime DESC LIMIT 1""" + time 60 } sql """ alter table ${tableName3} drop column v14 """ @@ -195,20 +134,9 @@ suite("test_schema_change_agg", "p0") { // boolean type sql """ alter table ${tableName3} add column v15 boolean replace NOT NULL default "0" after k13 """ - sleep(10) - max_try_num = 6000 - while (max_try_num--) { - String res = getJobState(tableName3) - if (res == "FINISHED" || res == "CANCELLED") { - assertEquals("FINISHED", res) - sleep(3000) - break - } else { - sleep(2000) - if (max_try_num < 1){ - assertEquals(1,2) - } - } + waitForSchemaChangeDone { + sql """SHOW ALTER TABLE COLUMN WHERE IndexName='${tableName3}' ORDER BY createtime DESC LIMIT 1""" + time 60 } sql """ insert into ${tableName3} values (10002, 2, 3, 4, 5, 6.6, 1.7, 8.81, @@ -219,5 +147,68 @@ suite("test_schema_change_agg", "p0") { exception "Can not change BOOLEAN to INT" } + // check add column without agg type + test { + sql """ alter table ${tableName3} add column v16 int NOT NULL default "0" after k13 """ + exception "Invalid column order. value should be after key. index[${tableName3}]" + } + + // del key + test { + sql """ alter table ${tableName3} drop column k1 """ + exception "Can not drop key column when table has value column with REPLACE aggregation method" + } + + + //drop partition key + sql """ DROP TABLE IF EXISTS ${tableName3} """ + sql """ + CREATE TABLE `${tableName3}` + ( + `siteid` INT DEFAULT '10', + `citycode` SMALLINT, + `username` VARCHAR(32) DEFAULT 'test', + `pv` BIGINT SUM DEFAULT '0' + ) + AGGREGATE KEY(`siteid`, `citycode`, `username`) + PARTITION BY RANGE(`siteid`) + ( + partition `old_p1` values [("1"), ("2")), + partition `old_p2` values [("2"), ("3")) + ) + DISTRIBUTED BY HASH(pv) BUCKETS 1 + PROPERTIES ( + "replication_num" = "1" + ); + """ + + test { + sql "alter table ${tableName3} drop column siteid" + exception "Partition column[siteid] cannot be dropped. index[${tableName3}]" + } + + //modify col + + // without agg type + test { + sql "alter table ${tableName3} modify column pv varchar" + exception "Can not change aggregation type" + } + + //partition col + test { + sql "alter table ${tableName3} modify column siteid varchar DEFAULT '10'" + exception "Can not modify partition column[siteid]." + } + + //distribution key + + test { + sql "alter table ${tableName3} modify column pv bigint sum default '0' comment 'pv'" + exception "Can not modify distribution column[pv]. index[${tableName3}]" + } + + + }