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]

Reply via email to