Test that it works to RESET an invalid reloption
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 8 Dec 2023 10:58:58 +0000 (11:58 +0100)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 8 Dec 2023 10:58:58 +0000 (11:58 +0100)
This works today, and it's valuable to ensure it doesn't get broken
if/when we get around to refactoring the implementation.

Author: Nikolay Shaplov <dhyan@nataraj.su>
Discussion: https://postgr.es/m/4563991.km65PDbjlG@thinkpad-pgpro

src/test/regress/expected/reloptions.out
src/test/regress/sql/reloptions.sql

index b6aef6f654cc9fe09589764940c1a528a07f7ac7..9de19b4e3f13d3fb0a6db38411cb7f7fd04a2585 100644 (file)
@@ -87,6 +87,17 @@ SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass AND
 -- RESET fails if a value is specified
 ALTER TABLE reloptions_test RESET (fillfactor=12);
 ERROR:  RESET must not include values for parameters
+-- We can RESET an invalid option which for some reason is already set
+UPDATE pg_class
+   SET reloptions = '{fillfactor=13,autovacuum_enabled=false,illegal_option=4}'
+   WHERE oid = 'reloptions_test'::regclass;
+ALTER TABLE reloptions_test RESET (illegal_option);
+SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
+                reloptions                
+------------------------------------------
+ {fillfactor=13,autovacuum_enabled=false}
+(1 row)
+
 -- Test vacuum_truncate option
 DROP TABLE reloptions_test;
 CREATE TEMP TABLE reloptions_test(i INT NOT NULL, j text)
index 4252b0202f4ce2233b05693a5ee37a667eec89e8..24fbe0b478d967ad746ed4333fbf189d807ec6f6 100644 (file)
@@ -52,6 +52,13 @@ SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass AND
 -- RESET fails if a value is specified
 ALTER TABLE reloptions_test RESET (fillfactor=12);
 
+-- We can RESET an invalid option which for some reason is already set
+UPDATE pg_class
+   SET reloptions = '{fillfactor=13,autovacuum_enabled=false,illegal_option=4}'
+   WHERE oid = 'reloptions_test'::regclass;
+ALTER TABLE reloptions_test RESET (illegal_option);
+SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
+
 -- Test vacuum_truncate option
 DROP TABLE reloptions_test;