HappenLee commented on code in PR #9170: URL: https://github.com/apache/incubator-doris/pull/9170#discussion_r867309791
########## be/src/vec/functions/array/function_array_index.h: ########## @@ -213,24 +139,131 @@ class FunctionArrayIndex : public IFunction { } dst_data[row] = res; } - block.replace_by_position(result, std::move(dst)); - return true; + return dst; + } + + template <typename NestedColumnType> + ColumnPtr _execute_number_expanded(const ColumnArray::Offsets& offsets, + const UInt8* nested_null_map, const IColumn& nested_column, + const IColumn& right_column) { + if (check_column<ColumnUInt8>(right_column)) { + return _execute_number<NestedColumnType, ColumnUInt8>(offsets, nested_null_map, + nested_column, right_column); + } else if (check_column<ColumnInt8>(right_column)) { + return _execute_number<NestedColumnType, ColumnInt8>(offsets, nested_null_map, + nested_column, right_column); + } else if (check_column<ColumnInt16>(right_column)) { + return _execute_number<NestedColumnType, ColumnInt16>(offsets, nested_null_map, + nested_column, right_column); + } else if (check_column<ColumnInt32>(right_column)) { + return _execute_number<NestedColumnType, ColumnInt32>(offsets, nested_null_map, + nested_column, right_column); + } else if (check_column<ColumnInt64>(right_column)) { + return _execute_number<NestedColumnType, ColumnInt64>(offsets, nested_null_map, + nested_column, right_column); + } else if (check_column<ColumnInt128>(right_column)) { + return _execute_number<NestedColumnType, ColumnInt128>(offsets, nested_null_map, + nested_column, right_column); + } else if (check_column<ColumnFloat32>(right_column)) { + return _execute_number<NestedColumnType, ColumnFloat32>(offsets, nested_null_map, + nested_column, right_column); + } else if (check_column<ColumnFloat64>(right_column)) { + return _execute_number<NestedColumnType, ColumnFloat64>(offsets, nested_null_map, + nested_column, right_column); + } else if (right_column.is_date_type()) { + return _execute_number<NestedColumnType, ColumnDate>(offsets, nested_null_map, + nested_column, right_column); + } else if (right_column.is_datetime_type()) { + return _execute_number<NestedColumnType, ColumnDateTime>(offsets, nested_null_map, + nested_column, right_column); + } else if (check_column<ColumnDecimal128>(right_column)) { + return _execute_number<NestedColumnType, ColumnDecimal128>(offsets, nested_null_map, + nested_column, right_column); + } + return nullptr; } Status _execute_non_nullable(Block& block, const ColumnNumbers& arguments, size_t result, size_t input_rows_count) { - WhichDataType right_type(block.get_by_position(arguments[1]).type); - if ((right_type.is_string() && - _execute_string(block, arguments, result, input_rows_count)) || - _execute_number<NUMBER_TPL_PACK>(block, arguments, result, input_rows_count)) { + // extract array offsets and nested data + auto left_column = + block.get_by_position(arguments[0]).column->convert_to_full_column_if_const(); + const auto array_column = check_and_get_column<ColumnArray>(*left_column); Review Comment: same to up -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org