Skip to content

[split 6/22] converters: Decimal128 clamp bounds, temporal range checks, replication-situation test matrix - #1361

Open
minguyen9988 wants to merge 1 commit into
omniwatcher/split-17-ddl-parserfrom
omniwatcher/split-06-converters
Open

[split 6/22] converters: Decimal128 clamp bounds, temporal range checks, replication-situation test matrix#1361
minguyen9988 wants to merge 1 commit into
omniwatcher/split-17-ddl-parserfrom
omniwatcher/split-06-converters

Conversation

@minguyen9988

Copy link
Copy Markdown
Collaborator
  • DebeziumConverter / ClickHouseDataTypeMapper / DataTypeRange: out-of-range temporal and decimal values are clamped against the bounds the ClickHouse driver actually accepts. Critical detail: BinaryStreamUtils.writeDecimal256 multiplies by 10^scale before its exclusive +-10^76 check, so DECIMAL256_MIN/MAX are invalid clamp targets at every scale - the clamp uses the Decimal128 bounds (38 digits of headroom post-scaling). Verified against the shipped driver jar.
  • MySQLReplicationSituationTest: new matrix covering INSERT/UPDATE/DELETE, snapshot vs stream, unsigned/boundary numerics, temporal edge values - asserting no loss and no corruption.
  • Expanded DebeziumConverterTest, ClickHouseDataTypeMapperTest, ClickHouseConverterTest; new DataTypeRangeTest.

Part of the split of #1353 into independently mergeable sub-PRs (each <= 10 files), so the 2.10.0 branch can absorb the fixes incrementally.

Split out of #1353, which this series replaces. Each sub-PR is <= 10 files; the union of all 22 reproduces the #1353 tree exactly (verified by tree SHA).

…on-situation test matrix

- DebeziumConverter / ClickHouseDataTypeMapper / DataTypeRange: out-of-range temporal and decimal values are clamped against the bounds the ClickHouse driver actually accepts. Critical detail: BinaryStreamUtils.writeDecimal256 multiplies by 10^scale before its exclusive +-10^76 check, so DECIMAL256_MIN/MAX are invalid clamp targets at every scale - the clamp uses the Decimal128 bounds (38 digits of headroom post-scaling). Verified against the shipped driver jar.
- MySQLReplicationSituationTest: new matrix covering INSERT/UPDATE/DELETE, snapshot vs stream, unsigned/boundary numerics, temporal edge values - asserting no loss and no corruption.
- Expanded DebeziumConverterTest, ClickHouseDataTypeMapperTest, ClickHouseConverterTest; new DataTypeRangeTest.

Part of the split of #1353 into independently mergeable sub-PRs (each <= 10 files), so the 2.10.0 branch can absorb the fixes incrementally.
@minguyen9988
minguyen9988 force-pushed the omniwatcher/split-06-converters branch from c2624f5 to 8c4d428 Compare August 6, 2026 00:13
@minguyen9988
minguyen9988 changed the base branch from 2.10.0 to omniwatcher/split-17-ddl-parser August 6, 2026 00:13
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