Files
zitadel/cmd/setup/69.sql
SilvanandGitHub 839a2d3b5b Prevent failure in setup step 69 if cache.objects does not exist (#11673)
# Which Problems Are Solved

If the `cache.objects`-table does not exist setup failes with the
following error:

`ERROR:  relation "cache.objects" does not exist at character 44`

# How the Problems Are Solved

Changed statement to prevent immediately throw an error if the table is
missing.

# Additional Context

- reported in
https://discord.com/channels/927474939156643850/1473769282880934089
- backport to v4
2026-02-24 09:51:22 +00:00

34 lines
1.2 KiB
SQL

DO
$do$
BEGIN
-- Convert objects to logged first (if unlogged)
IF EXISTS (SELECT 1 FROM pg_class WHERE oid = to_regclass('cache.objects') AND relpersistence = 'u') THEN
ALTER TABLE IF EXISTS cache.objects SET LOGGED;
END IF;
-- Convert string_keys to logged (if unlogged)
-- Drop the FK constraint first to avoid conflict with parent table conversion
IF EXISTS (SELECT 1 FROM pg_class WHERE oid = to_regclass('cache.string_keys') AND relpersistence = 'u') THEN
ALTER TABLE IF EXISTS cache.string_keys
DROP CONSTRAINT IF EXISTS fk_object;
ALTER TABLE IF EXISTS cache.string_keys
SET LOGGED;
ALTER TABLE IF EXISTS cache.string_keys
ADD CONSTRAINT fk_object
FOREIGN KEY(cache_name, object_id)
REFERENCES cache.objects(cache_name, id)
ON DELETE CASCADE;
END IF;
IF to_regclass('cache.objects') IS NOT NULL THEN
CREATE UNLOGGED TABLE IF NOT EXISTS cache.objects_default
PARTITION OF cache.objects DEFAULT;
END IF;
IF to_regclass('cache.string_keys') IS NOT NULL THEN
CREATE UNLOGGED TABLE IF NOT EXISTS cache.string_keys_default
PARTITION OF cache.string_keys DEFAULT;
END IF;
END
$do$