tag:github.com,2008:https://github.com/slingdata-io/sling-cli/releases Release notes from sling-cli 2026-03-09T18:16:37Z tag:github.com,2008:Repository/304285216/v1.5.12 2026-03-11T10:20:37Z v1.5.12 <h2>Sling v1.5.12 (2026-03-09T18:18:58Z)</h2> <h3>New Features</h3> <ul> <li> <p><strong><code>--home-dir</code> flag</strong>: New flag across <code>sling run</code> and all <code>sling conns</code> subcommands (<code>list</code>, <code>test</code>, <code>set</code>, <code>unset</code>, <code>exec</code>, <code>discover</code>) to specify a custom sling home directory. Sets <code>SLING_HOME_DIR</code> and reloads connections accordingly.</p> </li> <li> <p><strong>Column merge with defaults (<code>+</code> prefix)</strong>: Stream-level <code>columns:</code> entries prefixed with <code>+</code> now merge with <code>defaults.columns</code> instead of replacing them. Use <code>+column_name: ~</code> to unset a default. Without <code>+</code>, legacy replace behavior is preserved.</p> </li> <li> <p><strong>Pipeline store variables in replications</strong>: <code>{store.xxx}</code> variables set in pipeline steps are now accessible in inline replication <code>where:</code> and <code>sql:</code> fields.</p> </li> <li> <p><strong>API spec <code>range_step</code> support</strong>: Added <code>range_step</code> to the endpoint context map, enabling three-part range expressions for backfill.</p> </li> <li> <p><strong>API spec state variable rendering in <code>jmespath</code> / <code>jq</code></strong>: State variables (e.g. <code>{state.endpoint_name}</code>) are now resolved inside <code>jmespath</code> and <code>jq</code> response record expressions.</p> </li> </ul> <h3>Bug Fixes</h3> <ul> <li> <p><strong><code>SLING_LOGGING</code> env from replication</strong>: Moved <code>SLING_LOGGING</code> env handling from per-task to replication-level so it takes effect before stream execution and properly reinitializes the logger.</p> </li> <li> <p><strong>Direct insert incremental state</strong>: <code>writeToDbDirectly</code> now calls <code>SyncColumns()</code> and <code>SyncStats()</code> so incremental state (e.g. datetime update keys) is correctly captured after direct insert writes.</p> </li> <li> <p><strong>Auth token refresh on retry</strong>: API retry logic now refreshes HTTP request headers from <code>conn.State.Auth.Headers</code> before resending, fixing stale token issues after server-side token rotation (both single-request and mid-pagination scenarios).</p> </li> <li> <p><strong>Windows path handling</strong>: <code>CleanWindowsPath</code> applied to local file locations in <code>ParseLocation</code>, API spec <code>file://</code> paths, env file paths, and <code>SLING_HOME_DIR</code>.</p> </li> <li> <p><strong>Oracle chunking with custom SQL</strong>: Fixed <code>AS</code> table alias syntax for Oracle (which doesn't support <code>AS</code> for subquery aliases).</p> </li> </ul> flarco tag:github.com,2008:Repository/304285216/v1.5.11 2026-03-02T20:02:32Z v1.5.11 <h2>Sling v1.5.11 (2026-03-02T19:52:22Z)</h2> <ul> <li>Fix critical issue with API Spec state parsing when using <code>setup</code></li> </ul> flarco tag:github.com,2008:Repository/304285216/v1.5.10 2026-03-02T14:25:06Z v1.5.10 <h2>Sling v1.5.10 (2026-03-02T14:00:35Z)</h2> <h3>Connectors</h3> <ul> <li><strong>ADBC DuckDB</strong> — new ADBC connector with Docker testing</li> <li><strong>MongoDB</strong> — support <code>ISODate()</code> in filters</li> <li><strong>ClickHouse</strong> — fix table rename SQL syntax</li> <li><strong>SFTP</strong> — fix incremental file timestamp filtering</li> <li><strong>Google Drive</strong> — add context timeout for API calls</li> <li><strong>Local files</strong> — UNC path support (Windows network paths)</li> </ul> <h3>Connections &amp; Environment</h3> <ul> <li>Support setting username in connection URL</li> <li>New <code>.env.sling</code> file support for per-project connection definitions</li> </ul> <h3>MCP Server</h3> <ul> <li><code>working_dir</code> parameter on connection, pipeline, and replication actions</li> <li>Auto-loads <code>.env.sling</code> from working directory</li> </ul> <h3>CDC (Change Data Capture)</h3> <ul> <li>Soft delete now uses <code>_sling_synced_op = 'D'</code> instead of <code>_sling_deleted_at</code>; snapshot rows marked with <code>'S'</code></li> <li>Updated <code>merge_change_capture_soft</code> templates across all 14 databases</li> </ul> <h3>Other</h3> <ul> <li>Updated <code>godbc</code> v0.0.5, <code>purego</code> v0.10.0</li> <li>Disable AWS EC2 metadata service to prevent warning messages</li> <li>JMESPath/JQ safe rendering with state variables</li> <li>Simplified update check logic</li> </ul> flarco tag:github.com,2008:Repository/304285216/v1.5.9 2026-02-23T15:16:58Z v1.5.9 <h2>Sling v1.5.9 (2026-02-23T15:13:21Z)</h2> <h3>Change Data Capture (CDC)</h3> <ul> <li>New <code>change-capture</code> replication mode</li> <li>Supports initial full/chunked snapshot then incremental CDC</li> <li>New merge strategies: <code>change_capture</code> and <code>change_capture_soft</code> (soft delete)</li> <li>CDC merge templates for: Postgres, MySQL, Snowflake, BigQuery, SQL Server, DuckDB, Redshift, Databricks, ClickHouse, SQLite, D1, DB2, Exasol, Oracle, StarRocks</li> <li>Pre-release for testing, not ready for production yet</li> </ul> <h3>Chunking Improvements</h3> <ul> <li>Optional <code>WHERE</code> clause support added to chunk query functions</li> <li>Fix bug where start-date is <code>0000-01-01</code></li> </ul> <h3>CLI Cleanup</h3> <ul> <li>Removed legacy subcommands</li> <li>Centralized execution ID into <code>core/env</code> package (<code>env.ExecID</code>)</li> <li>Enhanced file logging: exec ID prefix and log cleanup (added <code>SLING_LOG_DIR</code> env vars)</li> </ul> <h3>Proxy Support</h3> <ul> <li>New <code>SLING_PROXY</code> environment variable (or <code>proxy_url</code> per-connection property) for proxy configuration</li> </ul> <h3>Bug Fixes</h3> <ul> <li><code>StreamRowsContext</code> column mapping streamlined; sync issue fixed</li> <li>Prometheus connector: consistent float conversion via <code>toFloat</code> method</li> <li>Time format strings in <code>NewStreamProcessor</code> clarified</li> <li>MySQL/MariaDB primary key handling improved in <code>GenerateDDL</code></li> <li><code>InferColumnTypes</code> preserves explicit types for empty datasets</li> </ul> flarco tag:github.com,2008:Repository/304285216/v1.5.8 2026-02-17T11:23:45Z v1.5.8 <h2>Sling v1.5.8 (2026-02-17T11:17:57Z)</h2> <ul> <li>Critical fix for AzureSQL and Fabric <code>merge_strategy</code> templates</li> <li>Improve S3 buffering to avoid back-pressure panic.</li> </ul> flarco tag:github.com,2008:Repository/304285216/v1.5.7 2026-02-16T11:41:31Z v1.5.7 <h2>Sling v1.5.7 (2026-02-16T11:11:59Z)</h2> <h3>Schema Migration</h3> <ul> <li>Preserve foreign keys, indexes, column comments, default values, and auto-increment attributes when replicating between databases</li> <li>Supported for Oracle, PostgreSQL, Redshift, Snowflake, SQL Server, BigQuery, MySQL, DuckDB, ClickHouse, Databricks, SQLite</li> <li>Streams automatically ordered by foreign key dependencies</li> <li>Default value translation mappings between database engines</li> </ul> <h3>Merge Strategies</h3> <ul> <li>Support for <code>insert</code>, <code>update</code>, <code>update_insert</code>, and <code>delete_insert</code> merge strategies</li> </ul> <h3><code>jq</code> Expressions</h3> <ul> <li>New <code>jq</code> source option for JSON-based data streams</li> <li><code>jq()</code> transform function for column-level transformations</li> <li>Works with API sources and database JSON columns</li> <li>Compiled expressions cached for performance</li> </ul> <h3>Template &amp; Expression Engine</h3> <ul> <li>Nested template expression support for recursive resolution within nested braces (e.g., GraphQL queries)</li> <li>Safe rendering methods that keep missing expressions intact instead of erroring</li> </ul> <h3>Fixes &amp; Improvements</h3> <ul> <li>File-based logging setup for persistent log output</li> <li>Wildcard schema support in <code>Discover</code> method</li> <li>Duplicate step ID validation in pipeline configs</li> <li>DuckDB HTTP server shutdown fix after batch processing</li> <li>Total rows and bytes tracked in pipeline state</li> <li>Metadata queries updated to use <code>current_database()</code> for catalog filtering</li> <li>Zip file response handling for API sources</li> </ul> flarco tag:github.com,2008:Repository/304285216/v1.5.6 2026-02-02T12:24:25Z v1.5.6 <h2>Sling v1.5.6 (2026-02-02T10:19:20Z)</h2> <ul> <li>Enhanced <code>delete_missing</code> with configurable source and target WHERE clauses</li> <li>Added secret encoding support for HMAC authentication in API specs</li> <li>Added <code>EscapeBackslash</code> option for MySQL LOAD DATA operations</li> <li>Added row-start-only range format support for Excel</li> </ul> <h2>Bug Fixes</h2> <ul> <li>Fixed Fabric ROWTERMINATOR to use hexadecimal representation</li> <li>Disabled AWS EC2 metadata retrieval for improved security</li> <li>Restored escape character handling in MySQL/MariaDB LOAD DATA INFILE templates</li> </ul> flarco tag:github.com,2008:Repository/304285216/v1.5.5 2026-01-27T19:48:54Z v1.5.5 <h2>Sling v1.5.5 (2026-01-26T16:09:41Z)</h2> <h2>New Features</h2> <ul> <li><strong>DB2 Database Support</strong> - Initial support for IBM DB2 with connection templates and full test suite</li> <li><strong><code>definition-only</code> Mode</strong> - Create table/file definitions without transferring data (parquet/arrow only for files)</li> <li><strong><code>_sling_synced_at</code> Column</strong> - Enable with <code>SLING_SYNCED_AT_COLUMN=true</code> for timestamp tracking</li> <li><strong><code>_sling_synced_op</code> Column</strong> - Tracks operation type: <code>I</code> (insert), <code>U</code> (update), <code>D</code> (soft delete)</li> <li><strong><code>slugify</code> Function</strong> - Convert strings to URL-friendly slugs</li> </ul> <h2>Bug Fixes</h2> <ul> <li><strong>DDL primary key with WITH clauses</strong> - Fixed incorrect placement when table options present (<a href="https://github.com/slingdata-io/sling-cli/issues/694" data-hovercard-type="issue" data-hovercard-url="/slingdata-io/sling-cli/issues/694/hovercard">#694</a>)</li> <li><strong>Prometheus streaming deadlock</strong> - Fixed stall on large time ranges (<a href="https://github.com/slingdata-io/sling-cli/pull/700" data-hovercard-type="pull_request" data-hovercard-url="/slingdata-io/sling-cli/pull/700/hovercard">#700</a>)</li> <li><strong>MySQL boolean CSV streaming</strong> - Fixed boolean handling in LOAD DATA LOCAL INFILE</li> <li><strong><code>delete_missing</code> with transforms</strong> - Fixed errors in PK-only queries when transforms present</li> <li><strong>Connection caching</strong> - Fixed hash method and ODBC initialization</li> </ul> <h2>Improvements</h2> <ul> <li><strong>Go 1.25</strong> - Upgraded build toolchain</li> <li><strong>Docker ODBC packages</strong> - Added <code>unixodbc</code> and <code>odbcinst</code></li> <li><strong>Oracle XMLTYPE</strong> - Support for BigQuery transfers</li> <li><strong>MySQL LOAD DATA LOCAL</strong> - Enhanced NULL value handling</li> <li><strong>S3 multi-bucket access</strong> - Improved support in replications</li> <li><strong>Schema discovery</strong> - Thread-safe schemata merging, column-level support</li> </ul> flarco tag:github.com,2008:Repository/304285216/v1.5.4 2026-01-05T21:16:28Z v1.5.4 <h2>Sling v1.5.4 (2026-01-05T20:59:07Z)</h2> <h3>ODBC Connection Support</h3> <ul> <li>New ODBCConn type for generic ODBC database connections</li> </ul> <h3>Environment Variable Expansion in Env Files</h3> <ul> <li>Environment variables can now be used within ~/.sling/env.yaml files</li> <li>Variables are expanded before YAML unmarshalling</li> <li>Loaded env vars are set into the OS environment if not already present</li> </ul> <h3>Enhanced Boolean Type Handling</h3> <ul> <li>Boolean columns now cast to SmallIntType instead of IntegerType for better compatibility</li> <li>Improved boolean handling for MySQL, MariaDB, and StarRocks databases</li> </ul> <h3>Pipeline Step Order Preservation</h3> <ul> <li>Updated YAML handling to use v3</li> <li>Pipeline steps now maintain their defined order during execution</li> </ul> <h3>Bug Fixes</h3> <ul> <li>ADBC Safety Check: Ensure ADBC connection is initialized before use (conn.adbc != nil check)</li> <li>Google API Auth: Fixed "multiple credential options provided" error with google.golang.org/api &gt;= v0.258.0</li> <li>Windows Build Dynamic Linking issue</li> </ul> flarco tag:github.com,2008:Repository/304285216/v1.5.3 2025-12-23T14:54:27Z v1.5.3 <h2>Sling v1.5.3 (2025-12-23T14:49:39Z)</h2> <h3>Fix for boolean casting logic for v1.5.2</h3> <ul> <li>Added CastBoolColumnForSelect method to cast boolean columns when target expects integer or string <ul> <li>Boolean → Integer: true→1, false→0</li> <li>Boolean → String: true→"true", false→"false"</li> </ul> </li> <li>Enhanced CastColumnsForSelect to detect boolean/integer or boolean/string mismatches and apply casting</li> </ul> <h3>API Incremental Sync Improvements</h3> <ul> <li>New GetSyncUpdateKey function - Automatically detects sync key and update key from API endpoint configuration when: <ul> <li>Endpoint has a sync array defined</li> <li>A processor uses aggregation: maximum that outputs to state.&lt;sync_key&gt;</li> <li>update_key is defined in response records</li> </ul> </li> <li>DB-based incremental fallback - When SLING_STATE is not set, API replications can now fetch the incremental value directly from the target database</li> </ul> flarco