Skip to content

v1.5.25

Choose a tag to compare

@flarco flarco released this 16 Aug 20:04
· 3 commits to main since this release
1ed02bc

Sling v1.5.25 (2026-08-16T20:07:28Z)

New Features

  • SQL Server named instances: host\instance and host/instance are parsed into host + instance. Warns when port 1433 is set alongside an instance name (the driver ignores the instance), and surfaces a clearer error when SQL Server Browser (UDP 1434) cannot resolve the instance.

  • DuckDB max_line_size override: Connection property max_line_size now overrides DuckDB read_csv line limits across temp-file, named-pipe, and HTTP import paths.

Bug Fixes

  • DuckDB large text/XML columns: read_csv max_line_size is raised to 256 MB for text-class columns (not only binary), so large text/ntext/xml/varchar(max)/clob values no longer fail at the 2 MB default (fixes #787). CSV error hints now suggest copy_method: arrow_http only for DuckDB-class connections.

  • ADBC 3-part table names: Ingestion now targets the catalog/database in database.schema.table instead of the connection default database (fixes #785).

  • Parquet TIME and UUID columns: Parquet writes with time/timez/uuid columns no longer panic from an Arrow builder type mismatch.

  • Multi-file reader hangs and duplicate listings: Remote file bodies are opened lazily and prefetched with a bounded worker pool (issue #789), instead of holding one idle connection per file. Duplicate listing paths (e.g. Google Drive) are skipped.

  • Missing merge primary key: Merge config generation no longer nil-dereferences when a specified primary key column is absent; it returns a clear error instead.

  • Timestamp timezone through Arrow: Source timezone is preserved through Arrow conversion (e.g. Snowflake TIMESTAMP_TZ). Zone-labeled datetime stays TIMESTAMP instead of being promoted to TIMESTAMPTZ. Iceberg appends stamp timestamps as UTC so they match Iceberg timestamptz.

  • DuckDB producer/consumer hangs: Import cancels the producer when the consumer stops, aborts Arrow/CSV flushes on cancelled streams, and kills stalled DuckDB queries after 60 minutes (SLING_DUCKDB_STALL_TIMEOUT; 0 disables).

  • CDC snapshot logs: Per-stream CDC snapshot output is attributed to the correct stream instead of mixing into the group log.

  • MySQL/MariaDB CDC timestamps: TIMESTAMP keeps its offset (timestamptz) and DATETIME stays datetime, so CDC rows match the snapshot path instead of writing TIMESTAMP_NTZ to targets.