v1.5.25
Sling v1.5.25 (2026-08-16T20:07:28Z)
New Features
-
SQL Server named instances:
host\instanceandhost/instanceare parsed into host + instance. Warns when port1433is 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_sizeoverride: Connection propertymax_line_sizenow overrides DuckDBread_csvline limits across temp-file, named-pipe, and HTTP import paths.
Bug Fixes
-
DuckDB large text/XML columns:
read_csvmax_line_sizeis raised to 256 MB for text-class columns (not only binary), so largetext/ntext/xml/varchar(max)/clobvalues no longer fail at the 2 MB default (fixes #787). CSV error hints now suggestcopy_method: arrow_httponly for DuckDB-class connections. -
ADBC 3-part table names: Ingestion now targets the catalog/database in
database.schema.tableinstead of the connection default database (fixes #785). -
Parquet TIME and UUID columns: Parquet writes with
time/timez/uuidcolumns 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-labeleddatetimestaysTIMESTAMPinstead of being promoted toTIMESTAMPTZ. Iceberg appends stamp timestamps as UTC so they match Icebergtimestamptz. -
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;0disables). -
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:
TIMESTAMPkeeps its offset (timestamptz) andDATETIMEstaysdatetime, so CDC rows match the snapshot path instead of writingTIMESTAMP_NTZto targets.