diff --git a/be/src/vec/functions/function_jsonb.cpp b/be/src/vec/functions/function_jsonb.cpp index ed6cf23fc6..d89d1ef120 100644 --- a/be/src/vec/functions/function_jsonb.cpp +++ b/be/src/vec/functions/function_jsonb.cpp @@ -82,7 +82,8 @@ private: bool has_const_default_value = false; public: - static constexpr auto name = "jsonb_parse"; + static constexpr auto name = "json_parse"; + static constexpr auto alias = "jsonb_parse"; static FunctionPtr create() { return std::make_shared(); } String get_name() const override { @@ -328,6 +329,7 @@ template class FunctionJsonbExtract : public IFunction { public: static constexpr auto name = Impl::name; + static constexpr auto alias = Impl::alias; static FunctionPtr create() { return std::make_shared(); } String get_name() const override { return name; } size_t get_number_of_arguments() const override { return 2; } @@ -760,39 +762,48 @@ struct JsonbTypeType { }; struct JsonbExists : public JsonbExtractImpl { - static constexpr auto name = "jsonb_exists_path"; + static constexpr auto name = "json_exists_path"; + static constexpr auto alias = "jsonb_exists_path"; }; struct JsonbExtractIsnull : public JsonbExtractImpl { - static constexpr auto name = "jsonb_extract_isnull"; + static constexpr auto name = "json_extract_isnull"; + static constexpr auto alias = "jsonb_extract_isnull"; }; struct JsonbExtractBool : public JsonbExtractImpl { - static constexpr auto name = "jsonb_extract_bool"; + static constexpr auto name = "json_extract_bool"; + static constexpr auto alias = "jsonb_extract_bool"; }; struct JsonbExtractInt : public JsonbExtractImpl { - static constexpr auto name = "jsonb_extract_int"; + static constexpr auto name = "json_extract_int"; + static constexpr auto alias = "jsonb_extract_int"; }; struct JsonbExtractBigInt : public JsonbExtractImpl { - static constexpr auto name = "jsonb_extract_bigint"; + static constexpr auto name = "json_extract_bigint"; + static constexpr auto alias = "jsonb_extract_bigint"; }; struct JsonbExtractDouble : public JsonbExtractImpl { - static constexpr auto name = "jsonb_extract_double"; + static constexpr auto name = "json_extract_double"; + static constexpr auto alias = "jsonb_extract_double"; }; struct JsonbExtractString : public JsonbExtractStringImpl { - static constexpr auto name = "jsonb_extract_string"; + static constexpr auto name = "json_extract_string"; + static constexpr auto alias = "jsonb_extract_string"; }; struct JsonbExtractJsonb : public JsonbExtractStringImpl { static constexpr auto name = "jsonb_extract"; + static constexpr auto alias = "jsonb_extract"; }; struct JsonbType : public JsonbExtractStringImpl { - static constexpr auto name = "jsonb_type"; + static constexpr auto name = "json_type"; + static constexpr auto alias = "jsonb_type"; }; using FunctionJsonbExists = FunctionJsonbExtract; @@ -807,35 +818,59 @@ using FunctionJsonbExtractString = FunctionJsonbExtract; using FunctionJsonbExtractJsonb = FunctionJsonbExtract; void register_function_jsonb(SimpleFunctionFactory& factory) { - factory.register_function("jsonb_parse"); - factory.register_function("jsonb_parse_error_to_null"); - factory.register_function("jsonb_parse_error_to_value"); - factory.register_function("jsonb_parse_error_to_invalid"); + factory.register_function(FunctionJsonbParse::name); + factory.register_alias(FunctionJsonbParse::name, FunctionJsonbParse::alias); + factory.register_function("json_parse_error_to_null"); + factory.register_alias("json_parse_error_to_null", "jsonb_parse_error_to_null"); + factory.register_function("json_parse_error_to_value"); + factory.register_alias("json_parse_error_to_value", "jsonb_parse_error_to_value"); + factory.register_function("json_parse_error_to_invalid"); + factory.register_alias("json_parse_error_to_invalid", "jsonb_parse_error_to_invalid"); - factory.register_function("jsonb_parse_nullable"); + factory.register_function("json_parse_nullable"); + factory.register_alias("json_parse_nullable", "jsonb_parse_nullable"); factory.register_function( - "jsonb_parse_nullable_error_to_null"); + "json_parse_nullable_error_to_null"); + factory.register_alias("json_parse_nullable_error_to_null", + "jsonb_parse_nullable_error_to_null"); factory.register_function( - "jsonb_parse_nullable_error_to_value"); + "json_parse_nullable_error_to_value"); + factory.register_alias("json_parse_nullable_error_to_value", + "jsonb_parse_nullable_error_to_value"); factory.register_function( - "jsonb_parse_nullable_error_to_invalid"); + "json_parse_nullable_error_to_invalid"); + factory.register_alias("json_parse_nullable_error_to_invalid", + "json_parse_nullable_error_to_invalid"); - factory.register_function("jsonb_parse_notnull"); + factory.register_function("json_parse_notnull"); + factory.register_alias("json_parse_notnull", "jsonb_parse_notnull"); factory.register_function( - "jsonb_parse_notnull_error_to_value"); + "json_parse_notnull_error_to_value"); + factory.register_alias("json_parse_notnull", "jsonb_parse_notnull"); factory.register_function( - "jsonb_parse_notnull_error_to_invalid"); + "json_parse_notnull_error_to_invalid"); + factory.register_alias("json_parse_notnull_error_to_invalid", + "jsonb_parse_notnull_error_to_invalid"); factory.register_function(); + factory.register_alias(FunctionJsonbExists::name, FunctionJsonbExists::alias); factory.register_function(); + factory.register_alias(FunctionJsonbType::name, FunctionJsonbType::alias); factory.register_function(); + factory.register_alias(FunctionJsonbExtractIsnull::name, FunctionJsonbExtractIsnull::alias); factory.register_function(); + factory.register_alias(FunctionJsonbExtractBool::name, FunctionJsonbExtractBool::alias); factory.register_function(); + factory.register_alias(FunctionJsonbExtractInt::name, FunctionJsonbExtractInt::alias); factory.register_function(); + factory.register_alias(FunctionJsonbExtractBigInt::name, FunctionJsonbExtractBigInt::alias); factory.register_function(); + factory.register_alias(FunctionJsonbExtractDouble::name, FunctionJsonbExtractDouble::alias); factory.register_function(); + factory.register_alias(FunctionJsonbExtractString::name, FunctionJsonbExtractString::alias); factory.register_function(); + // factory.register_alias(FunctionJsonbExtractJsonb::name, FunctionJsonbExtractJsonb::alias); } } // namespace doris::vectorized diff --git a/be/test/vec/function/function_jsonb_test.cpp b/be/test/vec/function/function_jsonb_test.cpp index d70fda9981..fe2052e9f1 100644 --- a/be/test/vec/function/function_jsonb_test.cpp +++ b/be/test/vec/function/function_jsonb_test.cpp @@ -35,7 +35,7 @@ namespace doris::vectorized { using namespace ut_type; TEST(FunctionJsonbTEST, JsonbParseTest) { - std::string func_name = "jsonb_parse"; + std::string func_name = "json_parse"; InputTypeSet input_types = {Nullable {TypeIndex::String}}; DataSet data_set_valid = { @@ -94,7 +94,7 @@ TEST(FunctionJsonbTEST, JsonbParseTest) { } TEST(FunctionJsonbTEST, JsonbParseErrorToNullTest) { - std::string func_name = "jsonb_parse_error_to_null"; + std::string func_name = "json_parse_error_to_null"; InputTypeSet input_types = {Nullable {TypeIndex::String}}; DataSet data_set = { @@ -129,7 +129,7 @@ TEST(FunctionJsonbTEST, JsonbParseErrorToNullTest) { } TEST(FunctionJsonbTEST, JsonbParseErrorToValueTest) { - std::string func_name = "jsonb_parse_error_to_value"; + std::string func_name = "json_parse_error_to_value"; InputTypeSet input_types = {Nullable {TypeIndex::String}, TypeIndex::String}; DataSet data_set = { @@ -167,7 +167,7 @@ TEST(FunctionJsonbTEST, JsonbParseErrorToValueTest) { } TEST(FunctionJsonbTEST, JsonbParseErrorToInvalidTest) { - std::string func_name = "jsonb_parse_error_to_invalid"; + std::string func_name = "json_parse_error_to_invalid"; InputTypeSet input_types = {Nullable {TypeIndex::String}}; DataSet data_set = { @@ -202,7 +202,7 @@ TEST(FunctionJsonbTEST, JsonbParseErrorToInvalidTest) { } TEST(FunctionJsonbTEST, JsonbParseNullableTest) { - std::string func_name = "jsonb_parse_nullable"; + std::string func_name = "json_parse_nullable"; InputTypeSet input_types = {TypeIndex::String}; DataSet data_set_valid = { @@ -261,7 +261,7 @@ TEST(FunctionJsonbTEST, JsonbParseNullableTest) { } TEST(FunctionJsonbTEST, JsonbParseNullableErrorToNullTest) { - std::string func_name = "jsonb_parse_nullable_error_to_null"; + std::string func_name = "json_parse_nullable_error_to_null"; InputTypeSet input_types = {TypeIndex::String}; DataSet data_set = { @@ -296,7 +296,7 @@ TEST(FunctionJsonbTEST, JsonbParseNullableErrorToNullTest) { } TEST(FunctionJsonbTEST, JsonbParseNullableErrorToValueTest) { - std::string func_name = "jsonb_parse_nullable_error_to_value"; + std::string func_name = "json_parse_nullable_error_to_value"; InputTypeSet input_types = {TypeIndex::String, TypeIndex::String}; DataSet data_set = { @@ -334,7 +334,7 @@ TEST(FunctionJsonbTEST, JsonbParseNullableErrorToValueTest) { } TEST(FunctionJsonbTEST, JsonbParseNullableErrorToInvalidTest) { - std::string func_name = "jsonb_parse_nullable_error_to_invalid"; + std::string func_name = "json_parse_nullable_error_to_invalid"; InputTypeSet input_types = {TypeIndex::String}; DataSet data_set = { @@ -369,7 +369,7 @@ TEST(FunctionJsonbTEST, JsonbParseNullableErrorToInvalidTest) { } TEST(FunctionJsonbTEST, JsonbParseNotnullTest) { - std::string func_name = "jsonb_parse_notnull"; + std::string func_name = "json_parse_notnull"; InputTypeSet input_types = {TypeIndex::String}; DataSet data_set_valid = { @@ -427,7 +427,7 @@ TEST(FunctionJsonbTEST, JsonbParseNotnullTest) { } TEST(FunctionJsonbTEST, JsonbParseNotnullErrorToValueTest) { - std::string func_name = "jsonb_parse_notnull_error_to_value"; + std::string func_name = "json_parse_notnull_error_to_value"; InputTypeSet input_types = {TypeIndex::String, TypeIndex::String}; DataSet data_set = { @@ -464,7 +464,7 @@ TEST(FunctionJsonbTEST, JsonbParseNotnullErrorToValueTest) { } TEST(FunctionJsonbTEST, JsonbParseNotnullErrorToInvalidTest) { - std::string func_name = "jsonb_parse_notnull_error_to_invalid"; + std::string func_name = "json_parse_notnull_error_to_invalid"; InputTypeSet input_types = {TypeIndex::String}; DataSet data_set = { @@ -501,7 +501,7 @@ TEST(FunctionJsonbTEST, JsonbExtractTest) { std::string func_name = "jsonb_extract"; InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String}; - // jsonb_extract root + // json_extract root DataSet data_set = { {{Null(), STRING("$")}, Null()}, {{STRING("null"), STRING("$")}, STRING("null")}, @@ -528,7 +528,7 @@ TEST(FunctionJsonbTEST, JsonbExtractTest) { check_function(func_name, input_types, data_set); - // jsonb_extract obejct + // json_extract obejct data_set = { {{Null(), STRING("$.k1")}, Null()}, {{STRING("null"), STRING("$.k1")}, Null()}, @@ -553,7 +553,7 @@ TEST(FunctionJsonbTEST, JsonbExtractTest) { check_function(func_name, input_types, data_set); - // jsonb_extract array + // json_extract array data_set = { {{Null(), STRING("$[0]")}, Null()}, {{STRING("null"), STRING("$[0]")}, Null()}, @@ -614,7 +614,7 @@ TEST(FunctionJsonbTEST, JsonbExtractTest) { check_function(func_name, input_types, data_set); - // jsonb_extract $[0].k1 + // json_extract $[0].k1 data_set = { {{Null(), STRING("$[0].k1")}, Null()}, {{STRING("null"), STRING("$[0].k1")}, Null()}, @@ -641,10 +641,10 @@ TEST(FunctionJsonbTEST, JsonbExtractTest) { } TEST(FunctionJsonbTEST, JsonbExtractStringTest) { - std::string func_name = "jsonb_extract_string"; + std::string func_name = "json_extract_string"; InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String}; - // jsonb_extract root + // json_extract root DataSet data_set = { {{Null(), STRING("$")}, Null()}, {{STRING("null"), STRING("$")}, STRING("null")}, @@ -671,7 +671,7 @@ TEST(FunctionJsonbTEST, JsonbExtractStringTest) { check_function(func_name, input_types, data_set); - // jsonb_extract obejct + // json_extract obejct data_set = { {{Null(), STRING("$.k1")}, Null()}, {{STRING("null"), STRING("$.k1")}, Null()}, @@ -696,7 +696,7 @@ TEST(FunctionJsonbTEST, JsonbExtractStringTest) { check_function(func_name, input_types, data_set); - // jsonb_extract array + // json_extract array data_set = { {{Null(), STRING("$[0]")}, Null()}, {{STRING("null"), STRING("$[0]")}, Null()}, @@ -757,7 +757,7 @@ TEST(FunctionJsonbTEST, JsonbExtractStringTest) { check_function(func_name, input_types, data_set); - // jsonb_extract $[0].k1 + // json_extract $[0].k1 data_set = { {{Null(), STRING("$[0].k1")}, Null()}, {{STRING("null"), STRING("$[0].k1")}, Null()}, @@ -784,10 +784,10 @@ TEST(FunctionJsonbTEST, JsonbExtractStringTest) { } TEST(FunctionJsonbTEST, JsonbExtractIntTest) { - std::string func_name = "jsonb_extract_int"; + std::string func_name = "json_extract_int"; InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String}; - // jsonb_extract root + // json_extract root DataSet data_set = { {{Null(), STRING("$")}, Null()}, {{STRING("null"), STRING("$")}, Null()}, @@ -812,7 +812,7 @@ TEST(FunctionJsonbTEST, JsonbExtractIntTest) { check_function(func_name, input_types, data_set); - // jsonb_extract obejct + // json_extract obejct data_set = { {{Null(), STRING("$.k1")}, Null()}, {{STRING("null"), STRING("$.k1")}, Null()}, @@ -837,7 +837,7 @@ TEST(FunctionJsonbTEST, JsonbExtractIntTest) { check_function(func_name, input_types, data_set); - // jsonb_extract array + // json_extract array data_set = { {{Null(), STRING("$[0]")}, Null()}, {{STRING("null"), STRING("$[0]")}, Null()}, @@ -898,7 +898,7 @@ TEST(FunctionJsonbTEST, JsonbExtractIntTest) { check_function(func_name, input_types, data_set); - // jsonb_extract $[0].k1 + // json_extract $[0].k1 data_set = { {{Null(), STRING("$[0].k1")}, Null()}, {{STRING("null"), STRING("$[0].k1")}, Null()}, @@ -927,10 +927,10 @@ TEST(FunctionJsonbTEST, JsonbExtractIntTest) { } TEST(FunctionJsonbTEST, JsonbExtractBigIntTest) { - std::string func_name = "jsonb_extract_bigint"; + std::string func_name = "json_extract_bigint"; InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String}; - // jsonb_extract root + // json_extract root DataSet data_set = { {{Null(), STRING("$")}, Null()}, {{STRING("null"), STRING("$")}, Null()}, @@ -955,7 +955,7 @@ TEST(FunctionJsonbTEST, JsonbExtractBigIntTest) { check_function(func_name, input_types, data_set); - // jsonb_extract obejct + // json_extract obejct data_set = { {{Null(), STRING("$.k1")}, Null()}, {{STRING("null"), STRING("$.k1")}, Null()}, @@ -980,7 +980,7 @@ TEST(FunctionJsonbTEST, JsonbExtractBigIntTest) { check_function(func_name, input_types, data_set); - // jsonb_extract array + // json_extract array data_set = { {{Null(), STRING("$[0]")}, Null()}, {{STRING("null"), STRING("$[0]")}, Null()}, @@ -1041,7 +1041,7 @@ TEST(FunctionJsonbTEST, JsonbExtractBigIntTest) { check_function(func_name, input_types, data_set); - // jsonb_extract $[0].k1 + // json_extract $[0].k1 data_set = { {{Null(), STRING("$[0].k1")}, Null()}, {{STRING("null"), STRING("$[0].k1")}, Null()}, @@ -1070,10 +1070,10 @@ TEST(FunctionJsonbTEST, JsonbExtractBigIntTest) { } TEST(FunctionJsonbTEST, JsonbExtractDoubleTest) { - std::string func_name = "jsonb_extract_double"; + std::string func_name = "json_extract_double"; InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String}; - // jsonb_extract root + // json_extract root DataSet data_set = { {{Null(), STRING("$")}, Null()}, {{STRING("null"), STRING("$")}, Null()}, @@ -1098,7 +1098,7 @@ TEST(FunctionJsonbTEST, JsonbExtractDoubleTest) { check_function(func_name, input_types, data_set); - // jsonb_extract obejct + // json_extract obejct data_set = { {{STRING("null"), STRING("$.k1")}, Null()}, {{STRING("true"), STRING("$.k1")}, Null()}, @@ -1122,7 +1122,7 @@ TEST(FunctionJsonbTEST, JsonbExtractDoubleTest) { check_function(func_name, input_types, data_set); - // jsonb_extract array + // json_extract array data_set = { {{STRING("null"), STRING("$[0]")}, Null()}, {{STRING("true"), STRING("$[0]")}, Null()}, @@ -1182,7 +1182,7 @@ TEST(FunctionJsonbTEST, JsonbExtractDoubleTest) { check_function(func_name, input_types, data_set); - // jsonb_extract $[0].k1 + // json_extract $[0].k1 data_set = { {{STRING("null"), STRING("$[0].k1")}, Null()}, {{STRING("true"), STRING("$[0].k1")}, Null()}, diff --git a/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_exists_path.md b/docs/en/docs/sql-manual/sql-functions/json-functions/json_exists_path.md similarity index 76% rename from docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_exists_path.md rename to docs/en/docs/sql-manual/sql-functions/json-functions/json_exists_path.md index 2f3806144d..5c5f772fae 100644 --- a/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_exists_path.md +++ b/docs/en/docs/sql-manual/sql-functions/json-functions/json_exists_path.md @@ -1,6 +1,6 @@ --- { - "title": "jsonb_exists_path", + "title": "json_exists_path", "language": "en" } --- @@ -24,23 +24,23 @@ specific language governing permissions and limitations under the License. --> -## jsonb_exists_path +## json_exists_path ### description -It is used to judge whether the field specified by json_path exists in the JSONB data. If it exists, it returns TRUE, and if it does not exist, it returns FALSE +It is used to judge whether the field specified by json_path exists in the JSON data. If it exists, it returns TRUE, and if it does not exist, it returns FALSE #### Syntax ```sql -BOOLEAN jsonb_exists_path(JSONB j, VARCHAR json_path) +BOOLEAN json_exists_path(JSON j, VARCHAR json_path) ``` ### example -Refer to [jsonb tutorial](../../sql-reference/Data-Types/JSONB.md) +Refer to [json tutorial](../../sql-reference/Data-Types/JSON.md) ### keywords -jsonb_exists_path +json_exists_path diff --git a/docs/en/docs/sql-manual/sql-functions/json-functions/json_extract.md b/docs/en/docs/sql-manual/sql-functions/json-functions/json_extract.md index d6b9674f9a..14b0ff266e 100644 --- a/docs/en/docs/sql-manual/sql-functions/json-functions/json_extract.md +++ b/docs/en/docs/sql-manual/sql-functions/json-functions/json_extract.md @@ -13,7 +13,9 @@ regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -30,12 +32,66 @@ under the License. #### Syntax +```sql `VARCHAR json_extract(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...))` +JSON jsonb_extract(JSON j, VARCHAR json_path) +BOOLEAN json_extract_isnull(JSON j, VARCHAR json_path) +BOOLEAN json_extract_bool(JSON j, VARCHAR json_path) +INT json_extract_int(JSON j, VARCHAR json_path) +BIGINT json_extract_bigint(JSON j, VARCHAR json_path) +DOUBLE json_extract_double(JSON j, VARCHAR json_path) +STRING json_extract_string(JSON j, VARCHAR json_path) +``` -`json_extract` function returns data from a JSON document, selected from the parts of the document matched by the `path` arguments. Returns NULL if any argument is NULL or if the `json_str` argument is not a valid JSON document. If the `path` parameter is not a valid path (that is, the path does not appear in the JSON document), the corresponding item in the returned array is NULL (see example below) +json_extract functions extract field specified by json_path from JSON. A series of functions are provided for different datatype. +- json_extract with VARCHAR argument, extract and return VARCHAR datatype +- jsonb_extract extract and return JSON datatype +- json_extract_isnull check if the field is json null and return BOOLEAN datatype +- json_extract_bool extract and return BOOLEAN datatype +- json_extract_int extract and return INT datatype +- json_extract_bigint extract and return BIGINT datatype +- json_extract_double extract and return DOUBLE datatype +- json_extract_STRING extract and return STRING datatype + +json path syntax: +- '$' for json document root +- '.k1' for element of json object with key 'k1' + - If the key column value contains ".", double quotes are required in json_path, For example: SELECT json_extract('{"k1.a":"abc","k2":300}', '$."k1.a"'); +- '[i]' for element of json array at index i + - Use '$[last]' to get the last element of json_array, and '$[last-1]' to get the penultimate element, and so on. + + +Exception handling is as follows: +- if the field specified by json_path does not exist, return NULL +- if datatype of the field specified by json_path is not the same with type of json_extract_t, return t if it can be cast to t else NULL + + +## json_exists_path and json_type +### description + +#### Syntax + +```sql +BOOLEAN json_exists_path(JSON j, VARCHAR json_path) +STRING json_type(JSON j, VARCHAR json_path) +``` + +There are two extra functions to check field existence and type +- json_exists_path check the existence of the field specified by json_path, return TRUE or FALS +- json_exists_path get the type as follows of the field specified by json_path, return NULL if it does not exist + - object + - array + - null + - bool + - int + - bigint + - double + - string ### example +refer to [json tutorial](../../sql-reference/Data-Types/JSON.md) for more. + ``` mysql> SELECT json_extract('{"id": 123, "name": "doris"}', '$.id'); +------------------------------------------------------+ @@ -70,5 +126,6 @@ mysql> SELECT json_extract('{"id": 123, "name": "doris"}', '$.aaa', '$.name'); 1 row in set (0.01 sec) ``` + ### keywords -JSON, EXTRACT, JSON_EXTRACT \ No newline at end of file +JSONB, JSON, json_extract, json_extract_isnull, json_extract_bool, json_extract_int, json_extract_bigint, json_extract_double, json_extract_string, json_exists_path, json_type \ No newline at end of file diff --git a/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_parse.md b/docs/en/docs/sql-manual/sql-functions/json-functions/json_parse.md similarity index 64% rename from docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_parse.md rename to docs/en/docs/sql-manual/sql-functions/json-functions/json_parse.md index 96fda6dca6..018b621f2c 100644 --- a/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_parse.md +++ b/docs/en/docs/sql-manual/sql-functions/json-functions/json_parse.md @@ -1,6 +1,6 @@ --- { - "title": "jsonb_parse", + "title": "json_parse", "language": "en" } --- @@ -24,31 +24,31 @@ specific language governing permissions and limitations under the License. --> -## jsonb_parse +## json_parse ### description #### Syntax ```sql -JSONB jsonb_parse(VARCHAR json_str) -JSONB jsonb_parse_error_to_null(VARCHAR json_str) -JSONB jsonb_parse_error_to_value(VARCHAR json_str, VARCHAR default_json_str) +JSON json_parse(VARCHAR json_str) +JSON json_parse_error_to_null(VARCHAR json_str) +JSON json_parse_error_to_value(VARCHAR json_str, VARCHAR default_json_str) ``` -jsonb_parse functions parse JSON string to binary format. A series of functions are provided to satisfy different demand for exception handling. +json_parse functions parse JSON string to binary format. A series of functions are provided to satisfy different demand for exception handling. - all return NULL if json_str is NULL - if json_str is not valid - - jsonb_parse will report error - - jsonb_parse_error_to_null will return NULL - - jsonb_parse_error_to_value will return the value specified by default_json_str + - json_parse will report error + - json_parse_error_to_null will return NULL + - json_parse_error_to_value will return the value specified by default_json_str ### example 1. parse valid JSON string ``` -mysql> SELECT jsonb_parse('{"k1":"v31","k2":300}'); +mysql> SELECT json_parse('{"k1":"v31","k2":300}'); +--------------------------------------+ -| jsonb_parse('{"k1":"v31","k2":300}') | +| json_parse('{"k1":"v31","k2":300}') | +--------------------------------------+ | {"k1":"v31","k2":300} | +--------------------------------------+ @@ -58,27 +58,27 @@ mysql> SELECT jsonb_parse('{"k1":"v31","k2":300}'); 2. parse invalid JSON string ``` -mysql> SELECT jsonb_parse('invalid json'); +mysql> SELECT json_parse('invalid json'); ERROR 1105 (HY000): errCode = 2, detailMessage = json parse error: Invalid document: document must be an object or an array for value: invalid json -mysql> SELECT jsonb_parse_error_to_null('invalid json'); +mysql> SELECT json_parse_error_to_null('invalid json'); +-------------------------------------------+ -| jsonb_parse_error_to_null('invalid json') | +| json_parse_error_to_null('invalid json') | +-------------------------------------------+ | NULL | +-------------------------------------------+ 1 row in set (0.01 sec) -mysql> SELECT jsonb_parse_error_to_value('invalid json', '{}'); +mysql> SELECT json_parse_error_to_value('invalid json', '{}'); +--------------------------------------------------+ -| jsonb_parse_error_to_value('invalid json', '{}') | +| json_parse_error_to_value('invalid json', '{}') | +--------------------------------------------------+ | {} | +--------------------------------------------------+ 1 row in set (0.00 sec) ``` -refer to jsonb tutorial for more. +refer to json tutorial for more. ### keywords -JSONB, JSON, jsonb_parse, jsonb_parse_error_to_null, jsonb_parse_error_to_value \ No newline at end of file +JSONB, JSON, json_parse, json_parse_error_to_null, json_parse_error_to_value \ No newline at end of file diff --git a/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_type.md b/docs/en/docs/sql-manual/sql-functions/json-functions/json_type.md similarity index 78% rename from docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_type.md rename to docs/en/docs/sql-manual/sql-functions/json-functions/json_type.md index ce43e2015a..c6166b4dfd 100644 --- a/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_type.md +++ b/docs/en/docs/sql-manual/sql-functions/json-functions/json_type.md @@ -1,6 +1,6 @@ --- { - "title": "jsonb_type", + "title": "json_type", "language": "en" } --- @@ -24,11 +24,11 @@ specific language governing permissions and limitations under the License. --> -## jsonb_type +## json_type ### description -It is used to determine the type of the field specified by json_path in JSONB data. If the field does not exist, return NULL. If it exists, return one of the following types +It is used to determine the type of the field specified by json_path in JSON data. If the field does not exist, return NULL. If it exists, return one of the following types - object - array @@ -42,14 +42,14 @@ It is used to determine the type of the field specified by json_path in JSONB da #### Syntax ```sql -STRING jsonb_type(JSONB j, VARCHAR json_path) +STRING json_type(JSON j, VARCHAR json_path) ``` ### example -Refer to [jsonb tutorial](../../sql-reference/Data-Types/JSONB.md) +Refer to [json tutorial](../../sql-reference/Data-Types/JSON.md) ### keywords -jsonb_type +json_type diff --git a/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md b/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md deleted file mode 100644 index 50466d2346..0000000000 --- a/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -{ - "title": "jsonb_extract", - "language": "en" -} ---- - - - -## jsonb_extract - - - -jsonb_extract - - - -### description - -#### Syntax - -```sql -JSONB jsonb_extract(JSONB j, VARCHAR json_path) -BOOLEAN jsonb_extract_isnull(JSONB j, VARCHAR json_path) -BOOLEAN jsonb_extract_bool(JSONB j, VARCHAR json_path) -INT jsonb_extract_int(JSONB j, VARCHAR json_path) -BIGINT jsonb_extract_bigint(JSONB j, VARCHAR json_path) -DOUBLE jsonb_extract_double(JSONB j, VARCHAR json_path) -STRING jsonb_extract_string(JSONB j, VARCHAR json_path) -``` - -jsonb_extract functions extract field specified by json_path from JSONB. A series of functions are provided for different datatype. -- jsonb_extract extract and return JSONB datatype -- jsonb_extract_isnull check if the field is json null and return BOOLEAN datatype -- jsonb_extract_bool extract and return BOOLEAN datatype -- jsonb_extract_int extract and return INT datatype -- jsonb_extract_bigint extract and return BIGINT datatype -- jsonb_extract_double extract and return DOUBLE datatype -- jsonb_extract_STRING extract and return STRING datatype - -Exception handling is as follows: -- if the field specified by json_path does not exist, return NULL -- if datatype of the field specified by json_path is not the same with type of jsonb_extract_t, return t if it can be cast to t else NULL -- If the key column value contains ".", double quotes are required in json_path, For example: SELECT jsonb_extract('{"k1.a":"abc","k2":300}', '$."k1.a"'); -- Use '$[last]' to get the last element of json_array, and '$[last-1]' to get the penultimate element, and so on. - - -## jsonb_exists_path and jsonb_type -### description - -#### Syntax - -```sql -BOOLEAN jsonb_exists_path(JSONB j, VARCHAR json_path) -STRING jsonb_type(JSONB j, VARCHAR json_path) -``` - -There are two extra functions to check field existence and type -- jsonb_exists_path check the existence of the field specified by json_path, return TRUE or FALS -- jsonb_exists_path get the type as follows of the field specified by json_path, return NULL if it does not exist - - object - - array - - null - - bool - - int - - bigint - - double - - string - -### example - -refer to [jsonb tutorial](../../sql-reference/Data-Types/JSONB.md) for more. - - -### keywords -JSONB, JSON, jsonb_extract, jsonb_extract_isnull, jsonb_extract_bool, jsonb_extract_int, jsonb_extract_bigint, jsonb_extract_double, jsonb_extract_string, jsonb_exists_path, jsonb_type diff --git a/docs/en/docs/sql-manual/sql-reference/Data-Types/JSONB.md b/docs/en/docs/sql-manual/sql-reference/Data-Types/JSON.md similarity index 93% rename from docs/en/docs/sql-manual/sql-reference/Data-Types/JSONB.md rename to docs/en/docs/sql-manual/sql-reference/Data-Types/JSON.md index 57ac8d7440..1f722758b8 100644 --- a/docs/en/docs/sql-manual/sql-reference/Data-Types/JSONB.md +++ b/docs/en/docs/sql-manual/sql-reference/Data-Types/JSON.md @@ -1,6 +1,6 @@ --- { - "title": "JSONB", + "title": "JSON", "language": "en" } --- @@ -24,25 +24,25 @@ specific language governing permissions and limitations under the License. --> -## JSONB +## JSON -JSONB - +NOTICE: In version 1.2.x the data type name is JSONB. It's renamed to JSON to be more compatible to version 2.0.0. And the old tables can still be used. + ### description - JSONB (JSON Binary) datatype. - Use binary JSON format for storage and jsonb function to extract field. + JSON (Binary) datatype. + Use binary JSON format for storage and json function to extract field. ### note - There are some advantanges for JSONB over plain JSON STRING. + There are some advantanges for JSON over plain JSON STRING. 1. JSON syntax will be validated on write to ensure data quality - 2. JSONB format is more efficient. Using jsonb_extract functions on JSONB format is 2-4 times faster than get_json_xx on JSON STRING format. + 2. JSON binary format is more efficient. Using json_extract functions on JSON datatype is 2-4 times faster than get_json_xx on JSON STRING format. ### example -A tutorial for JSONB datatype including create table, load data and query. +A tutorial for JSON datatype including create table, load data and query. #### create database and table @@ -51,9 +51,9 @@ CREATE DATABASE testdb; USE testdb; -CREATE TABLE test_jsonb ( +CREATE TABLE test_json ( id INT, - j JSONB + j JSON ) DUPLICATE KEY(id) DISTRIBUTED BY HASH(id) BUCKETS 10 @@ -62,7 +62,7 @@ PROPERTIES("replication_num" = "1"); #### Load data -##### stream load test_jsonb.csv test data +##### stream load test_json.csv test data - there are 2 columns, the 1st column is id and the 2nd column is json string - there are 25 rows, the first 18 rows are valid json and the last 7 rows are invalid @@ -99,7 +99,7 @@ PROPERTIES("replication_num" = "1"); - due to the 28% of rows is invalid,stream load with default configuration will fail with error message "too many filtered rows" ``` -curl --location-trusted -u root: -T test_jsonb.csv http://127.0.0.1:8840/api/testdb/test_jsonb/_stream_load +curl --location-trusted -u root: -T test_json.csv http://127.0.0.1:8840/api/testdb/test_json/_stream_load { "TxnId": 12019, "Label": "744d9821-9c9f-43dc-bf3b-7ab048f14e32", @@ -123,7 +123,7 @@ curl --location-trusted -u root: -T test_jsonb.csv http://127.0.0.1:8840/api/tes - stream load will success after set header configuration 'max_filter_ratio: 0.3' ``` -curl --location-trusted -u root: -H 'max_filter_ratio: 0.3' -T test_jsonb.csv http://127.0.0.1:8840/api/testdb/test_jsonb/_stream_load +curl --location-trusted -u root: -H 'max_filter_ratio: 0.3' -T test_json.csv http://127.0.0.1:8840/api/testdb/test_json/_stream_load { "TxnId": 12017, "Label": "f37a50c1-43e9-4f4e-a159-a3db6abe2579", @@ -145,10 +145,10 @@ curl --location-trusted -u root: -H 'max_filter_ratio: 0.3' -T test_jsonb.csv ht } ``` -- use SELECT to view the data loaded by stream load. The column with JSONB type will be displayed as plain JSON string. +- use SELECT to view the data loaded by stream load. The column with JSON type will be displayed as plain JSON string. ``` -mysql> SELECT * FROM test_jsonb ORDER BY id; +mysql> SELECT * FROM test_json ORDER BY id; +------+---------------------------------------------------------------+ | id | j | +------+---------------------------------------------------------------+ @@ -179,11 +179,11 @@ mysql> SELECT * FROM test_jsonb ORDER BY id; - total rows increae from 18 to 19 after insert 1 row ``` -mysql> INSERT INTO test_jsonb VALUES(26, '{"k1":"v1", "k2": 200}'); +mysql> INSERT INTO test_json VALUES(26, '{"k1":"v1", "k2": 200}'); Query OK, 1 row affected (0.09 sec) {'label':'insert_4ece6769d1b42fd_ac9f25b3b8f3dc02', 'status':'VISIBLE', 'txnId':'12016'} -mysql> SELECT * FROM test_jsonb ORDER BY id; +mysql> SELECT * FROM test_json ORDER BY id; +------+---------------------------------------------------------------+ | id | j | +------+---------------------------------------------------------------+ @@ -213,12 +213,12 @@ mysql> SELECT * FROM test_jsonb ORDER BY id; #### Query -##### extract some filed from json by jsonb_extract functions +##### extract some filed from json by json_extract functions 1. extract the whole json, '$' stands for root in json path ``` +------+---------------------------------------------------------------+---------------------------------------------------------------+ -| id | j | jsonb_extract(`j`, '$') | +| id | j | json_extract(`j`, '$') | +------+---------------------------------------------------------------+---------------------------------------------------------------+ | 1 | NULL | NULL | | 2 | null | null | @@ -245,9 +245,9 @@ mysql> SELECT * FROM test_jsonb ORDER BY id; 1. extract k1 field, return NULL if it does not exist ``` -mysql> SELECT id, j, jsonb_extract(j, '$.k1') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract(j, '$.k1') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+----------------------------+ -| id | j | jsonb_extract(`j`, '$.k1') | +| id | j | json_extract(`j`, '$.k1') | +------+---------------------------------------------------------------+----------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -274,9 +274,9 @@ mysql> SELECT id, j, jsonb_extract(j, '$.k1') FROM test_jsonb ORDER BY id; 1. extract element 0 of the top level array ``` -mysql> SELECT id, j, jsonb_extract(j, '$[0]') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract(j, '$[0]') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+----------------------------+ -| id | j | jsonb_extract(`j`, '$[0]') | +| id | j | json_extract(`j`, '$[0]') | +------+---------------------------------------------------------------+----------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -303,9 +303,9 @@ mysql> SELECT id, j, jsonb_extract(j, '$[0]') FROM test_jsonb ORDER BY id; 1. extract a whole json array of name a1 ``` -mysql> SELECT id, j, jsonb_extract(j, '$.a1') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract(j, '$.a1') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+------------------------------------+ -| id | j | jsonb_extract(`j`, '$.a1') | +| id | j | json_extract(`j`, '$.a1') | +------+---------------------------------------------------------------+------------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -332,9 +332,9 @@ mysql> SELECT id, j, jsonb_extract(j, '$.a1') FROM test_jsonb ORDER BY id; 1. extract nested field from an object in an array ``` -mysql> SELECT id, j, jsonb_extract(j, '$.a1[0]'), jsonb_extract(j, '$.a1[0].k1') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract(j, '$.a1[0]'), json_extract(j, '$.a1[0].k1') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+-------------------------------+----------------------------------+ -| id | j | jsonb_extract(`j`, '$.a1[0]') | jsonb_extract(`j`, '$.a1[0].k1') | +| id | j | json_extract(`j`, '$.a1[0]') | json_extract(`j`, '$.a1[0].k1') | +------+---------------------------------------------------------------+-------------------------------+----------------------------------+ | 1 | NULL | NULL | NULL | | 2 | null | NULL | NULL | @@ -361,11 +361,11 @@ mysql> SELECT id, j, jsonb_extract(j, '$.a1[0]'), jsonb_extract(j, '$.a1[0].k1') ``` 1. extract field with specific datatype -- jsonb_extract_string will extract field with string type,convert to string if the field is not string +- json_extract_string will extract field with string type,convert to string if the field is not string ``` -mysql> SELECT id, j, jsonb_extract_string(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_string(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+---------------------------------------------------------------+ -| id | j | jsonb_extract_string(`j`, '$') | +| id | j | json_extract_string(`j`, '$') | +------+---------------------------------------------------------------+---------------------------------------------------------------+ | 1 | NULL | NULL | | 2 | null | null | @@ -389,9 +389,9 @@ mysql> SELECT id, j, jsonb_extract_string(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+---------------------------------------------------------------+ 19 rows in set (0.02 sec) -mysql> SELECT id, j, jsonb_extract_string(j, '$.k1') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_string(j, '$.k1') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+-----------------------------------+ -| id | j | jsonb_extract_string(`j`, '$.k1') | +| id | j | json_extract_string(`j`, '$.k1') | +------+---------------------------------------------------------------+-----------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -417,11 +417,11 @@ mysql> SELECT id, j, jsonb_extract_string(j, '$.k1') FROM test_jsonb ORDER BY id ``` -- jsonb_extract_int will extract field with int type,return NULL if the field is not int +- json_extract_int will extract field with int type,return NULL if the field is not int ``` -mysql> SELECT id, j, jsonb_extract_int(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_int(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+-----------------------------+ -| id | j | jsonb_extract_int(`j`, '$') | +| id | j | json_extract_int(`j`, '$') | +------+---------------------------------------------------------------+-----------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -445,9 +445,9 @@ mysql> SELECT id, j, jsonb_extract_int(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+-----------------------------+ 19 rows in set (0.02 sec) -mysql> SELECT id, j, jsonb_extract_int(j, '$.k2') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_int(j, '$.k2') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ -| id | j | jsonb_extract_int(`j`, '$.k2') | +| id | j | json_extract_int(`j`, '$.k2') | +------+---------------------------------------------------------------+--------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -472,11 +472,11 @@ mysql> SELECT id, j, jsonb_extract_int(j, '$.k2') FROM test_jsonb ORDER BY id; 19 rows in set (0.03 sec) ``` -- jsonb_extract_bigint will extract field with bigint type,return NULL if the field is not bigint +- json_extract_bigint will extract field with bigint type,return NULL if the field is not bigint ``` -mysql> SELECT id, j, jsonb_extract_bigint(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_bigint(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ -| id | j | jsonb_extract_bigint(`j`, '$') | +| id | j | json_extract_bigint(`j`, '$') | +------+---------------------------------------------------------------+--------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -500,9 +500,9 @@ mysql> SELECT id, j, jsonb_extract_bigint(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ 19 rows in set (0.03 sec) -mysql> SELECT id, j, jsonb_extract_bigint(j, '$.k2') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_bigint(j, '$.k2') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+-----------------------------------+ -| id | j | jsonb_extract_bigint(`j`, '$.k2') | +| id | j | json_extract_bigint(`j`, '$.k2') | +------+---------------------------------------------------------------+-----------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -528,11 +528,11 @@ mysql> SELECT id, j, jsonb_extract_bigint(j, '$.k2') FROM test_jsonb ORDER BY id ``` -- jsonb_extract_double will extract field with double type,return NULL if the field is not double +- json_extract_double will extract field with double type,return NULL if the field is not double ``` -mysql> SELECT id, j, jsonb_extract_double(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_double(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ -| id | j | jsonb_extract_double(`j`, '$') | +| id | j | json_extract_double(`j`, '$') | +------+---------------------------------------------------------------+--------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -556,9 +556,9 @@ mysql> SELECT id, j, jsonb_extract_double(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ 19 rows in set (0.02 sec) -mysql> SELECT id, j, jsonb_extract_double(j, '$.k2') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_double(j, '$.k2') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+-----------------------------------+ -| id | j | jsonb_extract_double(`j`, '$.k2') | +| id | j | json_extract_double(`j`, '$.k2') | +------+---------------------------------------------------------------+-----------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -583,11 +583,11 @@ mysql> SELECT id, j, jsonb_extract_double(j, '$.k2') FROM test_jsonb ORDER BY id 19 rows in set (0.03 sec) ``` -- jsonb_extract_bool will extract field with boolean type,return NULL if the field is not boolean +- json_extract_bool will extract field with boolean type,return NULL if the field is not boolean ``` -mysql> SELECT id, j, jsonb_extract_bool(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_bool(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+------------------------------+ -| id | j | jsonb_extract_bool(`j`, '$') | +| id | j | json_extract_bool(`j`, '$') | +------+---------------------------------------------------------------+------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -611,9 +611,9 @@ mysql> SELECT id, j, jsonb_extract_bool(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+------------------------------+ 19 rows in set (0.01 sec) -mysql> SELECT id, j, jsonb_extract_bool(j, '$[1]') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_bool(j, '$[1]') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+---------------------------------+ -| id | j | jsonb_extract_bool(`j`, '$[1]') | +| id | j | json_extract_bool(`j`, '$[1]') | +------+---------------------------------------------------------------+---------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -638,12 +638,12 @@ mysql> SELECT id, j, jsonb_extract_bool(j, '$[1]') FROM test_jsonb ORDER BY id; 19 rows in set (0.01 sec) ``` -- jsonb_extract_isnull will extract field with json null type,return 1 if the field is json null , else 0 +- json_extract_isnull will extract field with json null type,return 1 if the field is json null , else 0 - json null is different from SQL NULL. SQL NULL stands for no value for a field, but json null stands for an field with special value null. ``` -mysql> SELECT id, j, jsonb_extract_isnull(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_isnull(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ -| id | j | jsonb_extract_isnull(`j`, '$') | +| id | j | json_extract_isnull(`j`, '$') | +------+---------------------------------------------------------------+--------------------------------+ | 1 | NULL | NULL | | 2 | null | 1 | @@ -669,12 +669,12 @@ mysql> SELECT id, j, jsonb_extract_isnull(j, '$') FROM test_jsonb ORDER BY id; ``` -##### check if a field is existed in json by jsonb_exists_path +##### check if a field is existed in json by json_exists_path ``` -mysql> SELECT id, j, jsonb_exists_path(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_exists_path(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+-----------------------------+ -| id | j | jsonb_exists_path(`j`, '$') | +| id | j | json_exists_path(`j`, '$') | +------+---------------------------------------------------------------+-----------------------------+ | 1 | NULL | NULL | | 2 | null | 1 | @@ -698,9 +698,9 @@ mysql> SELECT id, j, jsonb_exists_path(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+-----------------------------+ 19 rows in set (0.02 sec) -mysql> SELECT id, j, jsonb_exists_path(j, '$.k1') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_exists_path(j, '$.k1') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ -| id | j | jsonb_exists_path(`j`, '$.k1') | +| id | j | json_exists_path(`j`, '$.k1') | +------+---------------------------------------------------------------+--------------------------------+ | 1 | NULL | NULL | | 2 | null | 0 | @@ -724,9 +724,9 @@ mysql> SELECT id, j, jsonb_exists_path(j, '$.k1') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ 19 rows in set (0.03 sec) -mysql> SELECT id, j, jsonb_exists_path(j, '$[2]') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_exists_path(j, '$[2]') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ -| id | j | jsonb_exists_path(`j`, '$[2]') | +| id | j | json_exists_path(`j`, '$[2]') | +------+---------------------------------------------------------------+--------------------------------+ | 1 | NULL | NULL | | 2 | null | 0 | @@ -753,13 +753,13 @@ mysql> SELECT id, j, jsonb_exists_path(j, '$[2]') FROM test_jsonb ORDER BY id; ``` -##### get the datatype of a field in json by jsonb_type +##### get the datatype of a field in json by json_type - return the data type of the field specified by json path, NULL if not existed. ``` -mysql> SELECT id, j, jsonb_type(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_type(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+----------------------+ -| id | j | jsonb_type(`j`, '$') | +| id | j | json_type(`j`, '$') | +------+---------------------------------------------------------------+----------------------+ | 1 | NULL | NULL | | 2 | null | null | @@ -783,9 +783,9 @@ mysql> SELECT id, j, jsonb_type(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+----------------------+ 19 rows in set (0.02 sec) -mysql> select id, j, jsonb_type(j, '$.k1') from test_jsonb order by id; +mysql> select id, j, json_type(j, '$.k1') from test_json order by id; +------+---------------------------------------------------------------+-------------------------+ -| id | j | jsonb_type(`j`, '$.k1') | +| id | j | json_type(`j`, '$.k1') | +------+---------------------------------------------------------------+-------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -812,5 +812,5 @@ mysql> select id, j, jsonb_type(j, '$.k1') from test_jsonb order by id; ``` ### keywords -JSONB, JSON, jsonb_parse, jsonb_parse_error_to_null, jsonb_parse_error_to_value, jsonb_extract, jsonb_extract_isnull, jsonb_extract_bool, jsonb_extract_int, jsonb_extract_bigint, jsonb_extract_double, jsonb_extract_string, jsonb_exists_path, jsonb_type +JSONB, JSON, json_parse, json_parse_error_to_null, json_parse_error_to_value, json_extract, json_extract_isnull, json_extract_bool, json_extract_int, json_extract_bigint, json_extract_double, json_extract_string, json_exists_path, json_type diff --git a/docs/sidebars.json b/docs/sidebars.json index a600241dc3..4c79e2d4e5 100644 --- a/docs/sidebars.json +++ b/docs/sidebars.json @@ -607,19 +607,18 @@ "type": "category", "label": "JSON Functions", "items": [ - "sql-manual/sql-functions/json-functions/jsonb_parse", - "sql-manual/sql-functions/json-functions/jsonb_extract", - "sql-manual/sql-functions/json-functions/jsonb_exists_path", - "sql-manual/sql-functions/json-functions/jsonb_type", - "sql-manual/sql-functions/json-functions/get_json_double", - "sql-manual/sql-functions/json-functions/get_json_int", - "sql-manual/sql-functions/json-functions/get_json_string", + "sql-manual/sql-functions/json-functions/json_parse", + "sql-manual/sql-functions/json-functions/json_extract", + "sql-manual/sql-functions/json-functions/json_exists_path", + "sql-manual/sql-functions/json-functions/json_type", "sql-manual/sql-functions/json-functions/json_array", "sql-manual/sql-functions/json-functions/json_object", "sql-manual/sql-functions/json-functions/json_quote", "sql-manual/sql-functions/json-functions/json_unquote", "sql-manual/sql-functions/json-functions/json_valid", - "sql-manual/sql-functions/json-functions/json_extract" + "sql-manual/sql-functions/json-functions/get_json_double", + "sql-manual/sql-functions/json-functions/get_json_int", + "sql-manual/sql-functions/json-functions/get_json_string" ] }, { @@ -1023,8 +1022,8 @@ "sql-manual/sql-reference/Data-Types/QUANTILE_STATE", "sql-manual/sql-reference/Data-Types/ARRAY", "sql-manual/sql-reference/Data-Types/MAP", - "sql-manual/sql-reference/Data-Types/JSONB", - "sql-manual/sql-reference/Data-Types/STRUCT" + "sql-manual/sql-reference/Data-Types/STRUCT", + "sql-manual/sql-reference/Data-Types/JSON" ] }, { diff --git a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_exists_path.md b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_exists_path.md similarity index 73% rename from docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_exists_path.md rename to docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_exists_path.md index ebf7b73342..b19a64438d 100644 --- a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_exists_path.md +++ b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_exists_path.md @@ -1,6 +1,6 @@ --- { - "title": "jsonb_exists_path", + "title": "json_exists_path", "language": "zh-CN" } --- @@ -24,23 +24,23 @@ specific language governing permissions and limitations under the License. --> -## jsonb_exists_path +## json_exists_path ### description -用来判断json_path指定的字段在JSONB数据中是否存在,如果存在返回TRUE,不存在返回FALSE +用来判断json_path指定的字段在JSON数据中是否存在,如果存在返回TRUE,不存在返回FALSE #### Syntax ```sql -BOOLEAN jsonb_exists_path(JSONB j, VARCHAR json_path) +BOOLEAN json_exists_path(JSON j, VARCHAR json_path) ``` ### example -参考 [jsonb tutorial](../../sql-reference/Data-Types/JSONB.md) 中的示例 +参考 [json tutorial](../../sql-reference/Data-Types/JSON.md) 中的示例 ### keywords -jsonb_exists_path +json_exists_path diff --git a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_extract.md b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_extract.md index 8159eac1ee..6c6afd08e5 100644 --- a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_extract.md +++ b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_extract.md @@ -13,7 +13,9 @@ regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -27,15 +29,46 @@ under the License. ### description - #### Syntax -`VARCHAR json_extract(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...))` +```sql +VARCHAR json_extract(VARCHAR json_str, VARCHAR path[, VARCHAR path] ...) +JSON jsonb_extract(JSON j, VARCHAR json_path) +BOOLEAN json_extract_isnull(JSON j, VARCHAR json_path) +BOOLEAN json_extract_bool(JSON j, VARCHAR json_path) +INT json_extract_int(JSON j, VARCHAR json_path) +BIGINT json_extract_bigint(JSON j, VARCHAR json_path) +DOUBLE json_extract_double(JSON j, VARCHAR json_path) +STRING json_extract_string(JSON j, VARCHAR json_path) +``` -json_extract函数从 JSON 文档中返回数据,这些数据是从与 `path` 参数所匹配的文档部分中选择的。如果任何参数为 NULL 或者 `json_str` 参数不是有效的 JSON 文档,则返回 NULL。如果 `path` 参数不是一个有效的路径(即这个路径没有出现在JSON文档中),则返回的数组中对应的项为 NULL(见下面例子)。 + + +json_extract是一系列函数,从JSON类型的数据中提取json_path指定的字段,根据要提取的字段类型不同提供不同的系列函数。 +- json_extract对VARCHAR类型的json string返回VARCHAR类型 +- jsonb_extract返回JSON类型 +- json_extract_isnull返回是否为json null的BOOLEAN类型 +- json_extract_bool返回BOOLEAN类型 +- json_extract_int返回INT类型 +- json_extract_bigint返回BIGINT类型 +- json_extract_double返回DOUBLE类型 +- json_extract_STRING返回STRING类型 + +json path的语法如下 +- '$' 代表json root +- '.k1' 代表json object中key为'k1'的元素 + - 如果 key 列值包含 ".", json_path 中需要用双引号,例如 SELECT json_extract('{"k1.a":"abc","k2":300}', '$."k1.a"'); +- '[i]' 代表json array中下标为i的元素 + - 获取 json_array 的最后一个元素可以用'$[last]',倒数第二个元素可以用'$[last-1]',以此类推 + +特殊情况处理如下: +- 如果 json_path 指定的字段在JSON中不存在,返回NULL +- 如果 json_path 指定的字段在JSON中的实际类型和json_extract_t指定的类型不一致,如果能无损转换成指定类型返回指定类型t,如果不能则返回NULL ### example +参考 [json tutorial](../../sql-reference/Data-Types/JSON.md) 中的示例 + ``` mysql> SELECT json_extract('{"id": 123, "name": "doris"}', '$.id'); +------------------------------------------------------+ @@ -71,4 +104,4 @@ mysql> SELECT json_extract('{"id": 123, "name": "doris"}', '$.aaa', '$.name'); ``` ### keywords -JSON, EXTRACT, JSON_EXTRACT \ No newline at end of file +JSONB, JSON, json_extract, json_extract_isnull, json_extract_bool, json_extract_int, json_extract_bigint, json_extract_double, json_extract_string diff --git a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_parse.md b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_parse.md similarity index 65% rename from docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_parse.md rename to docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_parse.md index efc67d2b54..6fa5608894 100644 --- a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_parse.md +++ b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_parse.md @@ -1,6 +1,6 @@ --- { - "title": "jsonb_parse", + "title": "json_parse", "language": "zh-CN" } --- @@ -24,31 +24,31 @@ specific language governing permissions and limitations under the License. --> -## jsonb_parse +## json_parse ### description #### Syntax ```sql -JSONB jsonb_parse(VARCHAR json_str) -JSONB jsonb_parse_error_to_null(VARCHAR json_str) -JSONB jsonb_parse_error_to_value(VARCHAR json_str, VARCHAR default_json_str) +JSON json_parse(VARCHAR json_str) +JSON json_parse_error_to_null(VARCHAR json_str) +JSON json_parse_error_to_value(VARCHAR json_str, VARCHAR default_json_str) ``` -将原始JSON字符串解析成JSONB二进制格式。为了满足不同的异常数据处理需求,提供不同的jsonb_parse系列函数,具体行为如下: +将原始JSON字符串解析成JSON二进制格式。为了满足不同的异常数据处理需求,提供不同的json_parse系列函数,具体行为如下: - json_str为NULL时,都返回NULL - json_str为非法JSON字符串时 - - jsonb_parse报错 - - jsonb_parse_error_to_null返回NULL, - - jsonb_parse_error_to_value返回参数default_json_str指定的默认值 + - json_parse报错 + - json_parse_error_to_null返回NULL, + - json_parse_error_to_value返回参数default_json_str指定的默认值 ### example 1. 正常JSON字符串解析 ``` -mysql> SELECT jsonb_parse('{"k1":"v31","k2":300}'); +mysql> SELECT json_parse('{"k1":"v31","k2":300}'); +--------------------------------------+ -| jsonb_parse('{"k1":"v31","k2":300}') | +| json_parse('{"k1":"v31","k2":300}') | +--------------------------------------+ | {"k1":"v31","k2":300} | +--------------------------------------+ @@ -58,20 +58,20 @@ mysql> SELECT jsonb_parse('{"k1":"v31","k2":300}'); 2. 非法JSON字符串解析 ``` -mysql> SELECT jsonb_parse('invalid json'); +mysql> SELECT json_parse('invalid json'); ERROR 1105 (HY000): errCode = 2, detailMessage = json parse error: Invalid document: document must be an object or an array for value: invalid json -mysql> SELECT jsonb_parse_error_to_null('invalid json'); +mysql> SELECT json_parse_error_to_null('invalid json'); +-------------------------------------------+ -| jsonb_parse_error_to_null('invalid json') | +| json_parse_error_to_null('invalid json') | +-------------------------------------------+ | NULL | +-------------------------------------------+ 1 row in set (0.01 sec) -mysql> SELECT jsonb_parse_error_to_value('invalid json', '{}'); +mysql> SELECT json_parse_error_to_value('invalid json', '{}'); +--------------------------------------------------+ -| jsonb_parse_error_to_value('invalid json', '{}') | +| json_parse_error_to_value('invalid json', '{}') | +--------------------------------------------------+ | {} | +--------------------------------------------------+ @@ -80,4 +80,4 @@ mysql> SELECT jsonb_parse_error_to_value('invalid json', '{}'); ### keywords -JSONB, JSON, jsonb_parse, jsonb_parse_error_to_null, jsonb_parse_error_to_value +JSONB, JSON, json_parse, json_parse_error_to_null, json_parse_error_to_value diff --git a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_type.md b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_type.md similarity index 87% rename from docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_type.md rename to docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_type.md index 5229148441..29439f728a 100644 --- a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_type.md +++ b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json_type.md @@ -1,6 +1,6 @@ --- { - "title": "jsonb_type", + "title": "json_type", "language": "zh-CN" } --- @@ -42,14 +42,14 @@ under the License. #### Syntax ```sql -STRING jsonb_type(JSONB j, VARCHAR json_path) +STRING json_type(JSON j, VARCHAR json_path) ``` ### example -参考 [jsonb tutorial](../../sql-reference/Data-Types/JSONB.md) 中的示例 +参考 [json tutorial](../../sql-reference/Data-Types/JSON.md) 中的示例 ### keywords -jsonb_type +json_type diff --git a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md deleted file mode 100644 index 88837f2b66..0000000000 --- a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -{ - "title": "jsonb_extract", - "language": "zh-CN" -} ---- - - - -## jsonb_extract - - - -jsonb_extract - - - -### description -#### Syntax - -```sql -JSONB jsonb_extract(JSONB j, VARCHAR json_path) -BOOLEAN jsonb_extract_isnull(JSONB j, VARCHAR json_path) -BOOLEAN jsonb_extract_bool(JSONB j, VARCHAR json_path) -INT jsonb_extract_int(JSONB j, VARCHAR json_path) -BIGINT jsonb_extract_bigint(JSONB j, VARCHAR json_path) -DOUBLE jsonb_extract_double(JSONB j, VARCHAR json_path) -STRING jsonb_extract_string(JSONB j, VARCHAR json_path) -``` - - - -jsonb_extract是一系列函数,从JSONB类型的数据中提取json_path指定的字段,根据要提取的字段类型不同提供不同的系列函数。 -- jsonb_extract返回JSONB类型 -- jsonb_extract_isnull返回是否为json null的BOOLEAN类型 -- jsonb_extract_bool返回BOOLEAN类型 -- jsonb_extract_int返回INT类型 -- jsonb_extract_bigint返回BIGINT类型 -- jsonb_extract_double返回DOUBLE类型 -- jsonb_extract_STRING返回STRING类型 - -特殊情况处理如下: -- 如果 json_path 指定的字段在JSON中不存在,返回NULL -- 如果 json_path 指定的字段在JSON中的实际类型和jsonb_extract_t指定的类型不一致,如果能无损转换成指定类型返回指定类型t,如果不能则返回NULL -- 如果 key 列值包含 ".", json_path 中需要用双引号,例如 SELECT jsonb_extract('{"k1.a":"abc","k2":300}', '$."k1.a"'); 。 -- 获取 json_array 的最后一个元素可以用'$[last]',倒数第二个元素可以用'$[last-1]',以此类推。 - -### example - -参考 [jsonb tutorial](../../sql-reference/Data-Types/JSONB.md) 中的示例 - -### keywords -JSONB, JSON, jsonb_extract, jsonb_extract_isnull, jsonb_extract_bool, jsonb_extract_int, jsonb_extract_bigint, jsonb_extract_double, jsonb_extract_string - diff --git a/docs/zh-CN/docs/sql-manual/sql-reference/Data-Types/JSONB.md b/docs/zh-CN/docs/sql-manual/sql-reference/Data-Types/JSON.md similarity index 93% rename from docs/zh-CN/docs/sql-manual/sql-reference/Data-Types/JSONB.md rename to docs/zh-CN/docs/sql-manual/sql-reference/Data-Types/JSON.md index 9119fd7797..03203752c1 100644 --- a/docs/zh-CN/docs/sql-manual/sql-reference/Data-Types/JSONB.md +++ b/docs/zh-CN/docs/sql-manual/sql-reference/Data-Types/JSON.md @@ -1,6 +1,6 @@ --- { - "title": "JSONB", + "title": "JSON", "language": "zh-CN" } --- @@ -24,25 +24,25 @@ specific language governing permissions and limitations under the License. --> -## JSONB +## JSON -JSONB - +注意:在1.2.x版本中,JSON类型的名字是JSONB,为了尽量跟MySQL兼容,从2.0.0版本开始改名为JSON,老的表仍然可以使用。 + ### description - JSONB(JSON Binary)类型 - 二进制JSON类型,采用二进制JSONB格式存储,通过jsonb函数访问JSON内部字段。 + JSON类型 + 二进制JSON类型,采用二进制JSON格式存储,通过json函数访问JSON内部字段。 ### note - 与普通STRING类型存储的JSON字符串相比,JSONB类型有两点优势 + 与普通STRING类型存储的JSON字符串相比,JSON类型有两点优势 1. 数据写入时进行JSON格式校验 - 2. 二进制存储格式更加高效,通过jsonb_extract等函数可以高效访问JSON内部字段,比get_json_xx函数快几倍 + 2. 二进制存储格式更加高效,通过json_extract等函数可以高效访问JSON内部字段,比get_json_xx函数快几倍 ### example - 用一个从建表、导数据、查询全周期的例子说明JSONB数据类型的功能和用法。 + 用一个从建表、导数据、查询全周期的例子说明JSON数据类型的功能和用法。 #### 创建库表 @@ -51,9 +51,9 @@ CREATE DATABASE testdb; USE testdb; -CREATE TABLE test_jsonb ( +CREATE TABLE test_json ( id INT, - j JSONB + j JSON ) DUPLICATE KEY(id) DISTRIBUTED BY HASH(id) BUCKETS 10 @@ -62,7 +62,7 @@ PROPERTIES("replication_num" = "1"); #### 导入数据 -##### stream load 导入test_jsonb.csv测试数据 +##### stream load 导入test_json.csv测试数据 - 测试数据有2列,第一列id,第二列是json - 测试数据有25行,其中前18行的json是合法的,后7行的json是非法的 @@ -97,7 +97,7 @@ PROPERTIES("replication_num" = "1"); - 由于有28%的非法数据,默认会失败报错 "too many filtered rows" ``` -curl --location-trusted -u root: -T test_jsonb.csv http://127.0.0.1:8840/api/testdb/test_jsonb/_stream_load +curl --location-trusted -u root: -T test_json.csv http://127.0.0.1:8840/api/testdb/test_json/_stream_load { "TxnId": 12019, "Label": "744d9821-9c9f-43dc-bf3b-7ab048f14e32", @@ -121,7 +121,7 @@ curl --location-trusted -u root: -T test_jsonb.csv http://127.0.0.1:8840/api/tes - 设置容错率参数 'max_filter_ratio: 0.3' ``` -curl --location-trusted -u root: -H 'max_filter_ratio: 0.3' -T test_jsonb.csv http://127.0.0.1:8840/api/testdb/test_jsonb/_stream_load +curl --location-trusted -u root: -H 'max_filter_ratio: 0.3' -T test_json.csv http://127.0.0.1:8840/api/testdb/test_json/_stream_load { "TxnId": 12017, "Label": "f37a50c1-43e9-4f4e-a159-a3db6abe2579", @@ -143,10 +143,10 @@ curl --location-trusted -u root: -H 'max_filter_ratio: 0.3' -T test_jsonb.csv ht } ``` -- 查看stream load导入的数据,JSONB类型的列j会自动转成JSON string展示 +- 查看stream load导入的数据,JSON类型的列j会自动转成JSON string展示 ``` -mysql> SELECT * FROM test_jsonb ORDER BY id; +mysql> SELECT * FROM test_json ORDER BY id; +------+---------------------------------------------------------------+ | id | j | +------+---------------------------------------------------------------+ @@ -177,11 +177,11 @@ mysql> SELECT * FROM test_jsonb ORDER BY id; - insert 1条数据,总数据从18条增加到19条 ``` -mysql> INSERT INTO test_jsonb VALUES(26, '{"k1":"v1", "k2": 200}'); +mysql> INSERT INTO test_json VALUES(26, '{"k1":"v1", "k2": 200}'); Query OK, 1 row affected (0.09 sec) {'label':'insert_4ece6769d1b42fd_ac9f25b3b8f3dc02', 'status':'VISIBLE', 'txnId':'12016'} -mysql> SELECT * FROM test_jsonb ORDER BY id; +mysql> SELECT * FROM test_json ORDER BY id; +------+---------------------------------------------------------------+ | id | j | +------+---------------------------------------------------------------+ @@ -211,12 +211,12 @@ mysql> SELECT * FROM test_jsonb ORDER BY id; #### 查询 -##### 用jsonb_extract取json内的某个字段 +##### 用json_extract取json内的某个字段 1. 获取整个json,$ 在json path中代表root,即整个json ``` +------+---------------------------------------------------------------+---------------------------------------------------------------+ -| id | j | jsonb_extract(`j`, '$') | +| id | j | json_extract(`j`, '$') | +------+---------------------------------------------------------------+---------------------------------------------------------------+ | 1 | NULL | NULL | | 2 | null | null | @@ -243,9 +243,9 @@ mysql> SELECT * FROM test_jsonb ORDER BY id; 1. 获取k1字段,没有k1字段的行返回NULL ``` -mysql> SELECT id, j, jsonb_extract(j, '$.k1') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract(j, '$.k1') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+----------------------------+ -| id | j | jsonb_extract(`j`, '$.k1') | +| id | j | json_extract(`j`, '$.k1') | +------+---------------------------------------------------------------+----------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -272,9 +272,9 @@ mysql> SELECT id, j, jsonb_extract(j, '$.k1') FROM test_jsonb ORDER BY id; 1. 获取顶层数组的第0个元素 ``` -mysql> SELECT id, j, jsonb_extract(j, '$[0]') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract(j, '$[0]') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+----------------------------+ -| id | j | jsonb_extract(`j`, '$[0]') | +| id | j | json_extract(`j`, '$[0]') | +------+---------------------------------------------------------------+----------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -301,9 +301,9 @@ mysql> SELECT id, j, jsonb_extract(j, '$[0]') FROM test_jsonb ORDER BY id; 1. 获取整个json array ``` -mysql> SELECT id, j, jsonb_extract(j, '$.a1') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract(j, '$.a1') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+------------------------------------+ -| id | j | jsonb_extract(`j`, '$.a1') | +| id | j | json_extract(`j`, '$.a1') | +------+---------------------------------------------------------------+------------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -330,9 +330,9 @@ mysql> SELECT id, j, jsonb_extract(j, '$.a1') FROM test_jsonb ORDER BY id; 1. 获取json array中嵌套object的字段 ``` -mysql> SELECT id, j, jsonb_extract(j, '$.a1[0]'), jsonb_extract(j, '$.a1[0].k1') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract(j, '$.a1[0]'), json_extract(j, '$.a1[0].k1') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+-------------------------------+----------------------------------+ -| id | j | jsonb_extract(`j`, '$.a1[0]') | jsonb_extract(`j`, '$.a1[0].k1') | +| id | j | json_extract(`j`, '$.a1[0]') | json_extract(`j`, '$.a1[0].k1') | +------+---------------------------------------------------------------+-------------------------------+----------------------------------+ | 1 | NULL | NULL | NULL | | 2 | null | NULL | NULL | @@ -359,11 +359,11 @@ mysql> SELECT id, j, jsonb_extract(j, '$.a1[0]'), jsonb_extract(j, '$.a1[0].k1') ``` 1. 获取具体类型的 -- jsonb_extract_string 获取string类型字段,非string类型转成string +- json_extract_string 获取string类型字段,非string类型转成string ``` -mysql> SELECT id, j, jsonb_extract_string(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_string(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+---------------------------------------------------------------+ -| id | j | jsonb_extract_string(`j`, '$') | +| id | j | json_extract_string(`j`, '$') | +------+---------------------------------------------------------------+---------------------------------------------------------------+ | 1 | NULL | NULL | | 2 | null | null | @@ -387,9 +387,9 @@ mysql> SELECT id, j, jsonb_extract_string(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+---------------------------------------------------------------+ 19 rows in set (0.02 sec) -mysql> SELECT id, j, jsonb_extract_string(j, '$.k1') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_string(j, '$.k1') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+-----------------------------------+ -| id | j | jsonb_extract_string(`j`, '$.k1') | +| id | j | json_extract_string(`j`, '$.k1') | +------+---------------------------------------------------------------+-----------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -415,11 +415,11 @@ mysql> SELECT id, j, jsonb_extract_string(j, '$.k1') FROM test_jsonb ORDER BY id ``` -- jsonb_extract_int 获取int类型字段,非int类型返回NULL +- json_extract_int 获取int类型字段,非int类型返回NULL ``` -mysql> SELECT id, j, jsonb_extract_int(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_int(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+-----------------------------+ -| id | j | jsonb_extract_int(`j`, '$') | +| id | j | json_extract_int(`j`, '$') | +------+---------------------------------------------------------------+-----------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -443,9 +443,9 @@ mysql> SELECT id, j, jsonb_extract_int(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+-----------------------------+ 19 rows in set (0.02 sec) -mysql> SELECT id, j, jsonb_extract_int(j, '$.k2') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_int(j, '$.k2') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ -| id | j | jsonb_extract_int(`j`, '$.k2') | +| id | j | json_extract_int(`j`, '$.k2') | +------+---------------------------------------------------------------+--------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -470,11 +470,11 @@ mysql> SELECT id, j, jsonb_extract_int(j, '$.k2') FROM test_jsonb ORDER BY id; 19 rows in set (0.03 sec) ``` -- jsonb_extract_bigint 获取bigint类型字段,非bigint类型返回NULL +- json_extract_bigint 获取bigint类型字段,非bigint类型返回NULL ``` -mysql> SELECT id, j, jsonb_extract_bigint(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_bigint(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ -| id | j | jsonb_extract_bigint(`j`, '$') | +| id | j | json_extract_bigint(`j`, '$') | +------+---------------------------------------------------------------+--------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -498,9 +498,9 @@ mysql> SELECT id, j, jsonb_extract_bigint(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ 19 rows in set (0.03 sec) -mysql> SELECT id, j, jsonb_extract_bigint(j, '$.k2') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_bigint(j, '$.k2') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+-----------------------------------+ -| id | j | jsonb_extract_bigint(`j`, '$.k2') | +| id | j | json_extract_bigint(`j`, '$.k2') | +------+---------------------------------------------------------------+-----------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -526,11 +526,11 @@ mysql> SELECT id, j, jsonb_extract_bigint(j, '$.k2') FROM test_jsonb ORDER BY id ``` -- jsonb_extract_double 获取double类型字段,非double类型返回NULL +- json_extract_double 获取double类型字段,非double类型返回NULL ``` -mysql> SELECT id, j, jsonb_extract_double(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_double(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ -| id | j | jsonb_extract_double(`j`, '$') | +| id | j | json_extract_double(`j`, '$') | +------+---------------------------------------------------------------+--------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -554,9 +554,9 @@ mysql> SELECT id, j, jsonb_extract_double(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ 19 rows in set (0.02 sec) -mysql> SELECT id, j, jsonb_extract_double(j, '$.k2') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_double(j, '$.k2') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+-----------------------------------+ -| id | j | jsonb_extract_double(`j`, '$.k2') | +| id | j | json_extract_double(`j`, '$.k2') | +------+---------------------------------------------------------------+-----------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -581,11 +581,11 @@ mysql> SELECT id, j, jsonb_extract_double(j, '$.k2') FROM test_jsonb ORDER BY id 19 rows in set (0.03 sec) ``` -- jsonb_extract_bool 获取bool类型字段,非bool类型返回NULL +- json_extract_bool 获取bool类型字段,非bool类型返回NULL ``` -mysql> SELECT id, j, jsonb_extract_bool(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_bool(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+------------------------------+ -| id | j | jsonb_extract_bool(`j`, '$') | +| id | j | json_extract_bool(`j`, '$') | +------+---------------------------------------------------------------+------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -609,9 +609,9 @@ mysql> SELECT id, j, jsonb_extract_bool(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+------------------------------+ 19 rows in set (0.01 sec) -mysql> SELECT id, j, jsonb_extract_bool(j, '$[1]') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_bool(j, '$[1]') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+---------------------------------+ -| id | j | jsonb_extract_bool(`j`, '$[1]') | +| id | j | json_extract_bool(`j`, '$[1]') | +------+---------------------------------------------------------------+---------------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -636,12 +636,12 @@ mysql> SELECT id, j, jsonb_extract_bool(j, '$[1]') FROM test_jsonb ORDER BY id; 19 rows in set (0.01 sec) ``` -- jsonb_extract_isnull 获取json null类型字段,null返回1,非null返回0 +- json_extract_isnull 获取json null类型字段,null返回1,非null返回0 - 需要注意的是json null和SQL NULL不一样,SQL NULL表示某个字段的值不存在,而json null表示值存在但是是一个特殊值null ``` -mysql> SELECT id, j, jsonb_extract_isnull(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_extract_isnull(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ -| id | j | jsonb_extract_isnull(`j`, '$') | +| id | j | json_extract_isnull(`j`, '$') | +------+---------------------------------------------------------------+--------------------------------+ | 1 | NULL | NULL | | 2 | null | 1 | @@ -667,12 +667,12 @@ mysql> SELECT id, j, jsonb_extract_isnull(j, '$') FROM test_jsonb ORDER BY id; ``` -##### 用jsonb_exists_path检查json内的某个字段是否存在 +##### 用json_exists_path检查json内的某个字段是否存在 ``` -mysql> SELECT id, j, jsonb_exists_path(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_exists_path(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+-----------------------------+ -| id | j | jsonb_exists_path(`j`, '$') | +| id | j | json_exists_path(`j`, '$') | +------+---------------------------------------------------------------+-----------------------------+ | 1 | NULL | NULL | | 2 | null | 1 | @@ -696,9 +696,9 @@ mysql> SELECT id, j, jsonb_exists_path(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+-----------------------------+ 19 rows in set (0.02 sec) -mysql> SELECT id, j, jsonb_exists_path(j, '$.k1') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_exists_path(j, '$.k1') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ -| id | j | jsonb_exists_path(`j`, '$.k1') | +| id | j | json_exists_path(`j`, '$.k1') | +------+---------------------------------------------------------------+--------------------------------+ | 1 | NULL | NULL | | 2 | null | 0 | @@ -722,9 +722,9 @@ mysql> SELECT id, j, jsonb_exists_path(j, '$.k1') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ 19 rows in set (0.03 sec) -mysql> SELECT id, j, jsonb_exists_path(j, '$[2]') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_exists_path(j, '$[2]') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+--------------------------------+ -| id | j | jsonb_exists_path(`j`, '$[2]') | +| id | j | json_exists_path(`j`, '$[2]') | +------+---------------------------------------------------------------+--------------------------------+ | 1 | NULL | NULL | | 2 | null | 0 | @@ -751,13 +751,13 @@ mysql> SELECT id, j, jsonb_exists_path(j, '$[2]') FROM test_jsonb ORDER BY id; ``` -##### 用jsonb_type获取json内的某个字段的类型 +##### 用json_type获取json内的某个字段的类型 - 返回json path对应的json字段类型,如果不存在返回NULL ``` -mysql> SELECT id, j, jsonb_type(j, '$') FROM test_jsonb ORDER BY id; +mysql> SELECT id, j, json_type(j, '$') FROM test_json ORDER BY id; +------+---------------------------------------------------------------+----------------------+ -| id | j | jsonb_type(`j`, '$') | +| id | j | json_type(`j`, '$') | +------+---------------------------------------------------------------+----------------------+ | 1 | NULL | NULL | | 2 | null | null | @@ -781,9 +781,9 @@ mysql> SELECT id, j, jsonb_type(j, '$') FROM test_jsonb ORDER BY id; +------+---------------------------------------------------------------+----------------------+ 19 rows in set (0.02 sec) -mysql> select id, j, jsonb_type(j, '$.k1') from test_jsonb order by id; +mysql> select id, j, json_type(j, '$.k1') from test_json order by id; +------+---------------------------------------------------------------+-------------------------+ -| id | j | jsonb_type(`j`, '$.k1') | +| id | j | json_type(`j`, '$.k1') | +------+---------------------------------------------------------------+-------------------------+ | 1 | NULL | NULL | | 2 | null | NULL | @@ -810,4 +810,4 @@ mysql> select id, j, jsonb_type(j, '$.k1') from test_jsonb order by id; ``` ### keywords -JSONB, JSON, jsonb_parse, jsonb_parse_error_to_null, jsonb_parse_error_to_value, jsonb_extract, jsonb_extract_isnull, jsonb_extract_bool, jsonb_extract_int, jsonb_extract_bigint, jsonb_extract_double, jsonb_extract_string, jsonb_exists_path, jsonb_type +JSON, json_parse, json_parse_error_to_null, json_parse_error_to_value, json_extract, json_extract_isnull, json_extract_bool, json_extract_int, json_extract_bigint, json_extract_double, json_extract_string, json_exists_path, json_type diff --git a/fe/fe-common/src/main/java/org/apache/doris/catalog/PrimitiveType.java b/fe/fe-common/src/main/java/org/apache/doris/catalog/PrimitiveType.java index 94f19d0f26..0ab70f4275 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/catalog/PrimitiveType.java +++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/PrimitiveType.java @@ -48,7 +48,7 @@ public enum PrimitiveType { // 8-byte pointer and 4-byte length indicator (12 bytes total). // Aligning to 8 bytes so 16 total. VARCHAR("VARCHAR", 16, TPrimitiveType.VARCHAR, true), - JSONB("JSONB", 16, TPrimitiveType.JSONB, true), + JSONB("JSON", 16, TPrimitiveType.JSONB, true), DECIMALV2("DECIMALV2", 16, TPrimitiveType.DECIMALV2, true), DECIMAL32("DECIMAL32", 4, TPrimitiveType.DECIMAL32, true), diff --git a/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java b/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java index 5264929850..e4dd45f17b 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java +++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java @@ -240,7 +240,7 @@ public class ScalarType extends Type { return CHAR; case "VARCHAR": return createVarcharType(); - case "JSONB": + case "JSON": return createJsonbType(); case "STRING": case "TEXT": @@ -548,7 +548,7 @@ public class ScalarType extends Type { } else if (type == PrimitiveType.STRING) { return "TEXT"; } else if (type == PrimitiveType.JSONB) { - return "JSONB"; + return "JSON"; } return type.toString(); } @@ -633,7 +633,7 @@ public class ScalarType extends Type { stringBuilder.append("text"); break; case JSONB: - stringBuilder.append("jsonb"); + stringBuilder.append("json"); break; case ARRAY: stringBuilder.append(type.toString().toLowerCase()); diff --git a/fe/fe-core/src/main/cup/sql_parser.cup b/fe/fe-core/src/main/cup/sql_parser.cup index b84128a3d2..75f2cedb90 100644 --- a/fe/fe-core/src/main/cup/sql_parser.cup +++ b/fe/fe-core/src/main/cup/sql_parser.cup @@ -421,6 +421,7 @@ terminal String KW_INVERTED, KW_JOB, KW_JOIN, + KW_JSON, KW_JSONB, KW_KEY, KW_KEYS, @@ -5995,6 +5996,8 @@ type ::= {: RESULT = Type.QUANTILE_STATE; :} | KW_STRING {: RESULT = ScalarType.createStringType(); :} + | KW_JSON + {: RESULT = ScalarType.createJsonbType(); :} | KW_JSONB {: RESULT = ScalarType.createJsonbType(); :} | KW_TEXT @@ -7216,6 +7219,8 @@ keyword ::= {: RESULT = id; :} | KW_JOB:id {: RESULT = id; :} + | KW_JSON:id + {: RESULT = id; :} | KW_JSONB:id {: RESULT = id; :} | KW_ENCRYPTKEY:id diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java index 9e71c8c952..bca12162cb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java @@ -78,7 +78,7 @@ public class Util { TYPE_STRING_MAP.put(PrimitiveType.DATETIMEV2, "datetimev2"); TYPE_STRING_MAP.put(PrimitiveType.CHAR, "char(%d)"); TYPE_STRING_MAP.put(PrimitiveType.VARCHAR, "varchar(%d)"); - TYPE_STRING_MAP.put(PrimitiveType.JSONB, "jsonb"); + TYPE_STRING_MAP.put(PrimitiveType.JSONB, "json"); TYPE_STRING_MAP.put(PrimitiveType.STRING, "string"); TYPE_STRING_MAP.put(PrimitiveType.DECIMALV2, "decimal(%d, %d)"); TYPE_STRING_MAP.put(PrimitiveType.DECIMAL32, "decimal(%d, %d)"); diff --git a/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java b/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java index b0ab8a6980..c3f1298015 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java @@ -625,7 +625,7 @@ public class JdbcClient { case "inet": case "macaddr": case "varbit": - case "jsonb": + case "json": case "uuid": case "bytea": return ScalarType.createStringType(); diff --git a/fe/fe-core/src/main/jflex/sql_scanner.flex b/fe/fe-core/src/main/jflex/sql_scanner.flex index 34d6eb5d57..987be26b40 100644 --- a/fe/fe-core/src/main/jflex/sql_scanner.flex +++ b/fe/fe-core/src/main/jflex/sql_scanner.flex @@ -278,6 +278,7 @@ import org.apache.doris.qe.SqlModeHelper; keywordMap.put("isolation", new Integer(SqlParserSymbols.KW_ISOLATION)); keywordMap.put("job", new Integer(SqlParserSymbols.KW_JOB)); keywordMap.put("join", new Integer(SqlParserSymbols.KW_JOIN)); + keywordMap.put("json", new Integer(SqlParserSymbols.KW_JSON)); keywordMap.put("jsonb", new Integer(SqlParserSymbols.KW_JSONB)); keywordMap.put("key", new Integer(SqlParserSymbols.KW_KEY)); keywordMap.put("keys", new Integer(SqlParserSymbols.KW_KEYS)); diff --git a/gensrc/script/doris_builtins_functions.py b/gensrc/script/doris_builtins_functions.py index fdf8a2b9e5..919e6f4cd5 100644 --- a/gensrc/script/doris_builtins_functions.py +++ b/gensrc/script/doris_builtins_functions.py @@ -1623,7 +1623,7 @@ visible_functions = [ [['field'], 'INT', ['VARCHAR', '...'], ''], [['field'], 'INT', ['STRING', '...'], ''], - # Jsonb functions + # JSON functions [['jsonb_parse'], 'JSONB', ['VARCHAR'], ''], [['jsonb_parse_error_to_null'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'], [['jsonb_parse_error_to_value'], 'JSONB', ['VARCHAR', 'VARCHAR'], ''], @@ -1656,6 +1656,38 @@ visible_functions = [ [['jsonb_extract_string'], 'STRING', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'], [['jsonb_extract_string'], 'STRING', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'], + [['json_parse'], 'JSONB', ['VARCHAR'], ''], + [['json_parse_error_to_null'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'], + [['json_parse_error_to_value'], 'JSONB', ['VARCHAR', 'VARCHAR'], ''], + [['json_parse_error_to_invalid'], 'JSONB', ['VARCHAR'], ''], + [['json_parse_nullable'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'], + [['json_parse_nullable_error_to_null'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'], + [['json_parse_nullable_error_to_value'], 'JSONB', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'], + [['json_parse_nullable_error_to_invalid'], 'JSONB', ['VARCHAR'], 'ALWAYS_NULLABLE'], + [['json_parse_notnull'], 'JSONB', ['VARCHAR'], ''], + [['json_parse_notnull_error_to_value'], 'JSONB', ['VARCHAR', 'VARCHAR'], ''], + [['json_parse_notnull_error_to_invalid'], 'JSONB', ['VARCHAR'], ''], + + [['json_exists_path'], 'BOOLEAN', ['JSONB', 'VARCHAR'], ''], + [['json_exists_path'], 'BOOLEAN', ['JSONB', 'STRING'], ''], + [['json_type'], 'STRING', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'], + [['json_type'], 'STRING', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'], + + [['jsonb_extract'], 'JSONB', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'], + [['jsonb_extract'], 'JSONB', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'], + [['json_extract_isnull'], 'BOOLEAN', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'], + [['json_extract_isnull'], 'BOOLEAN', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'], + [['json_extract_bool'], 'BOOLEAN', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'], + [['json_extract_bool'], 'BOOLEAN', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'], + [['json_extract_int'], 'INT', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'], + [['json_extract_int'], 'INT', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'], + [['json_extract_bigint'], 'BIGINT', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'], + [['json_extract_bigint'], 'BIGINT', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'], + [['json_extract_double'], 'DOUBLE', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'], + [['json_extract_double'], 'DOUBLE', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'], + [['json_extract_string'], 'STRING', ['JSONB', 'VARCHAR'], 'ALWAYS_NULLABLE'], + [['json_extract_string'], 'STRING', ['JSONB', 'STRING'], 'ALWAYS_NULLABLE'], + # Json functions [['get_json_int'], 'INT', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'], [['get_json_double'], 'DOUBLE', ['VARCHAR', 'VARCHAR'], 'ALWAYS_NULLABLE'], diff --git a/regression-test/data/json_p0/test_json.csv b/regression-test/data/json_p0/test_json.csv new file mode 100644 index 0000000000..3a33f80e5b --- /dev/null +++ b/regression-test/data/json_p0/test_json.csv @@ -0,0 +1,25 @@ +1 \N +2 null +3 true +4 false +5 100 +6 10000 +7 1000000000 +8 1152921504606846976 +9 6.18 +10 "abcd" +11 {} +12 {"k1":"v31", "k2": 300} +13 [] +14 [123, 456] +15 ["abc", "def"] +16 [null, true, false, 100, 6.18, "abc"] +17 [{"k1":"v41", "k2": 400}, 1, "a", 3.14] +18 {"k1":"v31", "k2": 300, "a1": [{"k1":"v41", "k2": 400}, 1, "a", 3.14]} +19 '' +20 'abc' +21 abc +22 100x +23 6.a8 +24 {x +25 [123, abc] diff --git a/regression-test/data/json_p0/test_json_load_and_function.out b/regression-test/data/json_p0/test_json_load_and_function.out new file mode 100644 index 0000000000..51d4485d6a --- /dev/null +++ b/regression-test/data/json_p0/test_json_load_and_function.out @@ -0,0 +1,4429 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !select -- +1 \N +2 null +3 true +4 false +5 100 +6 10000 +7 1000000000 +8 1152921504606846976 +9 6.18 +10 "abcd" +11 {} +12 {"k1":"v31","k2":300} +13 [] +14 [123,456] +15 ["abc","def"] +16 [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} + +-- !select -- +1 \N +2 null +3 true +4 false +5 100 +6 10000 +7 1000000000 +8 1152921504606846976 +9 6.18 +10 "abcd" +11 {} +12 {"k1":"v31","k2":300} +13 [] +14 [123,456] +15 ["abc","def"] +16 [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +26 \N +27 {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} + +-- !select -- +1 \N \N +2 null null +3 true true +4 false false +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 6.18 +10 "abcd" "abcd" +11 {} {} +12 {"k1":"v31","k2":300} {"k1":"v31","k2":300} +13 [] [] +14 [123,456] [123,456] +15 ["abc","def"] ["abc","def"] +16 [null,true,false,100,6.18,"abc"] [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +26 \N \N +27 {"k1":"v1","k2":200} {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} {} +12 {"k1":"v31","k2":300} {"k1":"v31","k2":300} +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +26 \N \N +27 {"k1":"v1","k2":200} {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} "v31" +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} "v31" +26 \N \N +27 {"k1":"v1","k2":200} "v1" +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} {"k1.a1":"v31","k2":300} + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} "v31" + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} 300 +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300 +26 \N \N +27 {"k1":"v1","k2":200} 200 +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 123 +15 ["abc","def"] "abc" +16 [null,true,false,100,6.18,"abc"] null +17 [{"k1":"v41","k2":400},1,"a",3.14] {"k1":"v41","k2":400} +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 456 +15 ["abc","def"] "def" +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] 1 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] "a" +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 100 +17 [{"k1":"v41","k2":400},1,"a",3.14] 3.14 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 6.18 +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] "abc" +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} [{"k1":"v41","k2":400},1,"a",3.14] +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v41","k2":400} +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 1 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} "a" +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 3.14 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 3.14 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} "a" +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 1 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null null +3 true true +4 false false +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 6.18 +10 "abcd" abcd +11 {} {} +12 {"k1":"v31","k2":300} {"k1":"v31","k2":300} +13 [] [] +14 [123,456] [123,456] +15 ["abc","def"] ["abc","def"] +16 [null,true,false,100,6.18,"abc"] [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +26 \N \N +27 {"k1":"v1","k2":200} {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} v31 +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} v31 +26 \N \N +27 {"k1":"v1","k2":200} v1 +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} 300 +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300 +26 \N \N +27 {"k1":"v1","k2":200} 200 +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 123 +15 ["abc","def"] abc +16 [null,true,false,100,6.18,"abc"] null +17 [{"k1":"v41","k2":400},1,"a",3.14] {"k1":"v41","k2":400} +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 456 +15 ["abc","def"] def +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] 1 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] a +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 100 +17 [{"k1":"v41","k2":400},1,"a",3.14] 3.14 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 6.18 +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] abc +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} [{"k1":"v41","k2":400},1,"a",3.14] +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v41","k2":400} +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 1 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} a +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 3.14 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} 300 +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300 +26 \N \N +27 {"k1":"v1","k2":200} 200 +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 123 +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 456 +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] 1 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 100 +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 1 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} 300 +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300 +26 \N \N +27 {"k1":"v1","k2":200} 200 +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 123 +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 456 +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] 1 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 100 +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 1 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100.0 +6 10000 10000.0 +7 1000000000 1.0E9 +8 1152921504606846976 1.15292150460684698E18 +9 6.18 6.18 +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} 300.0 +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300.0 +26 \N \N +27 {"k1":"v1","k2":200} 200.0 +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 123.0 +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 456.0 +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] 1.0 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 100.0 +17 [{"k1":"v41","k2":400},1,"a",3.14] 3.14 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 6.18 +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 1.0 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 3.14 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true true +4 false false +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null true +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} false +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} false +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null true +3 true true +4 false true +5 100 true +6 10000 true +7 1000000000 true +8 1152921504606846976 true +9 6.18 true +10 "abcd" true +11 {} true +12 {"k1":"v31","k2":300} true +13 [] true +14 [123,456] true +15 ["abc","def"] true +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] true +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} true +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} true + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} true +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} true +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} true +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} true +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] true +15 ["abc","def"] true +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] true +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] true +15 ["abc","def"] true +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] true +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] true +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] true +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null null +3 true bool +4 false bool +5 100 int +6 10000 int +7 1000000000 int +8 1152921504606846976 bigint +9 6.18 double +10 "abcd" string +11 {} object +12 {"k1":"v31","k2":300} object +13 [] array +14 [123,456] array +15 ["abc","def"] array +16 [null,true,false,100,6.18,"abc"] array +17 [{"k1":"v41","k2":400},1,"a",3.14] array +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} object +26 \N \N +27 {"k1":"v1","k2":200} object +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} object + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} string +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} string +26 \N \N +27 {"k1":"v1","k2":200} string +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} int +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} int +26 \N \N +27 {"k1":"v1","k2":200} int +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] int +15 ["abc","def"] string +16 [null,true,false,100,6.18,"abc"] null +17 [{"k1":"v41","k2":400},1,"a",3.14] object +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] int +15 ["abc","def"] string +16 [null,true,false,100,6.18,"abc"] bool +17 [{"k1":"v41","k2":400},1,"a",3.14] int +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] bool +17 [{"k1":"v41","k2":400},1,"a",3.14] string +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] int +17 [{"k1":"v41","k2":400},1,"a",3.14] double +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] double +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] string +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} array +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} object +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} int +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} string +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} double +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true true +4 false false +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100.0 +6 10000 10000.0 +7 1000000000 1.0E9 +8 1152921504606846976 1.15292150460684698E18 +9 6.18 6.18 +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null null +3 true true +4 false false +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 6.18 +10 "abcd" "abcd" +11 {} {} +12 {"k1":"v31","k2":300} {"k1":"v31","k2":300} +13 [] [] +14 [123,456] [123,456] +15 ["abc","def"] ["abc","def"] +16 [null,true,false,100,6.18,"abc"] [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +26 \N \N +27 {"k1":"v1","k2":200} {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} + +-- !select -- +1 \N \N +2 null \N +3 true true +4 false false +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1.15292150460685e+18 +9 6.18 6.18 +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null null +3 true true +4 false false +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 6.18 +10 "abcd" "abcd" +11 {} {} +12 {"k1":"v31","k2":300} {"k1":"v31","k2":300} +13 [] [] +14 [123,456] [123,456] +15 ["abc","def"] ["abc","def"] +16 [null,true,false,100,6.18,"abc"] [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +26 \N \N +27 {"k1":"v1","k2":200} {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} + +-- !select -- +\N + +-- !select -- +null + +-- !select -- +true + +-- !select -- +false + +-- !select -- +100 + +-- !select -- +10000 + +-- !select -- +1000000000 + +-- !select -- +1152921504606846976 + +-- !select -- +6.18 + +-- !select -- +"abcd" + +-- !select -- +{} + +-- !select -- +{"k1":"v31","k2":300} + +-- !select -- +[] + +-- !select -- +[123,456] + +-- !select -- +["abc","def"] + +-- !select -- +[null,true,false,100,6.18,"abc"] + +-- !select -- +[{"k1":"v41","k2":400},1,"a",3.14] + +-- !select -- +{"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} + +-- !select -- +\N + +-- !select -- +\N + +-- !select -- +\N + +-- !select -- +\N + +-- !select -- +\N + +-- !select -- +\N + +-- !select -- +\N + +-- !select -- +1 \N +2 1 +3 1 +4 1 +5 1 +6 1 +7 1 +8 1 +9 1 +10 1 +11 1 +12 1 +13 1 +14 1 +15 1 +16 1 +17 1 +18 1 +26 \N +27 1 +28 1 + +-- !select -- +1 + +-- !select -- +0 + +-- !select -- +\N + +-- !select -- +1 \N \N +2 null null +3 true null +4 false null +5 100 null +6 10000 null +7 1000000000 null +8 1152921504606846976 null +9 6.18 null +10 "abcd" null +11 {} null +12 {"k1":"v31","k2":300} "v31" +13 [] null +14 [123,456] null +15 ["abc","def"] null +16 [null,true,false,100,6.18,"abc"] null +17 [{"k1":"v41","k2":400},1,"a",3.14] ["v41"] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} "v31" +26 \N \N +27 {"k1":"v1","k2":200} "v1" +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} null + +-- !select -- +1 \N \N +2 null [null,null] +3 true [null,null] +4 false [null,null] +5 100 [null,null] +6 10000 [null,null] +7 1000000000 [null,null] +8 1152921504606846976 [null,null] +9 6.18 [null,null] +10 "abcd" [null,null] +11 {} [null,null] +12 {"k1":"v31","k2":300} [300,null] +13 [] [null,null] +14 [123,456] [null,456] +15 ["abc","def"] [null,"def"] +16 [null,true,false,100,6.18,"abc"] [null,true] +17 [{"k1":"v41","k2":400},1,"a",3.14] [[400],1] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} [300,null] +26 \N \N +27 {"k1":"v1","k2":200} [200,null] +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} [null,null] + +-- !select -- +1 \N \N +2 null [null,null] +3 true [null,null] +4 false [null,null] +5 100 [null,null] +6 10000 [null,null] +7 1000000000 [null,null] +8 1152921504606846976 [null,null] +9 6.18 [null,null] +10 "abcd" [null,null] +11 {} [null,null] +12 {"k1":"v31","k2":300} [300,null] +13 [] [null,null] +14 [123,456] [null,null] +15 ["abc","def"] [null,null] +16 [null,true,false,100,6.18,"abc"] [null,null] +17 [{"k1":"v41","k2":400},1,"a",3.14] [[400],null] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} [300,null] +26 \N \N +27 {"k1":"v1","k2":200} [200,null] +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} [null,null] + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null [null,null,null] +3 true [null,null,null] +4 false [null,null,null] +5 100 [null,null,null] +6 10000 [null,null,null] +7 1000000000 [null,null,null] +8 1152921504606846976 [null,null,null] +9 6.18 [null,null,null] +10 "abcd" [null,null,null] +11 {} [null,null,null] +12 {"k1":"v31","k2":300} [null,null,null] +13 [] [null,null,null] +14 [123,456] [null,null,null] +15 ["abc","def"] [null,null,null] +16 [null,true,false,100,6.18,"abc"] [null,null,null] +17 [{"k1":"v41","k2":400},1,"a",3.14] [null,null,null] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} ["v41",400,"a"] +26 \N \N +27 {"k1":"v1","k2":200} [null,null,null] +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} [null,null,null] + diff --git a/regression-test/data/json_p0/test_json_load_unique_key_and_function.out b/regression-test/data/json_p0/test_json_load_unique_key_and_function.out new file mode 100644 index 0000000000..01bc0b3de7 --- /dev/null +++ b/regression-test/data/json_p0/test_json_load_unique_key_and_function.out @@ -0,0 +1,4282 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !select -- +1 \N +2 null +3 true +4 false +5 100 +6 10000 +7 1000000000 +8 1152921504606846976 +9 6.18 +10 "abcd" +11 {} +12 {"k1":"v31","k2":300} +13 [] +14 [123,456] +15 ["abc","def"] +16 [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} + +-- !select -- +1 \N +2 null +3 true +4 false +5 100 +6 10000 +7 1000000000 +8 1152921504606846976 +9 6.18 +10 "abcd" +11 {} +12 {"k1":"v31","k2":300} +13 [] +14 [123,456] +15 ["abc","def"] +16 [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +26 \N +27 {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} + +-- !select -- +1 \N \N +2 null null +3 true true +4 false false +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 6.18 +10 "abcd" "abcd" +11 {} {} +12 {"k1":"v31","k2":300} {"k1":"v31","k2":300} +13 [] [] +14 [123,456] [123,456] +15 ["abc","def"] ["abc","def"] +16 [null,true,false,100,6.18,"abc"] [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +26 \N \N +27 {"k1":"v1","k2":200} {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} {} +12 {"k1":"v31","k2":300} {"k1":"v31","k2":300} +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +26 \N \N +27 {"k1":"v1","k2":200} {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} "v31" +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} "v31" +26 \N \N +27 {"k1":"v1","k2":200} "v1" +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} {"k1.a1":"v31","k2":300} + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} "v31" + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} 300 +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300 +26 \N \N +27 {"k1":"v1","k2":200} 200 +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 123 +15 ["abc","def"] "abc" +16 [null,true,false,100,6.18,"abc"] null +17 [{"k1":"v41","k2":400},1,"a",3.14] {"k1":"v41","k2":400} +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 456 +15 ["abc","def"] "def" +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] 1 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] "a" +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 100 +17 [{"k1":"v41","k2":400},1,"a",3.14] 3.14 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 6.18 +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] "abc" +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} [{"k1":"v41","k2":400},1,"a",3.14] +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v41","k2":400} +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 1 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} "a" +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 3.14 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 3.14 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} "a" +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 1 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null null +3 true true +4 false false +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 6.18 +10 "abcd" abcd +11 {} {} +12 {"k1":"v31","k2":300} {"k1":"v31","k2":300} +13 [] [] +14 [123,456] [123,456] +15 ["abc","def"] ["abc","def"] +16 [null,true,false,100,6.18,"abc"] [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +26 \N \N +27 {"k1":"v1","k2":200} {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} v31 +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} v31 +26 \N \N +27 {"k1":"v1","k2":200} v1 +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} 300 +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300 +26 \N \N +27 {"k1":"v1","k2":200} 200 +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 123 +15 ["abc","def"] abc +16 [null,true,false,100,6.18,"abc"] null +17 [{"k1":"v41","k2":400},1,"a",3.14] {"k1":"v41","k2":400} +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 456 +15 ["abc","def"] def +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] 1 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] a +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 100 +17 [{"k1":"v41","k2":400},1,"a",3.14] 3.14 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 6.18 +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] abc +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} [{"k1":"v41","k2":400},1,"a",3.14] +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v41","k2":400} +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 1 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} a +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 3.14 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} 300 +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300 +26 \N \N +27 {"k1":"v1","k2":200} 200 +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 123 +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 456 +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] 1 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 100 +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 1 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} 300 +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300 +26 \N \N +27 {"k1":"v1","k2":200} 200 +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 123 +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 456 +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] 1 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 100 +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 1 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100.0 +6 10000 10000.0 +7 1000000000 1.0E9 +8 1152921504606846976 1.15292150460684698E18 +9 6.18 6.18 +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} 300.0 +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300.0 +26 \N \N +27 {"k1":"v1","k2":200} 200.0 +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 123.0 +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] 456.0 +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] 1.0 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 100.0 +17 [{"k1":"v41","k2":400},1,"a",3.14] 3.14 +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] 6.18 +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 1.0 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 3.14 +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true true +4 false false +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null true +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} false +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} false +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null true +3 true true +4 false true +5 100 true +6 10000 true +7 1000000000 true +8 1152921504606846976 true +9 6.18 true +10 "abcd" true +11 {} true +12 {"k1":"v31","k2":300} true +13 [] true +14 [123,456] true +15 ["abc","def"] true +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] true +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} true +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} true + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} true +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} true +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} true +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} true +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] true +15 ["abc","def"] true +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] true +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] true +15 ["abc","def"] true +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] true +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] true +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] true +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] true +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null false +3 true false +4 false false +5 100 false +6 10000 false +7 1000000000 false +8 1152921504606846976 false +9 6.18 false +10 "abcd" false +11 {} false +12 {"k1":"v31","k2":300} false +13 [] false +14 [123,456] false +15 ["abc","def"] false +16 [null,true,false,100,6.18,"abc"] false +17 [{"k1":"v41","k2":400},1,"a",3.14] false +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false +26 \N \N +27 {"k1":"v1","k2":200} false +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false + +-- !select -- +1 \N \N +2 null null +3 true bool +4 false bool +5 100 int +6 10000 int +7 1000000000 int +8 1152921504606846976 bigint +9 6.18 double +10 "abcd" string +11 {} object +12 {"k1":"v31","k2":300} object +13 [] array +14 [123,456] array +15 ["abc","def"] array +16 [null,true,false,100,6.18,"abc"] array +17 [{"k1":"v41","k2":400},1,"a",3.14] array +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} object +26 \N \N +27 {"k1":"v1","k2":200} object +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} object + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} string +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} string +26 \N \N +27 {"k1":"v1","k2":200} string +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} int +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} int +26 \N \N +27 {"k1":"v1","k2":200} int +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] int +15 ["abc","def"] string +16 [null,true,false,100,6.18,"abc"] null +17 [{"k1":"v41","k2":400},1,"a",3.14] object +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] int +15 ["abc","def"] string +16 [null,true,false,100,6.18,"abc"] bool +17 [{"k1":"v41","k2":400},1,"a",3.14] int +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] bool +17 [{"k1":"v41","k2":400},1,"a",3.14] string +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] int +17 [{"k1":"v41","k2":400},1,"a",3.14] double +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] double +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] string +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} array +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} object +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} int +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} string +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} double +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true true +4 false false +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100.0 +6 10000 10000.0 +7 1000000000 1.0E9 +8 1152921504606846976 1.15292150460684698E18 +9 6.18 6.18 +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null null +3 true true +4 false false +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 6.18 +10 "abcd" "abcd" +11 {} {} +12 {"k1":"v31","k2":300} {"k1":"v31","k2":300} +13 [] [] +14 [123,456] [123,456] +15 ["abc","def"] ["abc","def"] +16 [null,true,false,100,6.18,"abc"] [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +26 \N \N +27 {"k1":"v1","k2":200} {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} + +-- !select -- +1 \N \N +2 null \N +3 true true +4 false false +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1.15292150460685e+18 +9 6.18 6.18 +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} \N +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N +26 \N \N +27 {"k1":"v1","k2":200} \N +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N + +-- !select -- +1 \N \N +2 null null +3 true true +4 false false +5 100 100 +6 10000 10000 +7 1000000000 1000000000 +8 1152921504606846976 1152921504606846976 +9 6.18 6.18 +10 "abcd" "abcd" +11 {} {} +12 {"k1":"v31","k2":300} {"k1":"v31","k2":300} +13 [] [] +14 [123,456] [123,456] +15 ["abc","def"] ["abc","def"] +16 [null,true,false,100,6.18,"abc"] [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +26 \N \N +27 {"k1":"v1","k2":200} {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} + +-- !select -- +\N + +-- !select -- +null + +-- !select -- +true + +-- !select -- +false + +-- !select -- +100 + +-- !select -- +10000 + +-- !select -- +1000000000 + +-- !select -- +1152921504606846976 + +-- !select -- +6.18 + +-- !select -- +"abcd" + +-- !select -- +{} + +-- !select -- +{"k1":"v31","k2":300} + +-- !select -- +[] + +-- !select -- +[123,456] + +-- !select -- +["abc","def"] + +-- !select -- +[null,true,false,100,6.18,"abc"] + +-- !select -- +[{"k1":"v41","k2":400},1,"a",3.14] + +-- !select -- +{"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} + +-- !select -- +\N + +-- !select -- +\N + +-- !select -- +\N + +-- !select -- +\N + +-- !select -- +\N + +-- !select -- +\N + +-- !select -- +\N + diff --git a/regression-test/data/json_p0/test_json_unique_key.csv b/regression-test/data/json_p0/test_json_unique_key.csv new file mode 100644 index 0000000000..88cc692786 --- /dev/null +++ b/regression-test/data/json_p0/test_json_unique_key.csv @@ -0,0 +1,75 @@ +1 \N +2 null +3 true +4 false +5 100 +6 10000 +7 1000000000 +8 1152921504606846976 +9 6.18 +10 "abcd" +11 {} +12 {"k1":"v31", "k2": 300} +13 [] +14 [123, 456] +15 ["abc", "def"] +16 [null, true, false, 100, 6.18, "abc"] +17 [{"k1":"v41", "k2": 400}, 1, "a", 3.14] +18 {"k1":"v31", "k2": 300, "a1": [{"k1":"v41", "k2": 400}, 1, "a", 3.14]} +19 '' +20 'abc' +21 abc +22 100x +23 6.a8 +24 {x +25 [123, abc] +1 \N +2 null +3 true +4 false +5 100 +6 10000 +7 1000000000 +8 1152921504606846976 +9 6.18 +10 "abcd" +11 {} +12 {"k1":"v31", "k2": 300} +13 [] +14 [123, 456] +15 ["abc", "def"] +16 [null, true, false, 100, 6.18, "abc"] +17 [{"k1":"v41", "k2": 400}, 1, "a", 3.14] +18 {"k1":"v31", "k2": 300, "a1": [{"k1":"v41", "k2": 400}, 1, "a", 3.14]} +19 '' +20 'abc' +21 abc +22 100x +23 6.a8 +24 {x +25 [123, abc] +1 \N +2 null +3 true +4 false +5 100 +6 10000 +7 1000000000 +8 1152921504606846976 +9 6.18 +10 "abcd" +11 {} +12 {"k1":"v31", "k2": 300} +13 [] +14 [123, 456] +15 ["abc", "def"] +16 [null, true, false, 100, 6.18, "abc"] +17 [{"k1":"v41", "k2": 400}, 1, "a", 3.14] +18 {"k1":"v31", "k2": 300, "a1": [{"k1":"v41", "k2": 400}, 1, "a", 3.14]} +19 '' +20 'abc' +21 abc +22 100x +23 6.a8 +24 {x +25 [123, abc] diff --git a/regression-test/data/types/test_show_data_types.out b/regression-test/data/types/test_show_data_types.out index a54164919a..efdc170576 100644 --- a/regression-test/data/types/test_show_data_types.out +++ b/regression-test/data/types/test_show_data_types.out @@ -17,7 +17,7 @@ DOUBLE 8 FLOAT 4 HLL 16 INT 4 -JSONB 16 +JSON 16 LARGEINT 16 MAP 24 QUANTILE_STATE 16 diff --git a/regression-test/suites/json_p0/test_json_load_and_function.groovy b/regression-test/suites/json_p0/test_json_load_and_function.groovy new file mode 100644 index 0000000000..a7280b0dd0 --- /dev/null +++ b/regression-test/suites/json_p0/test_json_load_and_function.groovy @@ -0,0 +1,437 @@ +// 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 +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import org.codehaus.groovy.runtime.IOGroovyMethods + +suite("test_json_load_and_function", "p0") { + // define a sql table + def testTable = "tbl_test_json" + def dataFile = "test_json.csv" + + sql "DROP TABLE IF EXISTS ${testTable}" + + sql """ + CREATE TABLE IF NOT EXISTS ${testTable} ( + id INT, + j JSON + ) + DUPLICATE KEY(id) + DISTRIBUTED BY HASH(id) BUCKETS 10 + PROPERTIES("replication_num" = "1"); + """ + + // load the json data from csv file + streamLoad { + table testTable + + file dataFile // import csv file + time 10000 // limit inflight 10s + set 'strict_mode', 'true' + + // if declared a check callback, the default check condition will ignore. + // So you must check all condition + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + + StringBuilder sb = new StringBuilder() + sb.append("curl -X GET " + json.ErrorURL) + String command = sb.toString() + def process = command.execute() + def code = process.waitFor() + def err = IOGroovyMethods.getText(new BufferedReader(new InputStreamReader(process.getErrorStream()))) + def out = process.getText() + log.info("error result: " + out) + + assertEquals("fail", json.Status.toLowerCase()) + assertTrue(json.Message.contains("too many filtered rows")) + assertEquals(25, json.NumberTotalRows) + assertEquals(18, json.NumberLoadedRows) + assertEquals(7, json.NumberFilteredRows) + assertTrue(json.LoadBytes > 0) + log.info("url: " + json.ErrorURL) + } + } + + // load the json data from csv file + // success with header 'max_filter_ratio: 0.3' + streamLoad { + table testTable + + // set http request header params + set 'max_filter_ratio', '0.3' + file dataFile // import csv file + time 10000 // limit inflight 10s + set 'strict_mode', 'true' + + // if declared a check callback, the default check condition will ignore. + // So you must check all condition + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + + StringBuilder sb = new StringBuilder() + sb.append("curl -X GET " + json.ErrorURL) + String command = sb.toString() + def process = command.execute() + def code = process.waitFor() + def err = IOGroovyMethods.getText(new BufferedReader(new InputStreamReader(process.getErrorStream()))) + def out = process.getText() + log.info("error result: " + out) + + assertEquals("success", json.Status.toLowerCase()) + assertEquals(25, json.NumberTotalRows) + assertEquals(18, json.NumberLoadedRows) + assertEquals(7, json.NumberFilteredRows) + assertTrue(json.LoadBytes > 0) + } + } + + // check result + qt_select "SELECT * FROM ${testTable} ORDER BY id" + + // insert into valid json rows + sql """INSERT INTO ${testTable} VALUES(26, NULL)""" + sql """INSERT INTO ${testTable} VALUES(27, '{"k1":"v1", "k2": 200}')""" + sql """INSERT INTO ${testTable} VALUES(28, '{"a.b.c":{"k1.a1":"v31", "k2": 300},"a":"niu"}')""" + + // insert into invalid json rows with enable_insert_strict=true + // expect excepiton and no rows not changed + sql """ set enable_insert_strict = true """ + success = true + try { + sql """INSERT INTO ${testTable} VALUES(26, '')""" + } catch(Exception ex) { + logger.info("""INSERT INTO ${testTable} invalid json failed: """ + ex) + success = false + } + assertEquals(false, success) + success = true + try { + sql """INSERT INTO ${testTable} VALUES(26, 'abc')""" + } catch(Exception ex) { + logger.info("""INSERT INTO ${testTable} invalid json failed: """ + ex) + success = false + } + assertEquals(false, success) + + // insert into invalid json rows with enable_insert_strict=false + // expect no excepiton but no rows not changed + sql """ set enable_insert_strict = false """ + success = true + try { + sql """INSERT INTO ${testTable} VALUES(26, '')""" + } catch(Exception ex) { + logger.info("""INSERT INTO ${testTable} invalid json failed: """ + ex) + success = false + } + assertEquals(true, success) + success = true + try { + sql """INSERT INTO ${testTable} VALUES(26, 'abc')""" + } catch(Exception ex) { + logger.info("""INSERT INTO ${testTable} invalid json failed: """ + ex) + success = false + } + assertEquals(true, success) + + qt_select "SELECT * FROM ${testTable} ORDER BY id" + + // json_extract + qt_select "SELECT id, j, jsonb_extract(j, '\$') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.*') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, jsonb_extract(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.\"a.b.c\"') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.\"a.b.c\".\"k1.a1\"') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, jsonb_extract(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id" + + // json_extract_string + qt_select "SELECT id, j, json_extract_string(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_string(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_string(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_string(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_string(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + // json_extract_int + qt_select "SELECT id, j, json_extract_int(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_int(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_int(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_int(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_int(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + // json_extract_bigint + qt_select "SELECT id, j, json_extract_bigint(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bigint(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bigint(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + + // json_extract_double + qt_select "SELECT id, j, json_extract_double(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_double(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_double(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_double(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_double(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + // json_extract_bool + qt_select "SELECT id, j, json_extract_bool(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bool(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bool(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + // json_extract_isnull + qt_select "SELECT id, j, json_extract_isnull(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_isnull(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_isnull(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + // json_exists_path + qt_select "SELECT id, j, json_exists_path(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_exists_path(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_exists_path(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_exists_path(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_exists_path(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + // json_type + qt_select "SELECT id, j, json_type(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_type(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_type(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_type(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_type(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + + // CAST from JSON + qt_select "SELECT id, j, CAST(j AS BOOLEAN) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(j AS SMALLINT) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(j AS INT) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(j AS BIGINT) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(j AS DOUBLE) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(j AS STRING) FROM ${testTable} ORDER BY id" + + // CAST to JSON + qt_select "SELECT id, j, CAST(CAST(j AS BOOLEAN) AS JSON) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(CAST(j AS SMALLINT) AS JSON) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(CAST(j AS INT) AS JSON) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(CAST(j AS BIGINT) AS JSON) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(CAST(j AS DOUBLE) AS JSON) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(CAST(j AS STRING) AS JSON) FROM ${testTable} ORDER BY id" + + qt_select """SELECT CAST(NULL AS JSON)""" + qt_select """SELECT CAST('null' AS JSON)""" + qt_select """SELECT CAST('true' AS JSON)""" + qt_select """SELECT CAST('false' AS JSON)""" + qt_select """SELECT CAST('100' AS JSON)""" + qt_select """SELECT CAST('10000' AS JSON)""" + qt_select """SELECT CAST('1000000000' AS JSON)""" + qt_select """SELECT CAST('1152921504606846976' AS JSON)""" + qt_select """SELECT CAST('6.18' AS JSON)""" + qt_select """SELECT CAST('"abcd"' AS JSON)""" + qt_select """SELECT CAST('{}' AS JSON)""" + qt_select """SELECT CAST('{"k1":"v31", "k2": 300}' AS JSON)""" + qt_select """SELECT CAST('[]' AS JSON)""" + qt_select """SELECT CAST('[123, 456]' AS JSON)""" + qt_select """SELECT CAST('["abc", "def"]' AS JSON)""" + qt_select """SELECT CAST('[null, true, false, 100, 6.18, "abc"]' AS JSON)""" + qt_select """SELECT CAST('[{"k1":"v41", "k2": 400}, 1, "a", 3.14]' AS JSON)""" + qt_select """SELECT CAST('{"k1":"v31", "k2": 300, "a1": [{"k1":"v41", "k2": 400}, 1, "a", 3.14]}' AS JSON)""" + qt_select """SELECT CAST("''" AS JSON)""" + qt_select """SELECT CAST("'abc'" AS JSON)""" + qt_select """SELECT CAST('abc' AS JSON)""" + qt_select """SELECT CAST('100x' AS JSON)""" + qt_select """SELECT CAST('6.a8' AS JSON)""" + qt_select """SELECT CAST('{x' AS JSON)""" + qt_select """SELECT CAST('[123, abc]' AS JSON)""" + + qt_select """SELECT id, JSON_VALID(j) FROM ${testTable} ORDER BY id""" + qt_select """SELECT JSON_VALID('{"k1":"v31","k2":300}')""" + qt_select """SELECT JSON_VALID('invalid json')""" + qt_select """SELECT JSON_VALID(NULL)""" + + qt_select """SELECT id, j, JSON_EXTRACT(j, '\$.k1') FROM ${testTable} ORDER BY id""" + qt_select """SELECT id, j, JSON_EXTRACT(j, '\$.k2', '\$.[1]') FROM ${testTable} ORDER BY id""" + qt_select """SELECT id, j, JSON_EXTRACT(j, '\$.k2', '\$.x.y') FROM ${testTable} ORDER BY id""" + qt_select """SELECT id, j, JSON_EXTRACT(j, '\$.k2', null) FROM ${testTable} ORDER BY id""" + qt_select """SELECT id, j, JSON_EXTRACT(j, '\$.a1[0].k1', '\$.a1[0].k2', '\$.a1[2]') FROM ${testTable} ORDER BY id""" +} diff --git a/regression-test/suites/json_p0/test_json_load_unique_key_and_function.groovy b/regression-test/suites/json_p0/test_json_load_unique_key_and_function.groovy new file mode 100644 index 0000000000..5b2c487a5f --- /dev/null +++ b/regression-test/suites/json_p0/test_json_load_unique_key_and_function.groovy @@ -0,0 +1,406 @@ +// 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 +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite("test_json_unique_load_and_function", "p0") { + // define a sql table + def testTable = "tbl_test_json_unique" + def dataFile = "test_json_unique_key.csv" + + sql "DROP TABLE IF EXISTS ${testTable}" + + sql """ + CREATE TABLE IF NOT EXISTS ${testTable} ( + id INT, + j JSON + ) + UNIQUE KEY(id) + DISTRIBUTED BY HASH(id) BUCKETS 10 + PROPERTIES("replication_num" = "1"); + """ + + // load the json data from csv file + // fail by default for invalid data rows + streamLoad { + table testTable + + file dataFile // import csv file + time 10000 // limit inflight 10s + set 'strict_mode', 'true' + + // if declared a check callback, the default check condition will ignore. + // So you must check all condition + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + assertEquals("fail", json.Status.toLowerCase()) + assertTrue(json.Message.contains("too many filtered rows")) + assertEquals(75, json.NumberTotalRows) + assertEquals(54, json.NumberLoadedRows) + assertEquals(21, json.NumberFilteredRows) + assertTrue(json.LoadBytes > 0) + } + } + + // load the json data from csv file + // success with header 'max_filter_ratio: 0.3' + streamLoad { + table testTable + + // set http request header params + set 'max_filter_ratio', '0.3' + file dataFile // import csv file + time 10000 // limit inflight 10s + set 'strict_mode', 'true' + + // if declared a check callback, the default check condition will ignore. + // So you must check all condition + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + assertEquals("success", json.Status.toLowerCase()) + assertEquals(75, json.NumberTotalRows) + assertEquals(54, json.NumberLoadedRows) + assertEquals(21, json.NumberFilteredRows) + assertTrue(json.LoadBytes > 0) + } + } + + sql "sync" + // check result + qt_select "SELECT * FROM ${testTable} ORDER BY id" + + // insert into valid json rows + sql """INSERT INTO ${testTable} VALUES(26, NULL)""" + sql """INSERT INTO ${testTable} VALUES(27, '{"k1":"v1", "k2": 200}')""" + sql """INSERT INTO ${testTable} VALUES(28, '{"a.b.c":{"k1.a1":"v31", "k2": 300},"a":"niu"}')""" + + // insert into invalid json rows with enable_insert_strict=true + // expect excepiton and no rows not changed + sql """ set enable_insert_strict = true """ + success = true + try { + sql """INSERT INTO ${testTable} VALUES(26, '')""" + } catch(Exception ex) { + logger.info("""INSERT INTO ${testTable} invalid json failed: """ + ex) + success = false + } + assertEquals(false, success) + success = true + try { + sql """INSERT INTO ${testTable} VALUES(26, 'abc')""" + } catch(Exception ex) { + logger.info("""INSERT INTO ${testTable} invalid json failed: """ + ex) + success = false + } + assertEquals(false, success) + + // insert into invalid json rows with enable_insert_strict=false + // expect no excepiton but no rows not changed + sql """ set enable_insert_strict = false """ + success = true + try { + sql """INSERT INTO ${testTable} VALUES(26, '')""" + } catch(Exception ex) { + logger.info("""INSERT INTO ${testTable} invalid json failed: """ + ex) + success = false + } + assertEquals(true, success) + success = true + try { + sql """INSERT INTO ${testTable} VALUES(26, 'abc')""" + } catch(Exception ex) { + logger.info("""INSERT INTO ${testTable} invalid json failed: """ + ex) + success = false + } + assertEquals(true, success) + + qt_select "SELECT * FROM ${testTable} ORDER BY id" + + // jsonb_extract + qt_select "SELECT id, j, jsonb_extract(j, '\$') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.*') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, jsonb_extract(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.\"a.b.c\"') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.\"a.b.c\".\"k1.a1\"') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, jsonb_extract(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id" + + // json_extract_string + qt_select "SELECT id, j, json_extract_string(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_string(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_string(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_string(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_string(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_string(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + // json_extract_int + qt_select "SELECT id, j, json_extract_int(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_int(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_int(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_int(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_int(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_int(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + // json_extract_bigint + qt_select "SELECT id, j, json_extract_bigint(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bigint(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bigint(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bigint(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + + // json_extract_double + qt_select "SELECT id, j, json_extract_double(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_double(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_double(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_double(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_double(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_double(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + // json_extract_bool + qt_select "SELECT id, j, json_extract_bool(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bool(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bool(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_bool(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + // json_extract_isnull + qt_select "SELECT id, j, json_extract_isnull(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_isnull(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_isnull(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_extract_isnull(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + // json_exists_path + qt_select "SELECT id, j, json_exists_path(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_exists_path(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_exists_path(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_exists_path(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_exists_path(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_exists_path(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + // json_type + qt_select "SELECT id, j, json_type(j, '\$') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_type(j, '\$.k1') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$.k2') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_type(j, '\$[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[5]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[6]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$[10]') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_type(j, '\$.a1') FROM ${testTable} ORDER BY id" + + qt_select "SELECT id, j, json_type(j, '\$.a1[0]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$.a1[1]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$.a1[2]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$.a1[3]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$.a1[4]') FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, json_type(j, '\$.a1[10]') FROM ${testTable} ORDER BY id" + + + // CAST from JSON + qt_select "SELECT id, j, CAST(j AS BOOLEAN) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(j AS SMALLINT) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(j AS INT) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(j AS BIGINT) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(j AS DOUBLE) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(j AS STRING) FROM ${testTable} ORDER BY id" + + // CAST to JSON + qt_select "SELECT id, j, CAST(CAST(j AS BOOLEAN) AS JSON) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(CAST(j AS SMALLINT) AS JSON) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(CAST(j AS INT) AS JSON) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(CAST(j AS BIGINT) AS JSON) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(CAST(j AS DOUBLE) AS JSON) FROM ${testTable} ORDER BY id" + qt_select "SELECT id, j, CAST(CAST(j AS STRING) AS JSON) FROM ${testTable} ORDER BY id" + + qt_select """SELECT CAST(NULL AS JSON)""" + qt_select """SELECT CAST('null' AS JSON)""" + qt_select """SELECT CAST('true' AS JSON)""" + qt_select """SELECT CAST('false' AS JSON)""" + qt_select """SELECT CAST('100' AS JSON)""" + qt_select """SELECT CAST('10000' AS JSON)""" + qt_select """SELECT CAST('1000000000' AS JSON)""" + qt_select """SELECT CAST('1152921504606846976' AS JSON)""" + qt_select """SELECT CAST('6.18' AS JSON)""" + qt_select """SELECT CAST('"abcd"' AS JSON)""" + qt_select """SELECT CAST('{}' AS JSON)""" + qt_select """SELECT CAST('{"k1":"v31", "k2": 300}' AS JSON)""" + qt_select """SELECT CAST('[]' AS JSON)""" + qt_select """SELECT CAST('[123, 456]' AS JSON)""" + qt_select """SELECT CAST('["abc", "def"]' AS JSON)""" + qt_select """SELECT CAST('[null, true, false, 100, 6.18, "abc"]' AS JSON)""" + qt_select """SELECT CAST('[{"k1":"v41", "k2": 400}, 1, "a", 3.14]' AS JSON)""" + qt_select """SELECT CAST('{"k1":"v31", "k2": 300, "a1": [{"k1":"v41", "k2": 400}, 1, "a", 3.14]}' AS JSON)""" + qt_select """SELECT CAST("''" AS JSON)""" + qt_select """SELECT CAST("'abc'" AS JSON)""" + qt_select """SELECT CAST('abc' AS JSON)""" + qt_select """SELECT CAST('100x' AS JSON)""" + qt_select """SELECT CAST('6.a8' AS JSON)""" + qt_select """SELECT CAST('{x' AS JSON)""" + qt_select """SELECT CAST('[123, abc]' AS JSON)""" + +}