What's Changed
This release introduces comprehensive DB2 database support and resolves critical cross-database compatibility issues for MongoDB, SQLite, and SQL Server integrations.
🚀 Major Enhancements
- DB2 Database Support: Added full DB2 integration with dedicated managers and comprehensive test coverage
- Cross-Database DB2 Integration: Enabled DB2 replication with SQL Server, SQLite, MongoDB, and CSV sources
- Enhanced Type Mapping: Improved cross-database type resolution and parameter binding for heterogeneous database pairs
- JDBC Specification Compliance: Implemented strict JDBC spec adherence for DB2 driver compatibility
🐛 Bug Fixes
- Fixed DB2 JDBC compatibility by properly implementing JDBC spec for
wasNull()calls aftergetXXX()operations - Fixed DB2-MongoDB integration test failures with proper ISO 8601 timestamp parsing
- Fixed SQLite to DB2 column mapping issues by using sink metadata for parameter binding
- Fixed MongoDB merge key field casing normalization for case-sensitive field matching
- Fixed DB2 batch exception logging to include detailed error information
- Fixed SQL Server staging table operations in cross-database scenarios
- Resolved BigDecimal to BLOB conversion errors by using standard SQL types in
setNull()calls - Fixed DB2 binary handling and string type case sensitivity
- Fixed DB2 unicode handling and SQL Server staging compatibility
- Fixed MongoDB incremental merge with proper column label handling
🔧 Improvements
- Use sink metadata for DB2 parameter binding instead of source metadata to avoid type mismatches
- Normalize schema/table names to uppercase for DB2 metadata lookup
- Use column labels (
getColumnLabel()) when deriving sink columns for better alias support - Map DB2 sink types using insert column order for deterministic type resolution
- Improved transaction handling in DB2-to-DB2 test tearDown
- Excluded row number columns from DB2 parallel read operations
- Set explicit column lists in DB2 tests for consistent mapping
- Refactored Binary COPY limitation logs from ERROR to WARN level for graceful fallback handling
🧪 CI/CD & Testing
- Added comprehensive DB2 integration tests with multiple source databases
- Added DB2-to-SQL Server integration tests
- Added DB2-to-MongoDB integration tests
- Stabilized MongoDB row count assertions to match actual test data
- Excluded flaky Oracle cross-version LOB tests from CI pipeline
- Reduced CI log output for cleaner build reports
- Improved test reliability by restricting test scope during debugging phases
📚 Infrastructure & Documentation
- Reorganized GitHub instructions and documentation structure
- Disabled Oracle LOB workflow to improve CI reliability
- Updated CI workflow configurations for targeted test execution
- Fixed CI test selectors for improved test isolation
Performance Impact
DB2 integration maintains ReplicaDB's high-performance bulk transfer capabilities:
- Parallel execution support with configurable job count
- Optimized batch insert operations for DB2 sinks
- Efficient memory management for large dataset transfers
- Cross-database type mapping with minimal overhead
Technical Improvements
JDBC Compliance: Strict adherence to JDBC specification for DB2 driver compatibility, especially around null value handling with wasNull() calls
Type Safety: Enhanced cross-database type resolution using sink metadata to prevent type mismatch errors during parameter binding
Column Mapping: Improved column name resolution using getColumnLabel() with fallback to getColumnName() for better alias support across databases
Error Handling: Better exception logging and transaction rollback handling for DB2 operations
Commits
- c433e61: refactor: change Binary COPY limitation logs from ERROR to WARN (Oscar Salvador Magallanes)
- a29d697: fix: resolve DB2-MongoDB integration test failures (Oscar Salvador Magallanes)
- 09feb69: Update CT_Push.yml (Oscar Salvador Magallanes)
- 4bc073f: chore: disable oracle lob workflow (Oscar Salvador Magallanes)
- 5012825: chore: reduce ci log output (Oscar Salvador Magallanes)
- c43934a: fix(db2): expand csv boolean column (Oscar Salvador Magallanes)
- a9b28ac: test: stabilize mongo and row counts (Oscar Salvador Magallanes)
- 0ff577c: fix(db2): expand csv boolean column (Oscar Salvador Magallanes)
- f59ad43: chore: exclude oracle cross-version tests (Oscar Salvador Magallanes)
- feef9aa: Update pom.xml (Oscar Salvador Magallanes)
- bd2cecf: fix: initialize mongo merge keys (Oscar Salvador Magallanes)
- 2ff34a8: fix: align DB2 fixtures and defaults (Oscar Salvador Magallanes)
- 6e06a64: fix: truncate SQLite string fields for DB2 (Oscar Salvador Magallanes)
- 5667911: chore: run all tests except Oracle cross-version (Oscar Salvador Magallanes)
- 5399942: fix: scale SQLite numeric columns for DB2 (Oscar Salvador Magallanes)
- 537793d: fix: log DB2 batch exceptions with details (Oscar Salvador Magallanes)
- 7de3094: fix: align SQLite->DB2 columns and metadata lookup (Oscar Salvador Magallanes)
- 9333eda: chore: restrict CT push to Sqlite2DB2 test (Oscar Salvador Magallanes)
- 53ad541: fix: use column labels when deriving sink columns (Oscar Salvador Magallanes)
- 6bad0fb: fix: normalize MongoDB merge key field casing (Oscar Salvador Magallanes)
- 519a010: fix: map DB2 sink types using insert column order (Oscar Salvador Magallanes)
- a1c07fa: fix: use sink metadata for DB2 parameter binding (Oscar Salvador Magallanes)
- 8856f2b: fix: Use standard SQL types instead of source types in setNull() calls (Oscar Salvador Magallanes)
- 542a8a7: fix: Add JDBC spec compliance for wasNull() in Db2Manager (Oscar Salvador Magallanes)
- e247844: fix: resolve DB2 and MariaDB test failures (Oscar Salvador Magallanes)
- a0b067f: Reorganize GitHub instructions and docs (Oscar Salvador Magallanes)
- 686a5ac: fix: correct MongoDB incremental merge with column label handling (Oscar Salvador Magallanes)
- c639dbd: Adjust DB2 LOB binding (Oscar Salvador Magallanes)
- 5bf59f0: Fix DB2 batch and SQLite staging (Oscar Salvador Magallanes)
- f6f6dca: Rollback source connection on close (Oscar Salvador Magallanes)
- d4dbf38: Add DB2 integration tests (Oscar Salvador Magallanes)
- b002be0: Update CT_Push.yml (Oscar Salvador Magallanes)
- d7e33d2: Fix DB2 binary handling (Oscar Salvador Magallanes)
- e5d6d8f: Fix DB2 string type cases (Oscar Salvador Magallanes)
- ed5efb5: Fix DB2 unicode handling and SQL Server staging (Oscar Salvador Magallanes)
- 68ae269: Add DB2<->SQL Server integration tests (Oscar Salvador Magallanes)
- 6eabdbc: Exclude RN from DB2 parallel reads (Oscar Salvador Magallanes)
- 28d2736: Set explicit DB2 column list in tests (Oscar Salvador Magallanes)
- 826783b: Fix CI test selectors (Oscar Salvador Magallanes)
- 2328189: Add DB2 managers and update tests (Oscar Salvador Magallanes)
Full Changelog: v0.17.0...v0.18.0