This is an automated email from the ASF dual-hosted git repository.

kxiao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new fcc4cfb9009 [Fix](Variant) add more info before crash in serialization 
(#29344)
fcc4cfb9009 is described below

commit fcc4cfb9009ba146de23b75a58475469c563befc
Author: lihangyu <15605149...@163.com>
AuthorDate: Sun Dec 31 11:17:36 2023 +0800

    [Fix](Variant) add more info before crash in serialization (#29344)
---
 be/src/vec/columns/column_object.cpp                     | 8 ++++++++
 regression-test/suites/variant_p0/desc.groovy            | 2 +-
 regression-test/suites/variant_p0/load.groovy            | 2 +-
 regression-test/suites/variant_p0/with_index/load.groovy | 2 +-
 regression-test/suites/variant_p2/load.groovy            | 2 +-
 5 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/be/src/vec/columns/column_object.cpp 
b/be/src/vec/columns/column_object.cpp
index 782a2967f03..fb2bf8c9072 100644
--- a/be/src/vec/columns/column_object.cpp
+++ b/be/src/vec/columns/column_object.cpp
@@ -1079,6 +1079,14 @@ bool ColumnObject::serialize_one_row_to_json_format(int 
row, rapidjson::StringBu
     VLOG_DEBUG << "dump structure " << 
JsonFunctions::print_json_value(*doc_structure);
 #endif
     for (const auto& subcolumn : subcolumns) {
+        if (subcolumn->data.data.empty() || 
subcolumn->data.get_finalized_column_ptr() == nullptr) {
+            // TODO this is a tmp defensive code to prevent from crash and
+            // print more info about crash info
+            LOG(WARNING) << "Dump crash debug info"
+                         << ", structure:" << 
JsonFunctions::print_json_value(*doc_structure)
+                         << ", num_rows: " << num_rows << ", row_position: " 
<< row;
+            return false;
+        }
         find_and_set_leave_value(subcolumn->data.get_finalized_column_ptr(), 
subcolumn->path,
                                  
subcolumn->data.get_least_common_type_serde(), root,
                                  doc_structure->GetAllocator(), row);
diff --git a/regression-test/suites/variant_p0/desc.groovy 
b/regression-test/suites/variant_p0/desc.groovy
index 1ccbaecb6c6..281893dd428 100644
--- a/regression-test/suites/variant_p0/desc.groovy
+++ b/regression-test/suites/variant_p0/desc.groovy
@@ -107,7 +107,7 @@ suite("regression_test_variant_desc", "nonConcurrent"){
         table_name = "no_sparse_columns"
         create_table.call(table_name, "4")
         sql "set enable_two_phase_read_opt = false;"
-        set_be_config.call("variant_ratio_of_defaults_as_sparse_column", "1")
+        set_be_config.call("variant_ratio_of_defaults_as_sparse_column", "1.0")
         sql """insert into  ${table_name} select 0, '{"a": 11245, "b" : [123, 
{"xx" : 1}], "c" : {"c" : 456, "d" : null, "e" : 7.111}}'  as json_str
             union  all select 0, '{"a": 1123}' as json_str union all select 0, 
'{"a" : 1234, "xxxx" : "kaana"}' as json_str from numbers("number" = "4096") 
limit 4096 ;"""
         qt_sql_3 """desc ${table_name}"""
diff --git a/regression-test/suites/variant_p0/load.groovy 
b/regression-test/suites/variant_p0/load.groovy
index b23ae19d12f..a8793bddec1 100644
--- a/regression-test/suites/variant_p0/load.groovy
+++ b/regression-test/suites/variant_p0/load.groovy
@@ -289,7 +289,7 @@ suite("regression_test_variant", "variant_type"){
         create_table.call(table_name, "4")
         // sql "set enable_two_phase_read_opt = false;"
         // no sparse columns
-        set_be_config.call("variant_ratio_of_defaults_as_sparse_column", "1")
+        set_be_config.call("variant_ratio_of_defaults_as_sparse_column", "1.0")
         load_json_data.call(table_name, """${getS3Url() + 
'/load/logdata.json'}""")
         qt_sql_32 """ select json_extract(v, "\$.json.parseFailed") from 
logdata where  json_extract(v, "\$.json.parseFailed") != 'null' order by k 
limit 1;"""
         qt_sql_32_1 """select cast(v:json.parseFailed as string) from  logdata 
where cast(v:json.parseFailed as string) is not null and k = 162 limit 1;"""
diff --git a/regression-test/suites/variant_p0/with_index/load.groovy 
b/regression-test/suites/variant_p0/with_index/load.groovy
index e124629169e..f4bda1216eb 100644
--- a/regression-test/suites/variant_p0/with_index/load.groovy
+++ b/regression-test/suites/variant_p0/with_index/load.groovy
@@ -43,7 +43,7 @@ suite("regression_test_variant_with_index", "nonConcurrent"){
         }
         assertTrue(useTime <= OpTimeout, "wait_for_latest_op_on_table_finish 
timeout")
     }
-    set_be_config.call("variant_ratio_of_defaults_as_sparse_column", "0")
+    set_be_config.call("variant_ratio_of_defaults_as_sparse_column", "1.0")
     set_be_config.call("variant_threshold_rows_to_estimate_sparse_column", "0")
     def table_name = "var_with_index"
     sql "DROP TABLE IF EXISTS var_with_index"
diff --git a/regression-test/suites/variant_p2/load.groovy 
b/regression-test/suites/variant_p2/load.groovy
index 5813d02fb63..2d232e1e255 100644
--- a/regression-test/suites/variant_p2/load.groovy
+++ b/regression-test/suites/variant_p2/load.groovy
@@ -88,7 +88,7 @@ suite("github_event_advance_p2", "variant_type,p2"){
 
     try {
         def table_name = "github_events"
-        set_be_config.call("variant_ratio_of_defaults_as_sparse_column", "1")
+        set_be_config.call("variant_ratio_of_defaults_as_sparse_column", "1.0")
         def s3load_paral_wait = {tbl, fmt, path, paral ->
             String ak = getS3AK()
             String sk = getS3SK()


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to