Gabriel39 commented on code in PR #68301:
URL: https://github.com/apache/doris/pull/68301#discussion_r4060628583


##########
fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java:
##########
@@ -162,6 +164,10 @@ public class TypeCoercionUtils {
     );
 
     private static final Logger LOG = 
LogManager.getLogger(TypeCoercionUtils.class);
+    private static final Set<String> UNSUPPORTED_VARBINARY_COLLECTIONS = 
ImmutableSet.of(
+            "array_contains", "array_position", "countequal", 
"array_distinct", "array_remove",
+            "array_enumerate_uniq", "array_contains_all", "arrays_overlap", 
"array_union",
+            "array_except", "array_intersect", "collect_set");

Review Comment:
   Already addressed in 44eef01c38d2ee094290cfc1db07535c76ec2274: 
function-specific VARBINARY legality checks live in the functions and the 
TypeCoercionUtils blacklist was removed. This follow-up retains that 
arrangement.



##########
be/src/exec/common/hash_table/hash_key_type.h:
##########
@@ -102,6 +102,13 @@ inline HashKeyType get_hash_key_type_fixed(const 
std::vector<DataTypePtr>& data_
 }
 
 inline HashKeyType get_hash_key_type(const std::vector<DataTypePtr>& 
data_types) {
+    // Reject binary before the multi-key serialization fallback can enable 
joins or grouping.
+    for (const auto& type : data_types) {
+        if (type->get_primitive_type() == TYPE_VARBINARY) {

Review Comment:
   The rejection is intentional for this change. Preserving previously 
reachable serialized hash consumers is a compatibility concern, so the common 
VARBINARY hash restriction is retained.



##########
be/src/exec/sink/writer/iceberg/partition_transformers.cpp:
##########
@@ -46,6 +46,12 @@ const std::chrono::sys_days 
PartitionColumnTransformUtils::EPOCH = std::chrono::
 std::unique_ptr<PartitionColumnTransform> PartitionColumnTransforms::create(
         const doris::iceberg::PartitionField& field, const DataTypePtr& 
source_type) {
     auto& transform = field.transform();
+    // Identity/void only carry values; computed binary partition transforms 
are unsupported.
+    if (source_type->get_primitive_type() == TYPE_VARBINARY && transform != 
"identity" &&

Review Comment:
   The binary identity extraction/commit path was already incomplete before 
this PR. This PR does not add binary partition-writing support; completing that 
pipeline or redesigning its rejection boundary is outside this follow-up.



##########
be/src/core/value/timestamptz_value.cpp:
##########
@@ -38,6 +39,13 @@ std::string TimestampTzValue::to_string(const 
cctz::time_zone& tz, int scale) co
     auto lookup_result = tz.lookup(cur_tz_time);
 
     cctz::civil_second civ = lookup_result.cs;
+    // UTC storage bounds do not guarantee a representable session-local year. 
Reject
+    // overflow before DateTimeV2 formatting could produce an offset-only wire 
value.
+    if (civ.year() < 0 || civ.year() > 9999) {

Review Comment:
   Fixed in 0765475366abe60678176acbbb82ef7d34366bec. Both remaining 
TIMESTAMP_NS error paths now format the valid UTC value instead of calling the 
session-local formatter again. ASAN tests cover both year endpoints, strict 
errors/non-strict NULL results, and both comparison operand orders; all 31 
focused BE tests passed.



-- 
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