diff --git a/be/src/cloud/cloud_schema_change_job.cpp b/be/src/cloud/cloud_schema_change_job.cpp index e4a5f73c07e994..42a2615b961318 100644 --- a/be/src/cloud/cloud_schema_change_job.cpp +++ b/be/src/cloud/cloud_schema_change_job.cpp @@ -484,6 +484,7 @@ Status CloudSchemaChangeJob::_process_delete_bitmap(int64_t alter_version, RETURN_IF_ERROR(_cloud_storage_engine.register_compaction_stop_token(_new_tablet, initiator)); TabletMetaSharedPtr tmp_meta = std::make_shared(*(_new_tablet->tablet_meta())); tmp_meta->delete_bitmap().delete_bitmap.clear(); + tmp_meta->clear_rowsets(); std::shared_ptr tmp_tablet = std::make_shared(_cloud_storage_engine, tmp_meta); { diff --git a/regression-test/data/schema_change_p0/test_schema_change_mow_with_empty_rowset.out b/regression-test/data/schema_change_p0/test_schema_change_mow_with_empty_rowset.out new file mode 100644 index 00000000000000..c3605547fe088f --- /dev/null +++ b/regression-test/data/schema_change_p0/test_schema_change_mow_with_empty_rowset.out @@ -0,0 +1,104 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql -- +0 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +1 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +2 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +3 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +4 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +5 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +6 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +7 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +8 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +9 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +10 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +11 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +12 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +13 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +14 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +15 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +16 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +17 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +18 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +19 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +20 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +21 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +22 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +23 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +24 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +25 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +26 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +27 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +28 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +29 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +30 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +31 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +32 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +33 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +34 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +35 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +36 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +37 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +38 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +39 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +40 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +41 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +42 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +43 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +44 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +45 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +46 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +47 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +48 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +49 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +50 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +51 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +52 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +53 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +54 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +55 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +56 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +57 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +58 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +59 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +60 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +61 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +62 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +63 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +64 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +65 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +66 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +67 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +68 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +69 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +70 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +71 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +72 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +73 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +74 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +75 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +76 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +77 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +78 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +79 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +80 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +81 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +82 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +83 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +84 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +85 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +86 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +87 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +88 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +89 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +90 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +91 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +92 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +93 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +94 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +95 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +96 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +97 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +98 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +99 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 +100 2 3 4 5 6.6 1.7 9 a b c 2021-10-30 2021-10-30T00:00 + diff --git a/regression-test/suites/schema_change_p0/test_schema_change_mow_with_empty_rowset.groovy b/regression-test/suites/schema_change_p0/test_schema_change_mow_with_empty_rowset.groovy new file mode 100644 index 00000000000000..a0fe1d5832113b --- /dev/null +++ b/regression-test/suites/schema_change_p0/test_schema_change_mow_with_empty_rowset.groovy @@ -0,0 +1,80 @@ +// 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. + +import java.util.concurrent.TimeUnit +import org.awaitility.Awaitility + +suite("test_schema_change_mow_with_empty_rowset", "p0") { + def tableName = "test_sc_mow_with_empty_rowset" + + def getJobState = { tbl -> + def jobStateResult = sql """ SHOW ALTER TABLE COLUMN WHERE IndexName='${tbl}' ORDER BY createtime DESC LIMIT 1 """ + return jobStateResult[0][9] + } + + sql """ DROP TABLE IF EXISTS ${tableName} """ + + sql """ + CREATE TABLE IF NOT EXISTS ${tableName} ( + `k1` int(11) NULL, + `k2` tinyint(4) NULL, + `k3` smallint(6) NULL, + `k4` int(30) NULL, + `k5` largeint(40) NULL, + `k6` float NULL, + `k7` double NULL, + `k8` decimal(9, 0) NULL, + `k9` char(10) NULL, + `k10` varchar(1024) NULL, + `k11` text NULL, + `k12` date NULL, + `k13` datetime NULL + ) ENGINE=OLAP + unique KEY(k1, k2, k3) + DISTRIBUTED BY HASH(`k1`) BUCKETS 2 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1", + "enable_unique_key_merge_on_write" = "true" + ); + """ + + for (int i = 0; i < 100; i++) { + sql """ insert into ${tableName} values ($i, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00') """ + } + + sql """ alter table ${tableName} modify column k4 string NULL""" + + for (int i = 0; i < 20; i++) { + sql """ insert into ${tableName} values (100, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00') """ + } + + Awaitility.await().atMost(30, TimeUnit.SECONDS).pollDelay(10, TimeUnit.MILLISECONDS).pollInterval(10, TimeUnit.MILLISECONDS).until( + { + String res = getJobState(tableName) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + return true + } + return false + } + ) + + qt_sql """ select * from ${tableName} order by k1, k2, k3 """ +} +