You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: enable Delta Lake catalog attachment by default (#553)
* feat: enable Delta Lake catalog attachment by default
Flips delta_catalog_enabled to true everywhere: CLI/env/YAML defaults
in DefaultServerConfig and the duckgres-worker flag, plus column-level
gorm:"default:true" on the configstore ManagedWarehouseS3 and
DuckLakeConfig fields. A one-shot migration tracked in
duckgres_schema_migrations backfills existing configstore rows so
upgraded clusters pick up the new default without admin intervention;
admins can still opt out per-warehouse via the admin API afterward
without being re-flipped on subsequent restarts.
To keep plain standalone deployments (no DuckLake metadata_store /
object_store / data_path) bootable under the new default,
AttachDeltaCatalog now silently no-ops when no catalog path is
derivable instead of erroring. The catalog is still attached as
'delta' (ATTACH '...' AS delta (TYPE delta), unchanged).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(server): treat empty Delta location as benign skip
Under the always-on Delta default, a fresh DuckLake tenant has no
Delta data at the sibling delta/ prefix yet, and ATTACH returns
"No files in log segment" from DeltaKernel. That's the expected
state, not a failure — log it and continue without the catalog
attached. Fixes the k8s tenant isolation test where billing's
worker activation rejected client queries before the tenant ever
wrote Delta data.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(server): probe-and-detach when Delta path has no transaction log
ATTACH '...' (TYPE delta) is lazy — it succeeds against an empty path,
then every subsequent query against DuckLake fails at prepare time
because the planner walks all attached catalogs and Delta blows up
trying to read a missing _delta_log/. Earlier the empty-path check
was only at ATTACH time; that wasn't enough because ATTACH never
errored. Now we probe with SHOW TABLES FROM delta immediately after
ATTACH and DETACH if the catalog is unusable, leaving the connection
clean for ducklake-only queries until Delta data lands.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
duckLakeDeltaCatalogEnabled:=flag.Bool("ducklake-delta-catalog-enabled", false, "Attach a Delta Lake catalog during DuckLake worker boot (env: DUCKGRES_DUCKLAKE_DELTA_CATALOG_ENABLED)")
78
+
duckLakeDeltaCatalogEnabled:=flag.Bool("ducklake-delta-catalog-enabled", true, "Attach a Delta Lake catalog during DuckLake worker boot (default true; use --ducklake-delta-catalog-enabled=false to disable; env: DUCKGRES_DUCKLAKE_DELTA_CATALOG_ENABLED)")
79
79
duckLakeDeltaCatalogPath:=flag.String("ducklake-delta-catalog-path", "", "Delta Lake catalog/table path to attach (env: DUCKGRES_DUCKLAKE_DELTA_CATALOG_PATH)")
80
80
duckLakeDefaultSpecVersion:=flag.String("ducklake-default-spec-version", "", "Default DuckLake spec version for migration checks (env: DUCKGRES_DUCKLAKE_DEFAULT_SPEC_VERSION)")
duckLakeDeltaCatalogEnabled:=fs.Bool("ducklake-delta-catalog-enabled", false, "Attach a Delta Lake catalog during DuckLake worker boot (env: DUCKGRES_DUCKLAKE_DELTA_CATALOG_ENABLED)")
43
+
duckLakeDeltaCatalogEnabled:=fs.Bool("ducklake-delta-catalog-enabled", true, "Attach a Delta Lake catalog during DuckLake worker boot (default true; use --ducklake-delta-catalog-enabled=false to disable; env: DUCKGRES_DUCKLAKE_DELTA_CATALOG_ENABLED)")
44
44
duckLakeDeltaCatalogPath:=fs.String("ducklake-delta-catalog-path", "", "Delta Lake catalog/table path to attach, defaults to sibling delta/ prefix at DuckLake object-store root (env: DUCKGRES_DUCKLAKE_DELTA_CATALOG_PATH)")
45
45
duckLakeDefaultSpecVersion:=fs.String("ducklake-default-spec-version", "", "Default DuckLake spec version for migration checks (env: DUCKGRES_DUCKLAKE_DEFAULT_SPEC_VERSION)")
46
46
processMinWorkers:=fs.Int("process-min-workers", 0, "Pre-warm worker count at startup for process workers (control-plane mode) (env: DUCKGRES_PROCESS_MIN_WORKERS)")
0 commit comments