loserwang1024 commented on PR #4412:
URL: https://github.com/apache/flink-cdc/pull/4412#issuecomment-6791526861

   @JNSimba I found the corresponding Debezium fix: debezium/dbz#1916, merged 
as https://github.com/debezium/debezium/pull/7470. Please also review the 
current PostgresConnection#getColumnValue implementation: 
https://github.com/debezium/debezium/blob/main/debezium-connector-postgres/src/main/java/io/debezium/connector/postgresql/connection/PostgresConnection.java.
 It covers two edge cases missing here:
   
   1. pgjdbc returns LocalDateTime.MAX/MIN, OffsetDateTime.MAX/MIN, and 
LocalDate.MAX/MIN for +/-infinity. The Timestamp(Long.MAX_VALUE/MIN_VALUE) 
values in this PR are not pgjdbc/Debezium's infinity sentinels; DATE is not 
handled at all. In a PostgreSQL 14 + pgjdbc 42.7.3 + Debezium 1.9.8 
reproduction, TIMESTAMP 'infinity' changed from 9223372036825200000 to a 
negative microsecond value, and TIMESTAMPTZ 'infinity' changed from 'infinity' 
to a finite year-292278994 string. Please map each type to the sentinel 
expected by the bundled Debezium converter and test both signs in snapshot and 
streaming.
   2. For some BC leap days (for example 1 BC February 29), pgjdbc's typed 
java.time extraction can throw DateTimeException. Current Debezium falls back 
to rs.getString() and parses it in its converter. Please cover this case too. 
Since Flink CDC bundles Debezium 1.9.8, the current upstream converter's string 
fallback cannot be copied verbatim; it needs a compatible conversion path here.
   
   The existing historical_dates test covers finite AD dates but neither of 
these boundaries.


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

Reply via email to