HappenLee commented on code in PR #31193: URL: https://github.com/apache/doris/pull/31193#discussion_r1497178264
########## be/src/vec/functions/function_hash.cpp: ########## @@ -149,11 +149,108 @@ struct MurmurHash3Impl { return Status::OK(); } }; + using FunctionMurmurHash3_32 = FunctionVariadicArgumentsBase<DataTypeInt32, MurmurHash3Impl<Int32>>; using FunctionMurmurHash3_64 = FunctionVariadicArgumentsBase<DataTypeInt64, MurmurHash3Impl<Int64>>; +template <typename ReturnType> +struct XxHashImpl { + static constexpr auto name = std::is_same_v<ReturnType, Int32> ? "xxhash_32" : "xxhash_64"; + + static Status empty_apply(IColumn& icolumn, size_t input_rows_count) { + ColumnVector<ReturnType>& vec_to = assert_cast<ColumnVector<ReturnType>&>(icolumn); + vec_to.get_data().assign(input_rows_count, static_cast<ReturnType>(emtpy_value)); + return Status::OK(); + } + + static Status first_apply(const IDataType* type, const IColumn* column, size_t input_rows_count, + IColumn& icolumn) { + return execute<true>(type, column, input_rows_count, icolumn); + } + + static Status combine_apply(const IDataType* type, const IColumn* column, + size_t input_rows_count, IColumn& icolumn) { + return execute<false>(type, column, input_rows_count, icolumn); + } + + template <bool first> + static Status execute(const IDataType* type, const IColumn* column, size_t input_rows_count, + IColumn& col_to) { + auto& col_to_data = assert_cast<ColumnVector<ReturnType>&>(col_to).get_data(); Review Comment: if (first) col_to.insert_many_defaults(col_to) -- 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