mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-13 02:53:38 +00:00
review fix
This commit is contained in:
parent
7d59f36336
commit
da4ff587af
@ -4049,12 +4049,12 @@ SELECT sum(number) FROM numbers(10000000000) SETTINGS partial_result_on_first_ca
|
|||||||
Possible values: `true`, `false`
|
Possible values: `true`, `false`
|
||||||
|
|
||||||
Default value: `false`
|
Default value: `false`
|
||||||
## function_return_type_allow_nullable
|
## function_json_value_return_type_allow_nullable
|
||||||
|
|
||||||
Control whether allow to return `NULL` when value is not exist for JSON_VALUE function.
|
Control whether allow to return `NULL` when value is not exist for JSON_VALUE function.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
SELECT JSON_VALUE('{"hello":"world"}', '$.b') settings function_return_type_allow_nullable=true;
|
SELECT JSON_VALUE('{"hello":"world"}', '$.b') settings function_json_value_return_type_allow_nullable=true;
|
||||||
|
|
||||||
┌─JSON_VALUE('{"hello":"world"}', '$.b')─┐
|
┌─JSON_VALUE('{"hello":"world"}', '$.b')─┐
|
||||||
│ ᴺᵁᴸᴸ │
|
│ ᴺᵁᴸᴸ │
|
||||||
|
@ -42,7 +42,7 @@ public:
|
|||||||
class Executor
|
class Executor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static ColumnPtr run(const ColumnsWithTypeAndName & arguments, const DataTypePtr & result_type, size_t input_rows_count, uint32_t parse_depth, const bool & return_type_allow_complex)
|
static ColumnPtr run(const ColumnsWithTypeAndName & arguments, const DataTypePtr & result_type, size_t input_rows_count, uint32_t parse_depth, const ContextPtr & context)
|
||||||
{
|
{
|
||||||
MutableColumnPtr to{result_type->createColumn()};
|
MutableColumnPtr to{result_type->createColumn()};
|
||||||
to->reserve(input_rows_count);
|
to->reserve(input_rows_count);
|
||||||
@ -126,7 +126,7 @@ public:
|
|||||||
bool added_to_column = false;
|
bool added_to_column = false;
|
||||||
if (document_ok)
|
if (document_ok)
|
||||||
{
|
{
|
||||||
added_to_column = impl.insertResultToColumn(*to, document, res, return_type_allow_complex);
|
added_to_column = impl.insertResultToColumn(*to, document, res, context);
|
||||||
}
|
}
|
||||||
if (!added_to_column)
|
if (!added_to_column)
|
||||||
{
|
{
|
||||||
@ -168,11 +168,9 @@ public:
|
|||||||
unsigned parse_depth = static_cast<unsigned>(getContext()->getSettingsRef().max_parser_depth);
|
unsigned parse_depth = static_cast<unsigned>(getContext()->getSettingsRef().max_parser_depth);
|
||||||
#if USE_SIMDJSON
|
#if USE_SIMDJSON
|
||||||
if (getContext()->getSettingsRef().allow_simdjson)
|
if (getContext()->getSettingsRef().allow_simdjson)
|
||||||
return FunctionSQLJSONHelpers::Executor<Name, Impl, SimdJSONParser>::run(arguments, result_type, input_rows_count, parse_depth,
|
return FunctionSQLJSONHelpers::Executor<Name, Impl, SimdJSONParser>::run(arguments, result_type, input_rows_count, parse_depth, getContext());
|
||||||
getContext()->getSettingsRef().function_json_value_return_type_allow_complex);
|
|
||||||
#endif
|
#endif
|
||||||
return FunctionSQLJSONHelpers::Executor<Name, Impl, DummyJSONParser>::run(arguments, result_type, input_rows_count, parse_depth,
|
return FunctionSQLJSONHelpers::Executor<Name, Impl, DummyJSONParser>::run(arguments, result_type, input_rows_count, parse_depth, getContext());
|
||||||
getContext()->getSettingsRef().function_json_value_return_type_allow_complex);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -201,7 +199,7 @@ public:
|
|||||||
|
|
||||||
static size_t getNumberOfIndexArguments(const ColumnsWithTypeAndName & arguments) { return arguments.size() - 1; }
|
static size_t getNumberOfIndexArguments(const ColumnsWithTypeAndName & arguments) { return arguments.size() - 1; }
|
||||||
|
|
||||||
static bool insertResultToColumn(IColumn & dest, const Element & root, ASTPtr & query_ptr, const bool &)
|
static bool insertResultToColumn(IColumn & dest, const Element & root, ASTPtr & query_ptr, const ContextPtr &)
|
||||||
{
|
{
|
||||||
GeneratorJSONPath<JSONParser> generator_json_path(query_ptr);
|
GeneratorJSONPath<JSONParser> generator_json_path(query_ptr);
|
||||||
Element current_element = root;
|
Element current_element = root;
|
||||||
@ -238,7 +236,7 @@ public:
|
|||||||
|
|
||||||
static DataTypePtr getReturnType(const char *, const ColumnsWithTypeAndName &, const ContextPtr & context)
|
static DataTypePtr getReturnType(const char *, const ColumnsWithTypeAndName &, const ContextPtr & context)
|
||||||
{
|
{
|
||||||
if (context->getSettingsRef().function_return_type_allow_nullable)
|
if (context->getSettingsRef().function_json_value_return_type_allow_nullable)
|
||||||
{
|
{
|
||||||
DataTypePtr string_type = std::make_shared<DataTypeString>();
|
DataTypePtr string_type = std::make_shared<DataTypeString>();
|
||||||
return std::make_shared<DataTypeNullable>(string_type);
|
return std::make_shared<DataTypeNullable>(string_type);
|
||||||
@ -251,7 +249,7 @@ public:
|
|||||||
|
|
||||||
static size_t getNumberOfIndexArguments(const ColumnsWithTypeAndName & arguments) { return arguments.size() - 1; }
|
static size_t getNumberOfIndexArguments(const ColumnsWithTypeAndName & arguments) { return arguments.size() - 1; }
|
||||||
|
|
||||||
static bool insertResultToColumn(IColumn & dest, const Element & root, ASTPtr & query_ptr, const bool & return_type_allow_complex)
|
static bool insertResultToColumn(IColumn & dest, const Element & root, ASTPtr & query_ptr, const ContextPtr & context)
|
||||||
{
|
{
|
||||||
GeneratorJSONPath<JSONParser> generator_json_path(query_ptr);
|
GeneratorJSONPath<JSONParser> generator_json_path(query_ptr);
|
||||||
Element current_element = root;
|
Element current_element = root;
|
||||||
@ -261,7 +259,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (status == VisitorStatus::Ok)
|
if (status == VisitorStatus::Ok)
|
||||||
{
|
{
|
||||||
if (return_type_allow_complex)
|
if (context->getSettingsRef().function_json_value_return_type_allow_complex)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -328,7 +326,7 @@ public:
|
|||||||
|
|
||||||
static size_t getNumberOfIndexArguments(const ColumnsWithTypeAndName & arguments) { return arguments.size() - 1; }
|
static size_t getNumberOfIndexArguments(const ColumnsWithTypeAndName & arguments) { return arguments.size() - 1; }
|
||||||
|
|
||||||
static bool insertResultToColumn(IColumn & dest, const Element & root, ASTPtr & query_ptr, const bool &)
|
static bool insertResultToColumn(IColumn & dest, const Element & root, ASTPtr & query_ptr, const ContextPtr &)
|
||||||
{
|
{
|
||||||
GeneratorJSONPath<JSONParser> generator_json_path(query_ptr);
|
GeneratorJSONPath<JSONParser> generator_json_path(query_ptr);
|
||||||
Element current_element = root;
|
Element current_element = root;
|
||||||
|
@ -31,7 +31,7 @@ select JSON_VALUE('{"a":"\\n\\u0000"}', '$.a');
|
|||||||
\n\0
|
\n\0
|
||||||
select JSON_VALUE('{"a":"\\u263a"}', '$.a');
|
select JSON_VALUE('{"a":"\\u263a"}', '$.a');
|
||||||
☺
|
☺
|
||||||
select JSON_VALUE('{"hello":"world"}', '$.b') settings function_return_type_allow_nullable=true;
|
select JSON_VALUE('{"hello":"world"}', '$.b') settings function_json_value_return_type_allow_nullable=true;
|
||||||
\N
|
\N
|
||||||
select JSON_VALUE('{"hello":{"world":"!"}}', '$.hello') settings function_json_value_return_type_allow_complex=true;
|
select JSON_VALUE('{"hello":{"world":"!"}}', '$.hello') settings function_json_value_return_type_allow_complex=true;
|
||||||
{"world":"!"}
|
{"world":"!"}
|
||||||
|
@ -17,7 +17,7 @@ SELECT JSON_VALUE('{"hello":"\\uD83C\\uDF3A \\uD83C\\uDF38 \\uD83C\\uDF37 Hello,
|
|||||||
SELECT JSON_VALUE('{"a":"Hello \\"World\\" \\\\"}', '$.a');
|
SELECT JSON_VALUE('{"a":"Hello \\"World\\" \\\\"}', '$.a');
|
||||||
select JSON_VALUE('{"a":"\\n\\u0000"}', '$.a');
|
select JSON_VALUE('{"a":"\\n\\u0000"}', '$.a');
|
||||||
select JSON_VALUE('{"a":"\\u263a"}', '$.a');
|
select JSON_VALUE('{"a":"\\u263a"}', '$.a');
|
||||||
select JSON_VALUE('{"hello":"world"}', '$.b') settings function_return_type_allow_nullable=true;
|
select JSON_VALUE('{"hello":"world"}', '$.b') settings function_json_value_return_type_allow_nullable=true;
|
||||||
select JSON_VALUE('{"hello":{"world":"!"}}', '$.hello') settings function_json_value_return_type_allow_complex=true;
|
select JSON_VALUE('{"hello":{"world":"!"}}', '$.hello') settings function_json_value_return_type_allow_complex=true;
|
||||||
SELECT JSON_VALUE('{"hello":["world","world2"]}', '$.hello') settings function_json_value_return_type_allow_complex=true;
|
SELECT JSON_VALUE('{"hello":["world","world2"]}', '$.hello') settings function_json_value_return_type_allow_complex=true;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user