Releases: slingdata-io/sling-cli
v1.5.12
Sling v1.5.12 (2026-03-09T18:18:58Z)
New Features
-
--home-dirflag: New flag acrosssling runand allsling connssubcommands (list,test,set,unset,exec,discover) to specify a custom sling home directory. SetsSLING_HOME_DIRand reloads connections accordingly. -
Column merge with defaults (
+prefix): Stream-levelcolumns:entries prefixed with+now merge withdefaults.columnsinstead of replacing them. Use+column_name: ~to unset a default. Without+, legacy replace behavior is preserved. -
Pipeline store variables in replications:
{store.xxx}variables set in pipeline steps are now accessible in inline replicationwhere:andsql:fields. -
API spec
range_stepsupport: Addedrange_stepto the endpoint context map, enabling three-part range expressions for backfill. -
API spec state variable rendering in
jmespath/jq: State variables (e.g.{state.endpoint_name}) are now resolved insidejmespathandjqresponse record expressions.
Bug Fixes
-
SLING_LOGGINGenv from replication: MovedSLING_LOGGINGenv handling from per-task to replication-level so it takes effect before stream execution and properly reinitializes the logger. -
Direct insert incremental state:
writeToDbDirectlynow callsSyncColumns()andSyncStats()so incremental state (e.g. datetime update keys) is correctly captured after direct insert writes. -
Auth token refresh on retry: API retry logic now refreshes HTTP request headers from
conn.State.Auth.Headersbefore resending, fixing stale token issues after server-side token rotation (both single-request and mid-pagination scenarios). -
Windows path handling:
CleanWindowsPathapplied to local file locations inParseLocation, API specfile://paths, env file paths, andSLING_HOME_DIR. -
Oracle chunking with custom SQL: Fixed
AStable alias syntax for Oracle (which doesn't supportASfor subquery aliases).
v1.5.11
v1.5.10
Sling v1.5.10 (2026-03-02T14:00:35Z)
Connectors
- ADBC DuckDB — new ADBC connector with Docker testing
- MongoDB — support
ISODate()in filters - ClickHouse — fix table rename SQL syntax
- SFTP — fix incremental file timestamp filtering
- Google Drive — add context timeout for API calls
- Local files — UNC path support (Windows network paths)
Connections & Environment
- Support setting username in connection URL
- New
.env.slingfile support for per-project connection definitions
MCP Server
working_dirparameter on connection, pipeline, and replication actions- Auto-loads
.env.slingfrom working directory
CDC (Change Data Capture)
- Soft delete now uses
_sling_synced_op = 'D'instead of_sling_deleted_at; snapshot rows marked with'S' - Updated
merge_change_capture_softtemplates across all 14 databases
Other
- Updated
godbcv0.0.5,puregov0.10.0 - Disable AWS EC2 metadata service to prevent warning messages
- JMESPath/JQ safe rendering with state variables
- Simplified update check logic
v1.5.9
Sling v1.5.9 (2026-02-23T15:13:21Z)
Change Data Capture (CDC)
- New
change-capturereplication mode - Supports initial full/chunked snapshot then incremental CDC
- New merge strategies:
change_captureandchange_capture_soft(soft delete) - CDC merge templates for: Postgres, MySQL, Snowflake, BigQuery, SQL Server, DuckDB, Redshift, Databricks, ClickHouse, SQLite, D1, DB2, Exasol, Oracle, StarRocks
- Pre-release for testing, not ready for production yet
Chunking Improvements
- Optional
WHEREclause support added to chunk query functions - Fix bug where start-date is
0000-01-01
CLI Cleanup
- Removed legacy subcommands
- Centralized execution ID into
core/envpackage (env.ExecID) - Enhanced file logging: exec ID prefix and log cleanup (added
SLING_LOG_DIRenv vars)
Proxy Support
- New
SLING_PROXYenvironment variable (orproxy_urlper-connection property) for proxy configuration
Bug Fixes
StreamRowsContextcolumn mapping streamlined; sync issue fixed- Prometheus connector: consistent float conversion via
toFloatmethod - Time format strings in
NewStreamProcessorclarified - MySQL/MariaDB primary key handling improved in
GenerateDDL InferColumnTypespreserves explicit types for empty datasets
v1.5.8
v1.5.7
Sling v1.5.7 (2026-02-16T11:11:59Z)
Schema Migration
- Preserve foreign keys, indexes, column comments, default values, and auto-increment attributes when replicating between databases
- Supported for Oracle, PostgreSQL, Redshift, Snowflake, SQL Server, BigQuery, MySQL, DuckDB, ClickHouse, Databricks, SQLite
- Streams automatically ordered by foreign key dependencies
- Default value translation mappings between database engines
Merge Strategies
- Support for
insert,update,update_insert, anddelete_insertmerge strategies
jq Expressions
- New
jqsource option for JSON-based data streams jq()transform function for column-level transformations- Works with API sources and database JSON columns
- Compiled expressions cached for performance
Template & Expression Engine
- Nested template expression support for recursive resolution within nested braces (e.g., GraphQL queries)
- Safe rendering methods that keep missing expressions intact instead of erroring
Fixes & Improvements
- File-based logging setup for persistent log output
- Wildcard schema support in
Discovermethod - Duplicate step ID validation in pipeline configs
- DuckDB HTTP server shutdown fix after batch processing
- Total rows and bytes tracked in pipeline state
- Metadata queries updated to use
current_database()for catalog filtering - Zip file response handling for API sources
v1.5.6
Sling v1.5.6 (2026-02-02T10:19:20Z)
- Enhanced
delete_missingwith configurable source and target WHERE clauses - Added secret encoding support for HMAC authentication in API specs
- Added
EscapeBackslashoption for MySQL LOAD DATA operations - Added row-start-only range format support for Excel
Bug Fixes
- Fixed Fabric ROWTERMINATOR to use hexadecimal representation
- Disabled AWS EC2 metadata retrieval for improved security
- Restored escape character handling in MySQL/MariaDB LOAD DATA INFILE templates
v1.5.5
Sling v1.5.5 (2026-01-26T16:09:41Z)
New Features
- DB2 Database Support - Initial support for IBM DB2 with connection templates and full test suite
definition-onlyMode - Create table/file definitions without transferring data (parquet/arrow only for files)_sling_synced_atColumn - Enable withSLING_SYNCED_AT_COLUMN=truefor timestamp tracking_sling_synced_opColumn - Tracks operation type:I(insert),U(update),D(soft delete)slugifyFunction - Convert strings to URL-friendly slugs
Bug Fixes
- DDL primary key with WITH clauses - Fixed incorrect placement when table options present (#694)
- Prometheus streaming deadlock - Fixed stall on large time ranges (#700)
- MySQL boolean CSV streaming - Fixed boolean handling in LOAD DATA LOCAL INFILE
delete_missingwith transforms - Fixed errors in PK-only queries when transforms present- Connection caching - Fixed hash method and ODBC initialization
Improvements
- Go 1.25 - Upgraded build toolchain
- Docker ODBC packages - Added
unixodbcandodbcinst - Oracle XMLTYPE - Support for BigQuery transfers
- MySQL LOAD DATA LOCAL - Enhanced NULL value handling
- S3 multi-bucket access - Improved support in replications
- Schema discovery - Thread-safe schemata merging, column-level support
v1.5.4
Sling v1.5.4 (2026-01-05T20:59:07Z)
ODBC Connection Support
- New ODBCConn type for generic ODBC database connections
Environment Variable Expansion in Env Files
- Environment variables can now be used within ~/.sling/env.yaml files
- Variables are expanded before YAML unmarshalling
- Loaded env vars are set into the OS environment if not already present
Enhanced Boolean Type Handling
- Boolean columns now cast to SmallIntType instead of IntegerType for better compatibility
- Improved boolean handling for MySQL, MariaDB, and StarRocks databases
Pipeline Step Order Preservation
- Updated YAML handling to use v3
- Pipeline steps now maintain their defined order during execution
Bug Fixes
- ADBC Safety Check: Ensure ADBC connection is initialized before use (conn.adbc != nil check)
- Google API Auth: Fixed "multiple credential options provided" error with google.golang.org/api >= v0.258.0
- Windows Build Dynamic Linking issue
v1.5.3
Sling v1.5.3 (2025-12-23T14:49:39Z)
Fix for boolean casting logic for v1.5.2
- Added CastBoolColumnForSelect method to cast boolean columns when target expects integer or string
- Boolean → Integer: true→1, false→0
- Boolean → String: true→"true", false→"false"
- Enhanced CastColumnsForSelect to detect boolean/integer or boolean/string mismatches and apply casting
API Incremental Sync Improvements
- New GetSyncUpdateKey function - Automatically detects sync key and update key from API endpoint configuration when:
- Endpoint has a sync array defined
- A processor uses aggregation: maximum that outputs to state.<sync_key>
- update_key is defined in response records
- DB-based incremental fallback - When SLING_STATE is not set, API replications can now fetch the incremental value directly from the target database