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]
