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

Function executeImpl

src/Functions/array/mapPopulateSeries.cpp:446–496  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

444 }
445
446 ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & result_type, size_t) const override
447 {
448 auto input = extractKeyAndValueInput(arguments);
449
450 auto result_column = result_type->createColumn();
451 auto result_columns = extractResultColumns(result_column, result_type);
452
453 auto call = [&](const auto & types)
454 {
455 using Types = std::decay_t<decltype(types)>;
456 using KeyType = typename Types::LeftType;
457 using ValueType = typename Types::RightType;
458
459 static constexpr bool key_and_value_are_numbers = IsDataTypeNumber<KeyType> && IsDataTypeNumber<ValueType>;
460 static constexpr bool key_is_float = std::is_same_v<KeyType, DataTypeFloat32> || std::is_same_v<KeyType, DataTypeFloat64>;
461
462 if constexpr (key_and_value_are_numbers && !key_is_float)
463 {
464 using KeyFieldType = typename KeyType::FieldType;
465 using ValueFieldType = typename ValueType::FieldType;
466
467 executeImplTyped<KeyFieldType, ValueFieldType>(
468 input.key_column,
469 input.value_column,
470 input.offsets_column,
471 input.max_key_column,
472 std::move(result_columns.result_key_column),
473 std::move(result_columns.result_value_column),
474 std::move(result_columns.result_offset_column));
475
476 return true;
477 }
478
479 return false;
480 };
481
482 if (!callOnTwoTypeIndexes(input.key_series_type->getTypeId(), input.value_series_type->getTypeId(), call))
483 throw Exception(ErrorCodes::ILLEGAL_COLUMN,
484 "Function {} illegal columns passed as arguments",
485 getName());
486
487 if (result_columns.result_array_additional_offset_column)
488 {
489 result_columns.result_array_additional_offset_column->insertRangeFrom(
490 *result_columns.result_offset_column_raw,
491 0,
492 result_columns.result_offset_column_raw->size());
493 }
494
495 return result_column;
496 }
497};
498
499REGISTER_FUNCTION(MapPopulateSeries)

Callers 3

executeTupleMethod · 0.70
executeMapMethod · 0.70
executeImplMethod · 0.70

Calls 9

extractKeyAndValueInputFunction · 0.85
extractResultColumnsFunction · 0.85
callOnTwoTypeIndexesFunction · 0.85
ExceptionClass · 0.50
getNameFunction · 0.50
createColumnMethod · 0.45
getTypeIdMethod · 0.45
insertRangeFromMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected