You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Sling v1.6.7 (2026-11-12T12:34:21Z)
New Features
DuckDB copy_format: New connection option (arrow or csv, default arrow) to set the transfer format between Sling and DuckDB. copy_method is 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-build ClickHouse model config: New order_by, partition_by, primary_key, ttl and settings (table and query) keys on models and in defaults.
sling-build cross-engine table options: New cluster_by, transient, unlogged, dist and sort keys. CTAS now renders these options for Postgres, Snowflake, BigQuery, Databricks, Redshift, Trino, Athena and StarRocks.
sling-build scoped settings.query: Applied in a scoped session or transaction on Postgres, Redshift, Snowflake, Databricks, Trino and StarRocks.
sling-build Athena default location: Sling adds a location from the connection data_location when none is set.
Legacy pre_sql / post_sql as hooks: They now run as stream hooks on the target connection.
Bug Fixes
Postgres COPY memory: Rows now stream into CopyFrom one at a time. A 2M-row load uses 126 MB of peak memory (was 1.5 GB since 1.6.6).
Postgres 0x00 and TIME: COPY removes 0x00 from text, JSON and JSONB values. A TIME value out of range (e.g. MySQL durations) writes NULL with a warning.
MySQL CDC value fidelity: Binlog values now decode like the snapshot. Fixes character sets, ENUM, SET, BINARY(n), BIT, DECIMAL precision and zero dates.
CDC read_cdc failure: It now fails only the CDC streams. Other streams and end hooks still run. The CDC read now respects SLING_TIMEOUT and interrupts.
Pipeline isolation: A failed replication step or stream hook abort no longer cancels the pipeline. A step error handled by on_failure no 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: A null transform 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 EXISTS on session replay.
DuckDB current database: Use current_database() instead of PRAGMA database_list for 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).