Releases: slingdata-io/sling-cli
v1.5.14
Sling v1.5.14 (2026-04-06T15:41:03Z)
New Features
- SQL Server BCP with Entra ID authentication: BCP bulk loading now supports Entra ID token-based auth and Azure CLI integration for passwordless authentication.
- DuckDB Arrow IPC streaming: Implement Arrow IPC streaming for DuckDB connections, improving read/write performance.
- CDC full-refresh mode: Added support for
full-refreshmode with CDC options, clearing state before running an initial snapshot. - CDC UUID primary key support: CDC initial snapshots now handle string/UUID primary keys with offset-based chunking, in addition to integer PKs.
length()function supports scalar types: Thelength()function now safely handles integers, floats, booleans, and dates by converting to string representation, allowing use in wildcard transforms with ternary guards.sling project jobs run --waitflag: New--wait/-wflag polls execution status every 5 seconds until the job reaches a terminal state, then reports rows, bytes, and duration.- OAuth2 custom credentials and spec URL: Enhanced OAuth2 initialization to support custom client credentials and spec URL for flexible token management.
Bug Fixes
- Oracle sqlldr column sizing: Fixed sqlldr control file generation to use target column precision instead of hardcoding
char(400000), preventing excessive memory allocation during Oracle bulk imports. - TINYINT type handling: Corrected data type mapping for
tinyintin metadata queries across MariaDB, MySQL, and StarRocks templates. - Cross-platform path handling: Replaced
pathpackage withfilepathacross the codebase for correct behavior on Windows. - Token save in agent mode: Allow local
SaveTokento proceed even when running in agent mode.
v1.5.13
Sling v1.5.13 (2026-03-24T13:18:25Z)
New Features
- OAuth2 authorization code flow with configurable redirect URL and port: The authorization code flow now supports a configured
redirect_uri, using its host, port, and callback path instead of always binding to a random local port. - Render OAuth2 scopes before configuration: OAuth2 scopes are now rendered (variable substitution) before being passed to the OAuth2 config, enabling dynamic scope values.
- CLIENT_SECRET support for Azure and OneLake connections:
CLIENT_SECRETand client certificate properties are now properly passed through for Microsoft Fabric ABFS and Azure file system authentication. - Unicode column name support: CSV header cleaning now preserves Unicode letters and numbers (e.g. Chinese, Japanese, accented characters) instead of stripping them.
- String length inference for file sources with
column_typing:column_typingstringmax_lengthrules now apply to non-database sources (CSV/files), enabling auto-inference ofvarchar()precision when loading into databases like Oracle.
Bug Fixes
- BigQuery
GetSchematatable retrieval: Fixed schema value not being cast to string, which caused table listing to fail when discovering BigQuery schemas. - Oracle SQL*Loader out-of-memory handling: SQL*Loader now runs with context cancellation support (
CommandContext) and surfaces actionableSQL*Loader-700/ out-of-memory errors instead of generic failures. - Oracle SQL*Loader pipe error handling: Closed-pipe errors during CSV writing to SQL*Loader stdin are now caught and propagated correctly instead of being silently ignored.
- DuckDB connection leak during chunk loading: Added missing
defer dbConn.Close()calls inClearTableForChunkLoadWithRangeandProcessChunksto prevent connection leaks during chunked replication. - Chunking error message without update_key: Fixed a spurious
nilerror being passed tog.Errorwhenupdate_keyis missing for stream chunking. - Compact CDC State: Fixed CDC state so that GTID messages are stored compact
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