github-actions[bot] commented on code in PR #68161:
URL: https://github.com/apache/doris/pull/68161#discussion_r4055834955


##########
fe/be-java-extensions/paimon-scanner/src/main/java/org/apache/doris/paimon/PaimonColumnValue.java:
##########
@@ -167,7 +168,8 @@ public LocalDate getDate() {
 
     @Override
     public LocalDateTime getDateTime() {
-        Timestamp ts = record.getTimestamp(idx, dorisType.getPrecision());
+        Timestamp ts = truncateTimestampPrecision(

Review Comment:
   [P1] Keep the JNI residual out of this pre-repair window. This is distinct 
from the existing getter-value thread: Paimon 1.3.1 first schema-casts old rows 
and then executeFilter() tests the current-schema predicate before 
PaimonColumnValue. Its leading-zero bug can leave old p6 .000001 unchanged for 
p4, so equality with the current p4 second rejects the row; without the 
predicate this helper would have fixed it to .0000. The raw ORC/Parquet 
pushdown is correctly dropped, but this later residual still loses the row. 
Please withhold affected predicates from executeFilter while retaining the 
Doris residual, or perform fixed-width correction before it, and add a 
forced-JNI boundary predicate case.



##########
be/src/format/column_type_convert.h:
##########
@@ -152,6 +162,37 @@ class ConsistentConverter : public ColumnTypeConverter {
     bool is_consistent() override { return true; }
 };
 
+class DateTimeV2PrecisionConverter : public ColumnTypeConverter {
+public:
+    explicit DateTimeV2PrecisionConverter(UInt32 to_scale) : 
_to_scale(to_scale) {}
+
+    // NOLINTNEXTLINE(readability-make-member-function-const): base virtual 
method is non-const.
+    Status convert(ColumnPtr& src_col, MutableColumnPtr& dst_col) override {
+        using ColumnType = typename 
PrimitiveTypeTraits<TYPE_DATETIMEV2>::ColumnType;

Review Comment:
   [P1] Dispatch this converter by the actual timestamp primitive. The new 
predicate selects it for TYPE_TIMESTAMPTZ too, but ColumnType is fixed to 
ColumnDateTimeV2 and the unchecked casts below therefore access the 
ColumnTimeStampTz objects produced by both V1 Parquet and ORC as an unrelated 
final ColumnVector specialization. That is undefined behavior even though the 
current wrappers are both 64-bit. Please branch/template on the primitive and 
operate on ColumnTimeStampTz/TimestampTzValue for TIMESTAMPTZ (as the V2 path 
does), with V1 LTZ coverage.



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