From c79680344dfc34097b07e1ea6708f43cb434f1b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 14 Jun 2024 11:48:42 +0200 Subject: [PATCH] fix restore if database does not exists --- checks/postgresql/default.nix | 5 +++++ clanModules/postgresql/default.nix | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/checks/postgresql/default.nix b/checks/postgresql/default.nix index 91bf2e52..b0818105 100644 --- a/checks/postgresql/default.nix +++ b/checks/postgresql/default.nix @@ -63,5 +63,10 @@ output = machine.succeed("runuser -u postgres -- /run/current-system/sw/bin/psql --csv -c \"SELECT datdba::regrole FROM pg_database WHERE datname = 'test'\"") owner = output.split("\n")[1] assert owner == "test", f"Expected database owner to be 'test', got '{owner}'" + + # check if restore works if the database does not exist + machine.succeed("runuser -u postgres -- dropdb test") + machine.succeed("${nodes.machine.clanCore.state.postgresql-test.postRestoreCommand}") + machine.succeed("runuser -u postgres -- /run/current-system/sw/bin/psql -d test -c '\dt' >&2") ''; }) diff --git a/clanModules/postgresql/default.nix b/clanModules/postgresql/default.nix index 18592988..bde39a40 100644 --- a/clanModules/postgresql/default.nix +++ b/clanModules/postgresql/default.nix @@ -146,6 +146,7 @@ in pkgs.coreutils pkgs.util-linux pkgs.zstd + pkgs.gnugrep ] } while [[ "$(systemctl is-active postgresql)" == activating ]]; do @@ -167,7 +168,9 @@ in } mkdir -p "${folder}" - runuser -u postgres -- dropdb "${db.name}" + if runuser -u postgres -- psql -d postgres -c "SELECT 1 FROM pg_database WHERE datname = '${db.name}'" | grep -q 1; then + runuser -u postgres -- dropdb "${db.name}" + fi runuser -u postgres -- pg_restore -C -d postgres "${current}" ) else