drop view at_view_2;
drop view at_view_1;
drop table at_base_table;
+-- check adding a column not iself requiring a rewrite, together with
+-- a column requiring a default (bug #16038)
+-- ensure that rewrites aren't silently optimized away, removing the
+-- value of the test
+CREATE OR REPLACE FUNCTION evtrig_rewrite_log() RETURNS event_trigger
+LANGUAGE plpgsql AS $$
+BEGIN
+ RAISE WARNING 'rewriting table %',
+ pg_event_trigger_table_rewrite_oid()::regclass;
+END;
+$$;
+CREATE EVENT TRIGGER evtrig_rewrite_log ON table_rewrite
+ EXECUTE PROCEDURE evtrig_rewrite_log();
+CREATE TABLE rewrite_test(col text);
+INSERT INTO rewrite_test VALUES ('something');
+INSERT INTO rewrite_test VALUES (NULL);
+-- empty[12] doesn't need rewrite, but notempty[12]_rewrite will force one
+ALTER TABLE rewrite_test
+ ADD COLUMN empty1 text,
+ ADD COLUMN notempty1_rewrite serial;
+WARNING: rewriting table rewrite_test
+ALTER TABLE rewrite_test
+ ADD COLUMN notempty2_rewrite serial,
+ ADD COLUMN empty2 text;
+WARNING: rewriting table rewrite_test
+-- also check that fast defaults cause no problem, first without rewrite
+ALTER TABLE rewrite_test
+ ADD COLUMN empty3 text,
+ ADD COLUMN notempty3_norewrite int default 42;
+ALTER TABLE rewrite_test
+ ADD COLUMN notempty4_norewrite int default 42,
+ ADD COLUMN empty4 text;
+-- then with rewrite
+ALTER TABLE rewrite_test
+ ADD COLUMN empty5 text,
+ ADD COLUMN notempty5_norewrite int default 42,
+ ADD COLUMN notempty5_rewrite serial;
+WARNING: rewriting table rewrite_test
+ALTER TABLE rewrite_test
+ ADD COLUMN notempty6_rewrite serial,
+ ADD COLUMN empty6 text,
+ ADD COLUMN notempty6_norewrite int default 42;
+WARNING: rewriting table rewrite_test
+-- cleanup
+drop event trigger evtrig_rewrite_log;
+drop function evtrig_rewrite_log();
+DROP TABLE rewrite_test;
--
-- lock levels
--