This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push:
new a127aa1fa85 branch-3.0-pick: [Fix](partial update) use correct default
value for missing columns in partial update (#49066) (#49221)
a127aa1fa85 is described below
commit a127aa1fa85dca0d57f19d7946b62f11289bba32
Author: bobhan1 <[email protected]>
AuthorDate: Wed Mar 19 19:53:39 2025 +0800
branch-3.0-pick: [Fix](partial update) use correct default value for
missing columns in partial update (#49066) (#49221)
pick https://github.com/apache/doris/pull/49066
---
be/src/olap/base_tablet.cpp | 2 +-
be/src/olap/partial_update_info.cpp | 2 +-
.../test_partial_update_complex_type.out | Bin 1855 -> 2735 bytes
.../test_partial_update_complex_type.groovy | 35 ++++++++++++++++++---
4 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/be/src/olap/base_tablet.cpp b/be/src/olap/base_tablet.cpp
index 0aa07572704..4250a9f09b8 100644
--- a/be/src/olap/base_tablet.cpp
+++ b/be/src/olap/base_tablet.cpp
@@ -1016,7 +1016,7 @@ Status BaseTablet::generate_new_block_for_partial_update(
mutable_column.get())
->insert_null_elements(1);
} else {
- mutable_column->insert_default();
+
mutable_column->insert(rs_column.get_vec_type()->get_default());
}
} else {
mutable_column->insert_from(
diff --git a/be/src/olap/partial_update_info.cpp
b/be/src/olap/partial_update_info.cpp
index 5ab08b012f1..94dd4673f59 100644
--- a/be/src/olap/partial_update_info.cpp
+++ b/be/src/olap/partial_update_info.cpp
@@ -339,7 +339,7 @@ Status PartialUpdateReadPlan::fill_missing_columns(
// If the control flow reaches this branch, the column
neither has default value
// nor is nullable. It means that the row's delete sign is
marked, and the value
// columns are useless and won't be read. So we can just
put arbitary values in the cells
- missing_col->insert_default();
+
missing_col->insert(tablet_column.get_vec_type()->get_default());
}
// clang-format on
}
diff --git
a/regression-test/data/unique_with_mow_p0/partial_update/test_partial_update_complex_type.out
b/regression-test/data/unique_with_mow_p0/partial_update/test_partial_update_complex_type.out
index ae7ed3b79b9..6f6a385a359 100644
Binary files
a/regression-test/data/unique_with_mow_p0/partial_update/test_partial_update_complex_type.out
and
b/regression-test/data/unique_with_mow_p0/partial_update/test_partial_update_complex_type.out
differ
diff --git
a/regression-test/suites/unique_with_mow_p0/partial_update/test_partial_update_complex_type.groovy
b/regression-test/suites/unique_with_mow_p0/partial_update/test_partial_update_complex_type.groovy
index ebd32310fd2..fc3cb097080 100644
---
a/regression-test/suites/unique_with_mow_p0/partial_update/test_partial_update_complex_type.groovy
+++
b/regression-test/suites/unique_with_mow_p0/partial_update/test_partial_update_complex_type.groovy
@@ -1,4 +1,3 @@
-
// 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
@@ -32,7 +31,7 @@ suite("test_primary_key_partial_update_complex_type", "p0") {
// 2. the combination of map type and row store may result in
bugs, so we skip map type in temporary
//
// create table
- sql """ DROP TABLE IF EXISTS ${tableName} """
+ sql """ DROP TABLE IF EXISTS ${tableName} FORCE"""
sql """ CREATE TABLE ${tableName} (
`id` int(11) NOT NULL COMMENT "用户 ID",
`c_varchar` varchar(65533) NULL COMMENT "用户姓名",
@@ -120,8 +119,36 @@ suite("test_primary_key_partial_update_complex_type",
"p0") {
select * from ${tableName} order by id;
"""
- // drop table
- sql """ DROP TABLE IF EXISTS ${tableName} """
+ // create table for NOT NULL tests
+ def tableName2 = "${tableName}_not_null"
+ sql """ DROP TABLE IF EXISTS ${tableName2} FORCE"""
+ sql """ CREATE TABLE ${tableName2} (
+ `id` int(11) NOT NULL COMMENT "用户 ID",
+ `c_varchar` varchar(65533) NULL COMMENT "用户姓名",
+ `c_jsonb` JSONB NOT NULL,
+ `c_array` ARRAY<INT> NOT NULL,
+ `c_struct` STRUCT<a:INT, b:INT> NOT NULL,
+ `c_map` MAP<STRING,int> not null)
+ UNIQUE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1
+ PROPERTIES("replication_num" = "1",
"enable_unique_key_merge_on_write" = "true",
+ "store_row_column" = "${use_row_store}"); """
+
+ sql """insert into ${tableName2} values(2, "doris2", '{"jsonk2":
333, "jsonk4": 444}', [300, 400], {3, 4}, {'a': 2})"""
+ sql """insert into ${tableName2} values(1, "doris1", '{"jsonk1":
123, "jsonk2": 456}', [100, 200], {1, 2}, {'b': 3})"""
+ sql """insert into ${tableName2} values(3, "doris3", '{"jsonk3":
456, "jsonk5": 789}', [600, 400], {2, 7}, {'cccc': 10})"""
+ String sql1 = "delete from ${tableName2} where id<=2;"
+ explain {
+ sql sql1
+ contains "IS_PARTIAL_UPDATE: true"
+ }
+ sql(sql1)
+
+ qt_sql """ select *,__DORIS_VERSION_COL__,__DORIS_DELETE_SIGN__
from ${tableName2} order by id,__DORIS_VERSION_COL__;"""
+ sql "set skip_delete_bitmap=true;"
+ sql "set skip_delete_sign=true;"
+ qt_sql """ select *,__DORIS_VERSION_COL__,__DORIS_DELETE_SIGN__
from ${tableName2} order by id,__DORIS_VERSION_COL__;"""
+ sql "set skip_delete_bitmap=false;"
+ sql "set skip_delete_sign=false;"
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]