From 39684cdf48021b0b8d40b2e6496bd23fac076ea4 Mon Sep 17 00:00:00 2001 From: pavanmanishd Date: Tue, 9 Jun 2026 14:00:15 +0100 Subject: [PATCH] Generate ALTER TABLE SET UNLOGGED/LOGGED when persistence is changed (#9768) Wire the relpersistence change through to the table update SQL across all version buckets (default, 11_plus, 12_plus, 15_plus) so the Unlogged toggle emits ALTER TABLE ... SET LOGGED/UNLOGGED on every supported server. Closes #9677. --- docs/en_US/release_notes_9_16.rst | 1 + .../tables/templates/tables/sql/11_plus/update.sql | 8 ++++++++ .../tables/templates/tables/sql/12_plus/update.sql | 8 ++++++++ .../tables/templates/tables/sql/15_plus/update.sql | 8 ++++++++ .../tables/templates/tables/sql/default/update.sql | 8 ++++++++ 5 files changed, 33 insertions(+) diff --git a/docs/en_US/release_notes_9_16.rst b/docs/en_US/release_notes_9_16.rst index 54de6464e..cfe3303a4 100644 --- a/docs/en_US/release_notes_9_16.rst +++ b/docs/en_US/release_notes_9_16.rst @@ -30,6 +30,7 @@ Housekeeping Bug fixes ********* + | `Issue #9677 `_ - Fix the Unlogged table toggle in table properties not generating any ALTER TABLE ... SET LOGGED/UNLOGGED statement. | `Issue #9892 `_ - Fix blank difference counts on the top-level group rows in Schema Diff. | `Issue #9896 `_ - Fix invalid DDL reconstruction for SERIAL columns in Schema Diff and the generated SQL/CREATE Script so the output round-trips on a clean target. | `Issue #9935 `_ - Fix "Illegal instruction" crash on startup of the Linux DEB and RPM packages on older x86_64 CPUs by pinning the psycopg C extension build to the x86-64 baseline. diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/update.sql index 591ed675e..7dcad70b1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/update.sql @@ -49,6 +49,14 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} SET {% if data.relhasoids %}WITH{% else %}WITHOUT{% endif %} OIDS; +{% endif %} +{#####################################################} +{## Change table persistence (UNLOGGED / LOGGED) ##} +{#####################################################} +{% if data.relpersistence is defined and data.relpersistence != o_data.relpersistence %} +ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} + SET {% if data.relpersistence %}UNLOGGED{% else %}LOGGED{% endif %}; + {% endif %} {#####################################################} {## Change tablespace ##} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/update.sql index e14750395..e720c171e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/update.sql @@ -41,6 +41,14 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} NO INHERIT {{val}}; {% endfor %} +{% endif %} +{#####################################################} +{## Change table persistence (UNLOGGED / LOGGED) ##} +{#####################################################} +{% if data.relpersistence is defined and data.relpersistence != o_data.relpersistence %} +ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} + SET {% if data.relpersistence %}UNLOGGED{% else %}LOGGED{% endif %}; + {% endif %} {#####################################################} {## Change tablespace ##} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/15_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/15_plus/update.sql index 4483a08a3..b825bf20f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/15_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/15_plus/update.sql @@ -49,6 +49,14 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} NO INHERIT {{val}}; {% endfor %} +{% endif %} +{#####################################################} +{## Change table persistence (UNLOGGED / LOGGED) ##} +{#####################################################} +{% if data.relpersistence is defined and data.relpersistence != o_data.relpersistence %} +ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} + SET {% if data.relpersistence %}UNLOGGED{% else %}LOGGED{% endif %}; + {% endif %} {#####################################################} {## Change tablespace ##} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/update.sql index f1b4625a2..61eda61e1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/update.sql @@ -49,6 +49,14 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} SET {% if data.relhasoids %}WITH{% else %}WITHOUT{% endif %} OIDS; +{% endif %} +{#####################################################} +{## Change table persistence (UNLOGGED / LOGGED) ##} +{#####################################################} +{% if data.relpersistence is defined and data.relpersistence != o_data.relpersistence %} +ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} + SET {% if data.relpersistence %}UNLOGGED{% else %}LOGGED{% endif %}; + {% endif %} {#####################################################} {## Change tablespace ##}