OLake Go (v0.6.0 - v0.6.5)
March 21, 2026 β April 20, 2026
π― What's Newβ
Sourcesβ
-
Filters for CDC and incremental syncs -
Added filtering support for CDC and incremental syncs so users can selectively sync records based on configured conditions. -
Postgres strict SSL verification support -
Addedverify-caandverify-fullSSL support for Postgres using PEM certificate content input. Also removed support for passingsslrootcert,sslcert, andsslkeyas file paths; these fields now expect the actual PEM content instead. -
Skip ProduceSchema overhead during sync -
Optimized sync performance by skipping heavy schema inference (like MongoDB collection scans or Kafka message decoding) during sync. Drivers now rely on the pre-discovered schema fromstreams.jsonvia a newSyncContext, andProduceSchemais only executed for user-selected streams rather than all available source tables/collections. -
Partitioning support for non-normalized streams -
Partition transforms now work correctly whennormalization=falsefor both legacy and Arrow Iceberg writers. Previously, non-normalized streams silently wrote all data to a null partition due to missing column values during pre-shaping and case mismatches in column name lookups.
π§ Bug Fixes & Stabilityβ
-
Datatype utility unit tests -
Added unit test coverage forutils/typeutils/datatype.goacross type detection, comparison, timestamp precision, and SQL type mapping, and fixed invalidreflect.Valuehandling to map totypes.Null. -
Oracle incremental cursor timezone fix -
Fixed incremental cursor handling for OracleTIMESTAMPandDATEcolumns by stripping the session timezone offset before saving cursor values, so TZ-naive columns donβt shift and re-read already synced records. -
MongoDB date out of range fix -
Fixed a fatal crash (json: error calling MarshalJSON) during MongoDB syncs withnormalization: falsecaused by dates exceeding Go's [0, 9999] year limit. Added bounds checking to clamp years< 1to 1970 and years> 9999to 9999, ensuring dates safely map to valid JSON timestamps. -
Clear destination support for GCP -
Fixed clear destination for GCP buckets by handling the unsupported bulk delete operation and added retry backoff. -
Increase Java writer startup timeout -
Extended the Java writer process startup timeout from 30 seconds to 600 seconds (10 minutes). -
MongoDB nested dates out of range fix -
Fixed fatal crashes (json: error calling MarshalJSON) when unnormalized MongoDB documents contained nestedDateTimevalues with years outside Goβs supported [0, 9999] range by configuring the MongoDB client to decode BSONDateTimeinto safe, clampedtime.Timevalues at decode-time. -
PostgreSQL backfill chunking for multi-level partitions -
Fixed a bug where multi-level partitioned PostgreSQL tables were silently skipped during backfill. The chunk discovery query now properly finds all leaf partitions (usingpg_partition_treefor PG 12+ and a recursivepg_inheritsCTE for older versions) instead of only looking one level deep, and stale statistics without anANALYZErun now return a clear error rather than silently skipping the table. -
Column selection integration tests -
Added integration tests for column selection to verify that only specified columns are synced. Tests cover both inclusion and exclusion logic, as well as validating that columns removed from the source during a backfill stop being ingested while the remaining columns continue processing correctly. -
Go Security workflow vulnerability and Go version update -
Updated the Go Security workflow to makegovulncheckrespect defined exemptions (failing only on unexempted vulnerabilities) and upgraded the Go version tov1.25.9(which includes recent security fixes). -
Kafka integration test -
Added an integration test for the Kafka driver to validate end-to-end sync behavior, and fixed parsing and comparison bugs that could cause incorrect data transformation and validation mismatches. -
MSSQL boolean filter literal fix -
MSSQL does not supportTRUE/FALSEas SQL literals, so filter SQL generation now converts boolean values to1/0instead. This fix is applied consistently across both the structuredfilter_configand legacy string filter paths. -
Kafka sync: skip unparseable last partition message -
When the last message in a partition was neither JSON nor Avro, the sync had no way to parse it and would stall indefinitely, waiting until the context was cancelled. Fixed by skipping such messages β the offset is still marked in Kafka to advance past it, but the message is not written to the destination, allowing the sync to continue cleanly.