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