Skip to content

feat: enable Delta Lake catalog attachment by default#553

Merged
fuziontech merged 3 commits into
mainfrom
feat/delta-catalog-default-enabled
May 8, 2026
Merged

feat: enable Delta Lake catalog attachment by default#553
fuziontech merged 3 commits into
mainfrom
feat/delta-catalog-default-enabled

Conversation

@fuziontech
Copy link
Copy Markdown
Member

Summary

  • Flip delta_catalog_enabled default to true across all input layers: DefaultServerConfig in configresolve, the --ducklake-delta-catalog-enabled CLI flag in both the all-in-one binary and duckgres-worker, and gorm:"default:true" on ManagedWarehouseS3.DeltaCatalogEnabled / DuckLakeConfig.DeltaCatalogEnabled in the configstore.
  • One-shot migration 2026_05_delta_catalog_default_enabled tracked in a new duckgres_schema_migrations table backfills existing configstore rows. Idempotent — admins can later disable per-warehouse via the admin API without being re-flipped on subsequent restarts.
  • AttachDeltaCatalog now silently no-ops when no catalog path is derivable (no DuckLake object_store / data_path and no explicit delta_catalog_path), so plain standalone DuckDB instances stay bootable under the new default.
  • Catalog is attached as delta already via ATTACH '...' AS delta (TYPE delta) in server/ducklake/migration.go — no change needed for naming.

Test plan

  • go build ./...
  • go build -tags kubernetes ./...
  • go test ./configresolve/... — added subtests asserting default-on with and without DuckLake configured, and explicit YAML opt-out
  • go test ./server/ducklake/... ./server/...
  • go test -tags kubernetes ./controlplane/... — covers the new configstore migration path
  • Manual: bring up a control plane against an existing configstore and verify the migration row lands and existing warehouses flip to delta_catalog_enabled = true
  • Manual: bring up a plain standalone duckgres (no DuckLake config) and verify boot is clean (no delta catalog path is empty error)

🤖 Generated with Claude Code

fuziontech and others added 3 commits May 8, 2026 16:28
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>
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>
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>
@fuziontech fuziontech merged commit e8898ac into main May 8, 2026
22 checks passed
@fuziontech fuziontech deleted the feat/delta-catalog-default-enabled branch May 8, 2026 17:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant