Sling v1.6.7 (2026-11-12T12:34:21Z)
New Features
- DuckDB
copy_format: New connection option (arroworcsv, defaultarrow) to set the transfer format between Sling and DuckDB.copy_methodis deprecated. - DuckDB 2.0 support: Opt in with
duckdb_version=2.0.0. The default stays at 1.5.5. Adds 2.0 type mapping (NULL,TIMESTAMPTZ_NS,VARIANT), error hints, and pre-download of the DuckDB version of each connection. - DuckDB Quack connections: Connect to a Quack server with
instance: quack:<host>[:<port>]. Supports token, TLS, client and header properties. sling-buildClickHouse model config: Neworder_by,partition_by,primary_key,ttlandsettings(tableandquery) keys on models and indefaults.sling-buildcross-engine table options: Newcluster_by,transient,unlogged,distandsortkeys. CTAS now renders these options for Postgres, Snowflake, BigQuery, Databricks, Redshift, Trino, Athena and StarRocks.sling-buildscopedsettings.query: Applied in a scoped session or transaction on Postgres, Redshift, Snowflake, Databricks, Trino and StarRocks.sling-buildAthena defaultlocation: Sling adds alocationfrom the connectiondata_locationwhen none is set.- Legacy
pre_sql/post_sqlas hooks: They now run as stream hooks on the target connection.
Bug Fixes
- Postgres COPY memory: Rows now stream into
CopyFromone at a time. A 2M-row load uses 126 MB of peak memory (was 1.5 GB since 1.6.6). - Postgres
0x00andTIME: COPY removes0x00from text, JSON and JSONB values. ATIMEvalue out of range (e.g. MySQL durations) writesNULLwith a warning. - MySQL CDC value fidelity: Binlog values now decode like the snapshot. Fixes character sets,
ENUM,SET,BINARY(n),BIT,DECIMALprecision and zero dates. - CDC
read_cdcfailure: It now fails only the CDC streams. Other streams and end hooks still run. The CDC read now respectsSLING_TIMEOUTand interrupts. - Pipeline isolation: A failed replication step or stream hook abort no longer cancels the pipeline. A step error handled by
on_failureno longer sets the pipeline exit error. - Transforms on pause: A row is transformed only once when the stream pauses or the schema changes. Fixes doubled date shifts and failed
date_parse. - Transforms with
null: Anulltransform result no longer changes the column type to string. - Custom
table_ddl: Sling now stops early with a clear error when the DDL omits a_sling_*metadata column. - API spec fetch: An empty spec body now returns an error (was "Available endpoints: null"). A failed fetch is no longer cached.
- DuckLake and Iceberg: DuckLake stays on DuckDB 1.5.5 by default to keep catalog compatibility. Adds a hint for newer storage versions. Iceberg uses
ATTACH IF NOT EXISTSon session replay. - DuckDB current database: Use
current_database()instead ofPRAGMA database_listfor DuckDB 2.0 (duckdb,ducklake,lancedb). - Quack missing table: No false "could not Peek" error for a new target table.
- Legacy hooks connection: The query hook now connects when its connection is not connected (fixes BigQuery and others).