diff --git a/be/src/vec/functions/function_string.h b/be/src/vec/functions/function_string.h index e1c67bb059f301..dbcafa78a9c905 100644 --- a/be/src/vec/functions/function_string.h +++ b/be/src/vec/functions/function_string.h @@ -122,6 +122,7 @@ struct StringOP { static void push_value_string(const std::string_view& string_value, int index, ColumnString::Chars& chars, ColumnString::Offsets& offsets) { + DCHECK(string_value.data() != nullptr); ColumnString::check_chars_length(chars.size() + string_value.size(), offsets.size()); chars.insert(string_value.data(), string_value.data() + string_value.size()); @@ -3170,6 +3171,9 @@ class FunctionStringParseUrl : public IFunction { StringOP::push_null_string(i, res_chars, res_offsets, null_map_data); continue; } + } else if (parse_res.empty()) { + StringOP::push_empty_string(i, res_chars, res_offsets); + continue; } StringOP::push_value_string(std::string_view(parse_res.data, parse_res.size), i, diff --git a/be/test/vec/function/function_string_test.cpp b/be/test/vec/function/function_string_test.cpp index fd6ecca2f5d392..935ea3367e2b67 100644 --- a/be/test/vec/function/function_string_test.cpp +++ b/be/test/vec/function/function_string_test.cpp @@ -1051,7 +1051,12 @@ TEST(function_string_test, function_parse_url_test) { {std::string("9090")}}, {{std::string("http://www.baidu.com/a/b/c?a=b"), std::string("PORT")}, {Null()}}, {{std::string("http://fb.com/path/p1.p?q=1#f"), std::string("QUERY")}, - {std::string("q=1")}}}; + {std::string("q=1")}}, + {{std::string( + "https://www.facebook.com/aa/bb?returnpage=https://www.facebook.com/"), + std::string("HosT")}, + std::string("www.facebook.com")}, + {{std::string("http://www.baidu.com"), std::string("FILE")}, {std::string("")}}}; static_cast(check_function(func_name, input_types, data_set)); } diff --git a/regression-test/data/load_p0/broker_load/test_s3_load_with_load_parallelism.out b/regression-test/data/load_p0/broker_load/test_s3_load_with_load_parallelism.out index 7f63e400c3de55..f291dec5a0a0ed 100644 --- a/regression-test/data/load_p0/broker_load/test_s3_load_with_load_parallelism.out +++ b/regression-test/data/load_p0/broker_load/test_s3_load_with_load_parallelism.out @@ -2,3 +2,7 @@ -- !sql -- 5000000 +-- !sql -- +www.facebook.com +www.google.com /test?name=abc&age=20 +