MCPcopy Create free account
hub / github.com/ByConity/ByConity / insertResultToColumn

Method insertResultToColumn

src/Functions/FunctionSQLJSON.h:996–1033  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

994 static size_t getNumberOfIndexArguments(const ColumnsWithTypeAndName & arguments) { return arguments.size() - 1; }
995
996 static bool insertResultToColumn(IColumn & dest, Iterator & iterator, ASTPtr & query_ptr, DialectType /*dialect_type*/) requires IsElementIterator<Iterator>
997 {
998 using Element = typename Iterator::Element;
999 using JSONParser = typename Iterator::JSONParserType;
1000 GeneratorJSONPath<JSONParser> generator_json_path(query_ptr);
1001 Element current_element = iterator.getElement();
1002 VisitorStatus status;
1003 Element res;
1004 while ((status = generator_json_path.getNextItem(current_element)) != VisitorStatus::Exhausted)
1005 {
1006 if (status == VisitorStatus::Ok)
1007 {
1008 if (!(current_element.isArray() || current_element.isObject()))
1009 {
1010 break;
1011 }
1012 }
1013 else if (status == VisitorStatus::Error)
1014 {
1015 /// ON ERROR
1016 /// Here it is possible to handle errors with ON ERROR (as described in ISO/IEC TR 19075-6),
1017 /// however this functionality is not implemented yet
1018 }
1019 current_element = iterator.getElement();
1020 }
1021
1022 if (status == VisitorStatus::Exhausted)
1023 {
1024 return false;
1025 }
1026
1027 std::stringstream out; // STYLE_CHECK_ALLOW_STD_STRING_STREAM
1028 out << current_element.getElement();
1029 auto output_str = out.str();
1030 ColumnString & col_str = assert_cast<ColumnString &>(dest);
1031 col_str.insertData(output_str.data(), output_str.size());
1032 return true;
1033 }
1034
1035 static bool insertResultToColumn(IColumn & dest, ObjectIterator & iterator, ASTPtr & query_ptr, DialectType /*dialect_type*/) requires IsObjectIterator<Iterator>
1036 {

Callers

nothing calls this directly

Calls 15

isArrayFunction · 0.85
isObjectFunction · 0.85
isTupleFunction · 0.85
getElementMethod · 0.80
getNextItemMethod · 0.45
isArrayMethod · 0.45
isObjectMethod · 0.45
strMethod · 0.45
insertDataMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
getTypeMethod · 0.45

Tested by

no test coverage detected