mirror of
https://github.com/postgres/postgres.git
synced 2025-07-18 17:42:25 +03:00
Allow for pg_upgrade of attributes with missing values
Commit 16828d5c02
neglected to do this, so upgraded databases would
silently get null instead of the specified default in rows without the
attribute defined.
A new binary upgrade function is provided to perform this and pg_dump is
adjusted to output a call to the function if required in binary upgrade
mode.
Also included is code to drop missing attribute values for dropped
columns. That way if the type is later dropped the missing value won't
have a dangling reference to the type.
Finally the regression tests are adjusted to ensure that there is a row
with a missing value so that this code is exercised in upgrade testing.
Catalog version unfortunately bumped.
Regression test changes from Tom Lane.
Remainder from me, reviewed by Tom Lane, Andres Freund, Alvaro Herrera
Discussion: https://postgr.es/m/19987.1529420110@sss.pgh.pa.us
This commit is contained in:
@ -548,3 +548,14 @@ DROP TABLE has_volatile;
|
||||
DROP EVENT TRIGGER has_volatile_rewrite;
|
||||
DROP FUNCTION log_rewrite;
|
||||
DROP SCHEMA fast_default;
|
||||
-- Leave a table with an active fast default in place, for pg_upgrade testing
|
||||
set search_path = public;
|
||||
create table has_fast_default(f1 int);
|
||||
insert into has_fast_default values(1);
|
||||
alter table has_fast_default add column f2 int default 42;
|
||||
table has_fast_default;
|
||||
f1 | f2
|
||||
----+----
|
||||
1 | 42
|
||||
(1 row)
|
||||
|
||||
|
@ -369,3 +369,10 @@ DROP TABLE has_volatile;
|
||||
DROP EVENT TRIGGER has_volatile_rewrite;
|
||||
DROP FUNCTION log_rewrite;
|
||||
DROP SCHEMA fast_default;
|
||||
|
||||
-- Leave a table with an active fast default in place, for pg_upgrade testing
|
||||
set search_path = public;
|
||||
create table has_fast_default(f1 int);
|
||||
insert into has_fast_default values(1);
|
||||
alter table has_fast_default add column f2 int default 42;
|
||||
table has_fast_default;
|
||||
|
Reference in New Issue
Block a user