Skip to content

[FLINK-39832] Fix Oracle NUMBER(p,0) with p>=19 incorrectly mapped to BIGINT#4424

Open
ironman-star wants to merge 1 commit into
apache:masterfrom
ironman-star:master
Open

[FLINK-39832] Fix Oracle NUMBER(p,0) with p>=19 incorrectly mapped to BIGINT#4424
ironman-star wants to merge 1 commit into
apache:masterfrom
ironman-star:master

Conversation

@ironman-star
Copy link
Copy Markdown

Jira: https://issues.apache.org/jira/browse/FLINK-39832

OracleTypeUtils.fromDbzColumn mapped NUMBER(p,0) to BIGINT for all precisions, but Debezium encodes p>=19 as DECIMAL(BYTES). The mismatch caused the sink to read a BinaryRecordData pointer as a long, producing a constant garbage PK (171798691841) and collapsing all rows on upsert.

Fix: return DECIMAL(p,0) when p>=19, aligned with Debezium runtime behavior.

Tested with Oracle XE 11.2, NUMBER(19,0) PK, including 19-digit large IDs (9000000000000000001). Snapshot and incremental (INSERT/UPDATE/DELETE) all verified correct.

… BIGINT

  OracleTypeUtils.fromDbzColumn mapped NUMBER(p,0) to BIGINT for all
  precisions, but Debezium encodes p>=19 as DECIMAL(BYTES). The mismatch
  caused the sink to read a BinaryRecordData pointer as a long, producing
  a constant garbage PK (171798691841) and collapsing all rows on upsert.

  Now returns DECIMAL(p,0) when p>=19, aligned with Debezium runtime behavior.
@ironman-star
Copy link
Copy Markdown
Author

@lvyanquan Would you please review this code?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant