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

Method insertResultToColumn

src/Functions/FunctionSQLJSON.h:1137–1176  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1135 static size_t getNumberOfIndexArguments(const ColumnsWithTypeAndName & arguments) { return arguments.size() - 1; }
1136
1137 static bool insertResultToColumn(IColumn & dest, Iterator & iterator, ASTPtr & query_ptr, DialectType dialect_type) requires IsElementIterator<Iterator>
1138 {
1139 using Element = typename Iterator::Element;
1140 using JSONParser = typename Iterator::JSONParserType;
1141 GeneratorJSONPath<JSONParser> generator_json_path(query_ptr);
1142 Element current_element = iterator.getElement();
1143 VisitorStatus status;
1144
1145 ColumnNullable & col = assert_cast<ColumnNullable &>(dest);
1146 while ((status = generator_json_path.getNextItem(current_element)) != VisitorStatus::Exhausted)
1147 {
1148 if (status == VisitorStatus::Ok)
1149 {
1150 break;
1151 }
1152 current_element = iterator.getElement();
1153 }
1154
1155 if (status == VisitorStatus::Exhausted)
1156 {
1157 col.insertData(nullptr, 0);
1158 return false;
1159 }
1160
1161 size_t size;
1162 if (current_element.isArray())
1163 size = current_element.getArray().size();
1164 else if (current_element.isObject())
1165 size = current_element.getObject().size();
1166 else
1167 {
1168 if (dialect_type == DialectType::MYSQL)
1169 size = 0;
1170 else
1171 size = 1;
1172 }
1173
1174 col.insert(size);
1175 return true;
1176 }
1177
1178 static bool insertResultToColumn(IColumn & dest, ObjectIterator & iterator, ASTPtr & query_ptr, DialectType dialect_type) requires IsObjectIterator<Iterator>
1179 {

Callers

nothing calls this directly

Calls 15

isDummyTupleFunction · 0.85
getElementMethod · 0.80
getNextItemMethod · 0.45
insertDataMethod · 0.45
isArrayMethod · 0.45
sizeMethod · 0.45
getArrayMethod · 0.45
isObjectMethod · 0.45
getObjectMethod · 0.45
insertMethod · 0.45
getMethod · 0.45
getColumnMethod · 0.45

Tested by

no test coverage detected