github-actions[bot] commented on code in PR #66777:
URL: https://github.com/apache/doris/pull/66777#discussion_r3782976955
##########
be/src/exec/common/hash_table/hash_key_type.h:
##########
@@ -87,7 +87,8 @@ inline HashKeyType get_hash_key_type_fixed(const
std::vector<DataTypePtr>& data_
size_t key_byte_size = 0;
for (const auto& data_type : data_types) {
- if (!data_type->have_maximum_size_of_value()) {
+ if (is_complex_type(data_type->get_primitive_type()) ||
Review Comment:
**[P1] Preserve FLOAT equality at every STRUCT hash boundary**
This newly sends a multi-column key such as `(id, STRUCT<DOUBLE>)` through
serialized-key consumers, but nested floats are not canonicalized at every hash
boundary. `ColumnStruct` preserves raw IEEE bits in both exchange CRC hashing
and `MethodSerialized`, so `(1, {-0.0})` and `(1, {+0.0})` can route to
different set instances or produce different local `StringRef`s even though
`CompareFloat()` defines them as equal; `INTERSECT` can consequently drop the
matching row (distinct NaN payloads have the same issue). Please canonicalize
early enough for exchange partitioning and every local
build/probe/partition/dedup path to consume the same semantic representation,
and add a multi-key STRUCT float regression.
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]