github slingdata-io/sling-cli v1.6.7

2 hours ago

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).

Don't miss a new sling-cli release

NewReleases is sending notifications on new releases.