diff --git a/be/src/exec/es/es_scroll_parser.cpp b/be/src/exec/es/es_scroll_parser.cpp index 21583c2a9fdecd..f8dfbd0d85e4f3 100644 --- a/be/src/exec/es/es_scroll_parser.cpp +++ b/be/src/exec/es/es_scroll_parser.cpp @@ -418,6 +418,159 @@ Status insert_int_value(const rapidjson::Value& col, PrimitiveType type, return parse_and_insert_data(col); } +template +Status handle_value(const rapidjson::Value& col, PrimitiveType sub_type, bool pure_doc_value, + T& val) { + RETURN_IF_ERROR(get_int_value(col, sub_type, &val, pure_doc_value)); + return Status::OK(); +} + +template <> +Status handle_value(const rapidjson::Value& col, PrimitiveType sub_type, bool pure_doc_value, + float& val) { + RETURN_IF_ERROR(get_float_value(col, sub_type, &val, pure_doc_value)); + return Status::OK(); +} + +template <> +Status handle_value(const rapidjson::Value& col, PrimitiveType sub_type, + bool pure_doc_value, double& val) { + RETURN_IF_ERROR(get_float_value(col, sub_type, &val, pure_doc_value)); + return Status::OK(); +} + +template <> +Status handle_value(const rapidjson::Value& col, PrimitiveType sub_type, + bool pure_doc_value, std::string& val) { + RETURN_ERROR_IF_COL_IS_ARRAY(col, sub_type, true); + if (!col.IsString()) { + val = json_value_to_string(col); + } else { + val = col.GetString(); + } + return Status::OK(); +} + +template <> +Status handle_value(const rapidjson::Value& col, PrimitiveType sub_type, bool pure_doc_value, + bool& val) { + if (col.IsBool()) { + val = col.GetBool(); + return Status::OK(); + } + + if (col.IsNumber()) { + val = col.GetInt(); + return Status::OK(); + } + + bool is_nested_str = false; + if (pure_doc_value && col.IsArray() && !col.Empty() && col[0].IsBool()) { + val = col[0].GetBool(); + return Status::OK(); + } else if (pure_doc_value && col.IsArray() && !col.Empty() && col[0].IsString()) { + is_nested_str = true; + } else if (pure_doc_value && col.IsArray()) { + return Status::InternalError(ERROR_INVALID_COL_DATA, "BOOLEAN"); + } + + const rapidjson::Value& str_col = is_nested_str ? col[0] : col; + const std::string& str_val = str_col.GetString(); + size_t val_size = str_col.GetStringLength(); + StringParser::ParseResult result; + val = StringParser::string_to_bool(str_val.c_str(), val_size, &result); + RETURN_ERROR_IF_PARSING_FAILED(result, str_col, sub_type); + return Status::OK(); +} + +template +Status process_single_column(const rapidjson::Value& col, PrimitiveType sub_type, + bool pure_doc_value, vectorized::Array& array) { + T val; + RETURN_IF_ERROR(handle_value(col, sub_type, pure_doc_value, val)); + array.push_back(val); + return Status::OK(); +} + +template +Status process_column_array(const rapidjson::Value& col, PrimitiveType sub_type, + bool pure_doc_value, vectorized::Array& array) { + for (const auto& sub_col : col.GetArray()) { + RETURN_IF_ERROR(process_single_column(sub_col, sub_type, pure_doc_value, array)); + } + return Status::OK(); +} + +template +Status process_column(const rapidjson::Value& col, PrimitiveType sub_type, bool pure_doc_value, + vectorized::Array& array) { + if (!col.IsArray()) { + return process_single_column(col, sub_type, pure_doc_value, array); + } else { + return process_column_array(col, sub_type, pure_doc_value, array); + } +} + +template +Status process_date_column(const rapidjson::Value& col, PrimitiveType sub_type, bool pure_doc_value, + vectorized::Array& array, const cctz::time_zone& time_zone) { + if (!col.IsArray()) { + RT data; + RETURN_IF_ERROR( + (get_date_int(col, sub_type, pure_doc_value, &data, time_zone))); + array.push_back(data); + } else { + for (const auto& sub_col : col.GetArray()) { + RT data; + RETURN_IF_ERROR((get_date_int(sub_col, sub_type, pure_doc_value, &data, + time_zone))); + array.push_back(data); + } + } + return Status::OK(); +} + +Status ScrollParser::parse_column(const rapidjson::Value& col, PrimitiveType sub_type, + bool pure_doc_value, vectorized::Array& array, + const cctz::time_zone& time_zone) { + switch (sub_type) { + case TYPE_CHAR: + case TYPE_VARCHAR: + case TYPE_STRING: + return process_column(col, sub_type, pure_doc_value, array); + case TYPE_TINYINT: + return process_column(col, sub_type, pure_doc_value, array); + case TYPE_SMALLINT: + return process_column(col, sub_type, pure_doc_value, array); + case TYPE_INT: + return process_column(col, sub_type, pure_doc_value, array); + case TYPE_BIGINT: + return process_column(col, sub_type, pure_doc_value, array); + case TYPE_LARGEINT: + return process_column<__int128>(col, sub_type, pure_doc_value, array); + case TYPE_FLOAT: + return process_column(col, sub_type, pure_doc_value, array); + case TYPE_DOUBLE: + return process_column(col, sub_type, pure_doc_value, array); + case TYPE_BOOLEAN: + return process_column(col, sub_type, pure_doc_value, array); + // date/datetime v2 is the default type for catalog table, + // see https://github.com/apache/doris/pull/16304 + // No need to support date and datetime types. + case TYPE_DATEV2: { + return process_date_column, uint32_t>( + col, sub_type, pure_doc_value, array, time_zone); + } + case TYPE_DATETIMEV2: { + return process_date_column, uint64_t>( + col, sub_type, pure_doc_value, array, time_zone); + } + default: + LOG(ERROR) << "Do not support Array type: " << sub_type; + return Status::InternalError("Unsupported type"); + } +} + ScrollParser::ScrollParser(bool doc_value_mode) : _size(0), _line_index(0) {} ScrollParser::~ScrollParser() = default; @@ -687,125 +840,7 @@ Status ScrollParser::fill_columns(const TupleDescriptor* tuple_desc, case TYPE_ARRAY: { vectorized::Array array; const auto& sub_type = tuple_desc->slots()[i]->type().children[0].type; - RETURN_ERROR_IF_COL_IS_ARRAY(col, type, false); - for (const auto& sub_col : col.GetArray()) { - switch (sub_type) { - case TYPE_CHAR: - case TYPE_VARCHAR: - case TYPE_STRING: { - std::string val; - RETURN_ERROR_IF_COL_IS_ARRAY(sub_col, sub_type, true); - if (!sub_col.IsString()) { - val = json_value_to_string(sub_col); - } else { - val = sub_col.GetString(); - } - array.push_back(val); - break; - } - case TYPE_TINYINT: { - int8_t val; - RETURN_IF_ERROR(get_int_value(sub_col, sub_type, &val, pure_doc_value)); - array.push_back(val); - break; - } - case TYPE_SMALLINT: { - int16_t val; - RETURN_IF_ERROR( - get_int_value(sub_col, sub_type, &val, pure_doc_value)); - array.push_back(val); - break; - } - case TYPE_INT: { - int32 val; - RETURN_IF_ERROR(get_int_value(sub_col, sub_type, &val, pure_doc_value)); - array.push_back(val); - break; - } - case TYPE_BIGINT: { - int64_t val; - RETURN_IF_ERROR( - get_int_value(sub_col, sub_type, &val, pure_doc_value)); - array.push_back(val); - break; - } - case TYPE_LARGEINT: { - __int128 val; - RETURN_IF_ERROR( - get_int_value<__int128>(sub_col, sub_type, &val, pure_doc_value)); - array.push_back(val); - break; - } - case TYPE_FLOAT: { - float val {}; - RETURN_IF_ERROR( - get_float_value(sub_col, sub_type, &val, pure_doc_value)); - array.push_back(val); - break; - } - case TYPE_DOUBLE: { - double val {}; - RETURN_IF_ERROR( - get_float_value(sub_col, sub_type, &val, pure_doc_value)); - array.push_back(val); - break; - } - case TYPE_BOOLEAN: { - if (sub_col.IsBool()) { - array.push_back(sub_col.GetBool()); - break; - } - - if (sub_col.IsNumber()) { - array.push_back(sub_col.GetInt()); - break; - } - - bool is_nested_str = false; - if (pure_doc_value && sub_col.IsArray() && !sub_col.Empty() && - sub_col[0].IsBool()) { - array.push_back(sub_col[0].GetBool()); - break; - } else if (pure_doc_value && sub_col.IsArray() && !sub_col.Empty() && - sub_col[0].IsString()) { - is_nested_str = true; - } else if (pure_doc_value && sub_col.IsArray()) { - return Status::InternalError(ERROR_INVALID_COL_DATA, "BOOLEAN"); - } - - const rapidjson::Value& str_col = is_nested_str ? sub_col[0] : sub_col; - - const std::string& val = str_col.GetString(); - size_t val_size = str_col.GetStringLength(); - StringParser::ParseResult result; - bool b = StringParser::string_to_bool(val.c_str(), val_size, &result); - RETURN_ERROR_IF_PARSING_FAILED(result, str_col, type); - array.push_back(b); - break; - } - // date/datetime v2 is the default type for catalog table, - // see https://github.com/apache/doris/pull/16304 - // No need to support date and datetime types. - case TYPE_DATEV2: { - uint32_t data; - RETURN_IF_ERROR((get_date_int, uint32_t>( - sub_col, sub_type, pure_doc_value, &data, time_zone))); - array.push_back(data); - break; - } - case TYPE_DATETIMEV2: { - uint64_t data; - RETURN_IF_ERROR((get_date_int, uint64_t>( - sub_col, sub_type, pure_doc_value, &data, time_zone))); - array.push_back(data); - break; - } - default: { - LOG(ERROR) << "Do not support Array type: " << sub_type; - break; - } - } - } + RETURN_IF_ERROR(parse_column(col, sub_type, pure_doc_value, array, time_zone)); col_ptr->insert(array); break; } diff --git a/be/src/exec/es/es_scroll_parser.h b/be/src/exec/es/es_scroll_parser.h index 91aeb4992a8835..06188833824881 100644 --- a/be/src/exec/es/es_scroll_parser.h +++ b/be/src/exec/es/es_scroll_parser.h @@ -47,6 +47,8 @@ class ScrollParser { int get_size() const; private: + Status parse_column(const rapidjson::Value& col, PrimitiveType sub_type, bool pure_doc_value, + vectorized::Array& array, const cctz::time_zone& time_zone); std::string _scroll_id; int _size; rapidjson::SizeType _line_index; diff --git a/docker/thirdparties/docker-compose/elasticsearch/scripts/data/composite_type_array_bulk.json b/docker/thirdparties/docker-compose/elasticsearch/scripts/data/composite_type_array_bulk.json index 8654ab25e6f076..6d84244316ad14 100755 --- a/docker/thirdparties/docker-compose/elasticsearch/scripts/data/composite_type_array_bulk.json +++ b/docker/thirdparties/docker-compose/elasticsearch/scripts/data/composite_type_array_bulk.json @@ -1,10 +1,10 @@ -{"name": "Andy", "sports": "soccer"} -{"name": "Betty", "sports": "pingpong ball"} -{"name": "Cindy", "sports": "武术"} -{"name": "David", "sports": ["volleyball"]} -{"name": "Emily", "sports": ["baseball", "golf", "hockey"]} -{"name": "Frank", "sports": ["rugby", "cricket", "boxing"]} -{"name": "Grace", "sports": ["table tennis", "badminton", "athletics"]} -{"name": "Henry", "sports": ["archery", "fencing", "weightlifting"]} -{"name": "Ivy", "sports": ["judo", "karate", "taekwondo"]} -{"name": "Jack", "sports": ["wrestling", "gymnastics", "surfing"]} \ No newline at end of file +{"name": "Andy", "sports": "soccer", "scores": 100} +{"name": "Betty", "sports": "pingpong ball", "scores": 90} +{"name": "Cindy", "sports": "武术", "scores": 89} +{"name": "David", "sports": ["volleyball"], "scores": [77]} +{"name": "Emily", "sports": ["baseball", "golf", "hockey"], "scores": [56, 78, 99]} +{"name": "Frank", "sports": ["rugby", "cricket", "boxing"], "scores": [45, 67, 88]} +{"name": "Grace", "sports": ["table tennis", "badminton", "athletics"], "scores": [34, 56, 78]} +{"name": "Henry", "sports": ["archery", "fencing", "weightlifting"], "scores": [23, 45, 67]} +{"name": "Ivy", "sports": ["judo", "karate", "taekwondo"], "scores": [12, 34, 56]} +{"name": "Jack", "sports": ["wrestling", "gymnastics", "surfing"], "scores": [1, 23, 45]} \ No newline at end of file diff --git a/docker/thirdparties/docker-compose/elasticsearch/scripts/index/array_meta_composite_type_array.json b/docker/thirdparties/docker-compose/elasticsearch/scripts/index/array_meta_composite_type_array.json index 9c55390149d67d..a9ccc1ab8504a4 100644 --- a/docker/thirdparties/docker-compose/elasticsearch/scripts/index/array_meta_composite_type_array.json +++ b/docker/thirdparties/docker-compose/elasticsearch/scripts/index/array_meta_composite_type_array.json @@ -2,7 +2,8 @@ "_meta": { "doris":{ "array_fields":[ - "sports" + "sports", + "scores" ] } } diff --git a/docker/thirdparties/docker-compose/elasticsearch/scripts/index/es6_composite_type_array.json b/docker/thirdparties/docker-compose/elasticsearch/scripts/index/es6_composite_type_array.json index 2921628cf380ae..3a38a8f22d37cd 100755 --- a/docker/thirdparties/docker-compose/elasticsearch/scripts/index/es6_composite_type_array.json +++ b/docker/thirdparties/docker-compose/elasticsearch/scripts/index/es6_composite_type_array.json @@ -7,7 +7,8 @@ "doc": { "properties": { "name": { "type": "keyword" }, - "sports": { "type": "keyword", "doc_values": false} + "sports": { "type": "keyword", "doc_values": false}, + "scores": { "type": "integer", "doc_values": false} } } } diff --git a/docker/thirdparties/docker-compose/elasticsearch/scripts/index/es7_composite_type_array.json b/docker/thirdparties/docker-compose/elasticsearch/scripts/index/es7_composite_type_array.json index 8fdd6c88ce765b..3529cc61eb758f 100644 --- a/docker/thirdparties/docker-compose/elasticsearch/scripts/index/es7_composite_type_array.json +++ b/docker/thirdparties/docker-compose/elasticsearch/scripts/index/es7_composite_type_array.json @@ -6,7 +6,8 @@ "mappings": { "properties": { "name": { "type": "keyword" }, - "sports": { "type": "keyword", "doc_values": false} + "sports": { "type": "keyword", "doc_values": false}, + "scores": { "type": "integer", "doc_values": false} } } } diff --git a/regression-test/data/external_table_p0/es/test_es_query.out b/regression-test/data/external_table_p0/es/test_es_query.out index e820e16553c8e1..9b9cabd4ceac6a 100644 --- a/regression-test/data/external_table_p0/es/test_es_query.out +++ b/regression-test/data/external_table_p0/es/test_es_query.out @@ -20,10 +20,6 @@ I'm not null or empty I'm not null or empty -- !sql06 -- -\N -\N -\N - I'm not null or empty -- !sql07 -- @@ -210,6 +206,17 @@ text_ignore_above_10 2022-08-08T20:10:10 2022-08-08T20:10:10 +-- !sql_5_27 -- +Andy [100] ["soccer"] +Betty [90] ["pingpong ball"] +Cindy [89] ["武术"] +David [77] ["volleyball"] +Emily [56, 78, 99] ["baseball", "golf", "hockey"] +Frank [45, 67, 88] ["rugby", "cricket", "boxing"] +Grace [34, 56, 78] ["table tennis", "badminton", "athletics"] +Henry [23, 45, 67] ["archery", "fencing", "weightlifting"] +Ivy [12, 34, 56] ["judo", "karate", "taekwondo"] + -- !sql_6_02 -- [1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"] ["a", "b", "c"] [-1, 0, 1, 2] [{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128, 129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3] [{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10 @@ -325,6 +332,17 @@ text_ignore_above_10 2022-08-08T20:10:10 2022-08-08T20:10:10 +-- !sql_6_27 -- +Andy [100] ["soccer"] +Betty [90] ["pingpong ball"] +Cindy [89] ["武术"] +David [77] ["volleyball"] +Emily [56, 78, 99] ["baseball", "golf", "hockey"] +Frank [45, 67, 88] ["rugby", "cricket", "boxing"] +Grace [34, 56, 78] ["table tennis", "badminton", "athletics"] +Henry [23, 45, 67] ["archery", "fencing", "weightlifting"] +Ivy [12, 34, 56] ["judo", "karate", "taekwondo"] + -- !sql_7_02 -- [1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"] ["a", "b", "c"] [-1, 0, 1, 2] [{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128, 129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3] [{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug \N This string can be quite lengthy string1 2022-08-08T20:10:10 text#1 3.14 2022-08-08T00:00 2022-08-08T12:10:10 1659931810000 2022-08-08T12:10:10 2022-08-08T20:10:10 12345 @@ -482,6 +500,17 @@ text_ignore_above_10 1660191010000 1660191010000 +-- !sql_7_34 -- +Andy [100] ["soccer"] +Betty [90] ["pingpong ball"] +Cindy [89] ["武术"] +David [77] ["volleyball"] +Emily [56, 78, 99] ["baseball", "golf", "hockey"] +Frank [45, 67, 88] ["rugby", "cricket", "boxing"] +Grace [34, 56, 78] ["table tennis", "badminton", "athletics"] +Henry [23, 45, 67] ["archery", "fencing", "weightlifting"] +Ivy [12, 34, 56] ["judo", "karate", "taekwondo"] + -- !sql_7_50 -- value1 value2 @@ -639,6 +668,17 @@ text_ignore_above_10 1660191010000 1660191010000 +-- !sql_8_32 -- +Andy [100] ["soccer"] +Betty [90] ["pingpong ball"] +Cindy [89] ["武术"] +David [77] ["volleyball"] +Emily [56, 78, 99] ["baseball", "golf", "hockey"] +Frank [45, 67, 88] ["rugby", "cricket", "boxing"] +Grace [34, 56, 78] ["table tennis", "badminton", "athletics"] +Henry [23, 45, 67] ["archery", "fencing", "weightlifting"] +Ivy [12, 34, 56] ["judo", "karate", "taekwondo"] + -- !sql01 -- ["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3] ["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1 [1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01", "2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4] ["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}] 2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2, -3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770] \N [{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] @@ -660,10 +700,6 @@ I'm not null or empty I'm not null or empty -- !sql06 -- -\N -\N -\N - I'm not null or empty -- !sql07 -- @@ -850,6 +886,17 @@ text_ignore_above_10 2022-08-08T20:10:10 2022-08-08T20:10:10 +-- !sql_5_27 -- +Andy [100] ["soccer"] +Betty [90] ["pingpong ball"] +Cindy [89] ["武术"] +David [77] ["volleyball"] +Emily [56, 78, 99] ["baseball", "golf", "hockey"] +Frank [45, 67, 88] ["rugby", "cricket", "boxing"] +Grace [34, 56, 78] ["table tennis", "badminton", "athletics"] +Henry [23, 45, 67] ["archery", "fencing", "weightlifting"] +Ivy [12, 34, 56] ["judo", "karate", "taekwondo"] + -- !sql_6_02 -- [1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"] ["a", "b", "c"] [-1, 0, 1, 2] [{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128, 129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3] [{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10 @@ -965,6 +1012,17 @@ text_ignore_above_10 2022-08-08T20:10:10 2022-08-08T20:10:10 +-- !sql_6_27 -- +Andy [100] ["soccer"] +Betty [90] ["pingpong ball"] +Cindy [89] ["武术"] +David [77] ["volleyball"] +Emily [56, 78, 99] ["baseball", "golf", "hockey"] +Frank [45, 67, 88] ["rugby", "cricket", "boxing"] +Grace [34, 56, 78] ["table tennis", "badminton", "athletics"] +Henry [23, 45, 67] ["archery", "fencing", "weightlifting"] +Ivy [12, 34, 56] ["judo", "karate", "taekwondo"] + -- !sql_7_02 -- [1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"] ["a", "b", "c"] [-1, 0, 1, 2] [{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128, 129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3] [{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug \N This string can be quite lengthy string1 2022-08-08T20:10:10 text#1 3.14 2022-08-08T00:00 2022-08-08T12:10:10 1659931810000 2022-08-08T12:10:10 2022-08-08T20:10:10 12345 @@ -1122,6 +1180,17 @@ text_ignore_above_10 1660191010000 1660191010000 +-- !sql_7_34 -- +Andy [100] ["soccer"] +Betty [90] ["pingpong ball"] +Cindy [89] ["武术"] +David [77] ["volleyball"] +Emily [56, 78, 99] ["baseball", "golf", "hockey"] +Frank [45, 67, 88] ["rugby", "cricket", "boxing"] +Grace [34, 56, 78] ["table tennis", "badminton", "athletics"] +Henry [23, 45, 67] ["archery", "fencing", "weightlifting"] +Ivy [12, 34, 56] ["judo", "karate", "taekwondo"] + -- !sql_7_50 -- value1 value2 @@ -1279,3 +1348,14 @@ text_ignore_above_10 1660191010000 1660191010000 +-- !sql_8_32 -- +Andy [100] ["soccer"] +Betty [90] ["pingpong ball"] +Cindy [89] ["武术"] +David [77] ["volleyball"] +Emily [56, 78, 99] ["baseball", "golf", "hockey"] +Frank [45, 67, 88] ["rugby", "cricket", "boxing"] +Grace [34, 56, 78] ["table tennis", "badminton", "athletics"] +Henry [23, 45, 67] ["archery", "fencing", "weightlifting"] +Ivy [12, 34, 56] ["judo", "karate", "taekwondo"] + diff --git a/regression-test/suites/external_table_p0/es/test_es_query.groovy b/regression-test/suites/external_table_p0/es/test_es_query.groovy index af1f270fd52c8a..872c465e96badf 100644 --- a/regression-test/suites/external_table_p0/es/test_es_query.groovy +++ b/regression-test/suites/external_table_p0/es/test_es_query.groovy @@ -212,13 +212,7 @@ suite("test_es_query", "p0,external,es,external_docker,external_docker_es") { order_qt_sql_5_24 """select test2 from test1;""" order_qt_sql_5_25 """select test6 from test1;""" order_qt_sql_5_26 """select test6 from test2;""" - try { - sql """select * from composite_type_array;""" - fail("Should not reach here") - } catch (Exception e) { - logger.error(e.getMessage()) - assertTrue(e.getMessage().contains("Expected value of type: ARRAY; but found type: Varchar/Char; Document slice is : \"soccer\"")) - } + order_qt_sql_5_27 """select * from composite_type_array order by name;""" sql """switch test_es_query_es6""" // order_qt_sql_6_01 """show tables""" @@ -247,12 +241,7 @@ suite("test_es_query", "p0,external,es,external_docker,external_docker_es") { order_qt_sql_6_24 """select test2 from test1;""" order_qt_sql_6_25 """select test6 from test1;""" order_qt_sql_6_26 """select test6 from test2;""" - try { - sql """select * from composite_type_array;""" - fail("Should not reach here") - } catch (Exception e) { - assertTrue(e.getMessage().contains("Expected value of type: ARRAY; but found type: Varchar/Char; Document slice is : \"soccer\"")) - } + order_qt_sql_6_27 """select * from composite_type_array order by name;""" List> tables6N = sql """show tables""" boolean notContainHide = true @@ -307,12 +296,7 @@ suite("test_es_query", "p0,external,es,external_docker,external_docker_es") { order_qt_sql_7_31 """select test2 from test1;""" order_qt_sql_7_32 """select test6 from test1;""" order_qt_sql_7_33 """select test6 from test2;""" - try { - sql """select * from composite_type_array;""" - fail("Should not reach here") - } catch (Exception e) { - assertTrue(e.getMessage().contains("Expected value of type: ARRAY; but found type: Varchar/Char; Document slice is : \"soccer\"")) - } + order_qt_sql_7_34 """select * from composite_type_array order by name;""" List> tables7N = sql """show tables""" boolean notContainHide7 = true @@ -367,12 +351,7 @@ suite("test_es_query", "p0,external,es,external_docker,external_docker_es") { order_qt_sql_8_29 """select test2 from test1;""" order_qt_sql_8_30 """select test6 from test1;""" order_qt_sql_8_31 """select test6 from test2;""" - try { - sql """select * from composite_type_array;""" - fail("Should not reach here") - } catch (Exception e) { - assertTrue(e.getMessage().contains("Expected value of type: ARRAY; but found type: Varchar/Char; Document slice is : \"soccer\"")) - } + order_qt_sql_8_32 """select * from composite_type_array order by name;""" }