gitlab postgres-ai/database-lab v4.2.0

one day ago

New Features

  • Simplified install: the UI Configuration tab opens in a new Simple mode — paste a source connection URL and password, and the engine detects the provider (RDS, Aurora, Heroku, Supabase and others), Postgres image and tag, databases, shared_buffers, shared_preload_libraries and query-tuning parameters, then applies the proposed config; Expert mode keeps full control and adds WAL-G and pgBackRest physical-mode fields (!1148, #713)
  • CLI: new dblab local-install command runs the same source detection and applies the proposed logical-mode config from the terminal (!1148, !1192, #774)
  • Clone major upgrade: upgrade an existing clone to a newer PostgreSQL major version in place with pg_upgrade --link, via POST /clone/{id}/upgrade, dblab clone upgrade or the UI; the target version comes from the configured provision.pgUpgradeImage and is reported on /status, and resetting the clone rolls it back (!1180, !1188, #756, #768)
  • Deletion protection and auto-deletion for branches and snapshots: protect a branch or snapshot forever or for a set duration, and let the new retention config section delete unused ones after N minutes (safe-only: anything with clones, children or protection is never removed); new PATCH /branch/{name} and PATCH /snapshot/{id} endpoints and --protected options in dblab branch and dblab snapshot update (!1161, !1166, !1171, #727, #735, #742)
  • Configs: whole-value ${VAR} / $VAR environment placeholders are expanded in engine, CI checker and CLI configs, including retrieval job options such as source passwords and S3, WAL-G and pgBackRest credentials, so secrets no longer have to be stored in plain text (!1140, !1178, #750)
  • Retrieval: new customOptions for WAL-G and pgBackRest physical restore passes extra tool flags (for example --restore-spec or --mask) without switching to customTool (!1182, #760)
  • Teleport (Standard and Enterprise Editions): opt-in platform.bindClonesToUser labels each clone with its owner (dblab_user), so Teleport db_labels rules can limit users to their own clones; covers clones created with a personal token and from the Platform console (!1163, !1173, #731)
  • Teleport: attach custom labels to sidecar db/app resources with the repeatable --label key=value flag or TELEPORT_LABELS; instance ownership moves to a dedicated dblab_instance label (!1162, #730)

Improvements and Fixes

  • Faster clone creation: data ownership is normalized once when a snapshot is prepared, so clones skip the recursive chown -R that dominated provisioning time on large databases (!1169, #737)
  • Retrieval: containerConfig.volume entries are now applied as bind mounts to retrieval containers (single value or list, bind options such as :ro preserved) (!1175, #746)
  • Engine: stop stacking a new dump-directory bind mount on every engine start, which could eventually fail with no space left on device and keep the engine down; the engine now warns at startup about nested or stacked mounts and prints recovery steps (!1191, #775)
  • Engine: failure diagnostics fall back to container logs when no Postgres CSV log exists, and the physical-mode config examples document routing sync and promote container logs to the Docker logging driver (!1146, #711)
  • CLI: list/ls, create, delete/rm and switch are now dblab branch subcommands; previously dblab branch list silently created a branch named list (!1193, #776)
  • UI: show branch data state time in UTC instead of shifting it by the browser's timezone offset (!1194, #777)
  • UI: stop clone status polling after leaving the clone page (!1172, #743)
  • UI: fix snapshot calendar and instance tab colors in the dark theme (!1187, #767)
  • Teleport: map clone ID characters that Teleport rejects in resource names (such as _) to hyphens, so these clones register instead of failing silently (!1189)
  • Standard Edition: fix an engine crash-loop when the Platform billing response has no recognized organization (!1170, #741)

Security

  • Engine: build with Go 1.26.7 (up from 1.26.2), clearing Go standard library CVEs in all shipped binaries (!1147, !1160, !1183, #712, #761)
  • Engine: migrate the Docker client from github.com/docker/docker to the github.com/moby/moby split modules, clearing CVE-2026-34040 and related advisories, and drop the docker/cli dependency (!1176, #748)
  • Engine: bump golang.org/x/crypto to v0.55.0 and golang.org/x/mod to v0.40.0, along with related golang.org/x modules (!1157, !1183, !1184, #706, #764)
  • Images: digest-pin the rds-refresh Alpine base image, and track the docker-cli 29.x series so rebuilds pick up upstream security releases (!1152, !1183, #717)
  • Images: drop the dblab-server *-zfs0.8 variants, which were pinned to end-of-life Alpine 3.12 and ZFS 0.8 and carried unfixable CVEs; hosts still on ZFS 0.8 (stock Ubuntu 18.04/20.04) must upgrade to ZFS 2.x before updating (!1145, #710)
  • CE UI: update vulnerable dependencies — vite 6.4.3, vitest 3.2.7, cypress 15.x (drops extract-zip and enquirer), and raised floors for dompurify, qs, form-data, postcss, js-yaml, ws and others (!1157, !1160, !1179, !1184, #754, #764)

Internal

  • CI: blocking Trivy scans for fixable HIGH/CRITICAL findings in the DBLab Server, CI Checker, RDS Refresh, CLI and CE UI images on MR and default-branch pipelines (!1181, #757)
  • CI: required CE UI unit test job and a production dependency audit job (!1179, #754)
  • CI: publish @postgres.ai/shared prereleases under a channel dist-tag (rc, beta) instead of failing to publish to latest (!1165, #732)
  • CI: drop job-level pull_policy so jobs can run on GitLab.com instance runners, and pin integration tests to the dedicated runners (!1190, #773)
  • Tests: drop the DOCKER_API_VERSION=1.39 pin from e2e scripts and make run-dle; Docker Engine 28+ rejects it and the engine crash-loops (!1167, #734)
  • Engine: code style cleanups and go.mod/go.sum realignment (!1150, !1151, !1164, #715, #716)
  • CE UI: bump @types/node from end-of-life 12 to ^22 (!1143, #698)

Full diff

Diff between versions 4.1.4 and 4.2.0

Don't miss a new database-lab release

NewReleases is sending notifications on new releases.