Skip to main content
Version: Next

Settings and functions

DuckDB settings​

settingtypedefaultmeaning
mssql_ducklake_async_statisticsBOOLEANtrueWhether shaping a catalog sets AUTO_UPDATE_STATISTICS_ASYNC ON on its database (Shaping), so a query that finds stale statistics does not wait for their update. Read when the catalog is shaped, like the one below. false leaves the database's setting as it is.
mssql_ducklake_forced_parameterizationBOOLEANtrueWhether shaping a catalog sets PARAMETERIZATION FORCED on its database (Shaping). Read when the catalog is shaped — at creation, or at the first attach with a build whose shape version is newer — not on every attach. false leaves the database's setting as it is.

DuckLake's own settings — ducklake_max_retry_count, ducklake_retry_wait_ms, ducklake_retry_backoff, ducklake_default_data_inlining_row_limit — apply unchanged, as do the mssql extension's connection settings (mssql_connection_limit, timeouts, …) for the catalog's connections; see the mssql extension's reference.

Attach options​

DATA_PATH, METADATA_SCHEMA, META_TYPE, META_LIMITS and DuckLake's own — on the attach page.

Functions​

functionreturns
mssql_ducklake_catalog_info('lake')(kind, name, value) rows about a catalog on SQL Server: its limits (limit, one per META_LIMITS key), its shape stamp and migration marker (property), the database's forced parameterization, asynchronous statistics and read committed snapshot (database), and every string column with its declared type as the server reports it (column).
mssql_ducklake_version()the extension's release version, 0.1.2 in this one — the same idea as the mssql extension's mssql_version(); a build between releases answers the coming version with -dev. duckdb_extensions() shows the build's git hash instead.

Everything else is DuckLake's: ducklake_snapshots(), ducklake_table_info(), ducklake_table_changes(), ducklake_flush_inlined_data(), ducklake_expire_snapshots(), ducklake_merge_adjacent_files(), ducklake_cleanup_old_files(), and the rest of the DuckLake surface.

Environment switches​

Read once per process, for measurement and for tests that must be shown to fail; none is needed for ordinary use.

variableeffect
MSSQL_DUCKLAKE_SERVER_COMMIT=1turns on the server-side commit for commits that add data files and nothing else
MSSQL_DUCKLAKE_SERVER_COMMIT_MIN_FILES=<n>the commit size (data files) from which the server-side path is used; default 16, the measured crossover on a loopback link
MSSQL_DUCKLAKE_SERVER_COMMIT_SKIP_FETCH=1with the server-side commit, lets the server allocate the snapshot instead of the client fetching it first
MSSQL_DUCKLAKE_NO_BATCH_REWRITE=1runs every commit statement through DuckDB's DML path, the way it ran before the T-SQL batch — for comparing the two paths, and for taking the rewrite out of a diagnosis
MSSQL_DUCKLAKE_STRICT_BATCH=1a commit statement the T-SQL batch does not recognise is an error naming the statement, instead of a fallback to DuckDB's path; the integration suite runs with it
MSSQL_DUCKLAKE_NO_APPENDER=1a commit's data-file rows, statistics and partition values travel in the batch as INSERT statements instead of through DuckDB's appender
MSSQL_DUCKLAKE_NO_CONFLICT_REWRITE=1runs DuckLake's conflict check in its original two-read form instead of the one-statement T-SQL form — exists so the concurrency regression test can be shown to fail