Brokenness in dump/restore for GENERATED expressions

Started by Tom Lanealmost 6 years ago2 messages
#1Tom Lane
tgl@sss.pgh.pa.us

Using today's HEAD, the regression database cannot be dumped and
restored normally. Since the buildfarm isn't all red, I suppose
it works in --binary-upgrade mode ... but if I just do

$ make installcheck # to set up the test database
$ pg_dump -Fc regression >r.dump
$ createdb r2
$ pg_restore -d r2 r.dump

I get

pg_restore: while PROCESSING TOC:
pg_restore: from TOC entry 6016; 2604 24926 DEFAULT gtest1_1 b postgres
pg_restore: error: could not execute query: ERROR: column "b" of relation "gtest1_1" is a generated column
Command was: ALTER TABLE ONLY public.gtest1_1 ALTER COLUMN b SET DEFAULT (a * 2);

pg_restore: from TOC entry 6041; 2604 25966 DEFAULT gtest30_1 b postgres
pg_restore: error: could not execute query: ERROR: cannot use column reference in DEFAULT expression
Command was: ALTER TABLE ONLY public.gtest30_1 ALTER COLUMN b SET DEFAULT (a * 2);

pg_restore: warning: errors ignored on restore: 2

regards, tom lane

#2Peter Eisentraut
peter.eisentraut@2ndquadrant.com
In reply to: Tom Lane (#1)
Re: Brokenness in dump/restore for GENERATED expressions

On 2020-01-30 19:54, Tom Lane wrote:

Using today's HEAD, the regression database cannot be dumped and
restored normally. Since the buildfarm isn't all red, I suppose
it works in --binary-upgrade mode ... but if I just do

$ make installcheck # to set up the test database
$ pg_dump -Fc regression >r.dump
$ createdb r2
$ pg_restore -d r2 r.dump

I get

pg_restore: while PROCESSING TOC:
pg_restore: from TOC entry 6016; 2604 24926 DEFAULT gtest1_1 b postgres
pg_restore: error: could not execute query: ERROR: column "b" of relation "gtest1_1" is a generated column
Command was: ALTER TABLE ONLY public.gtest1_1 ALTER COLUMN b SET DEFAULT (a * 2);

pg_restore: from TOC entry 6041; 2604 25966 DEFAULT gtest30_1 b postgres
pg_restore: error: could not execute query: ERROR: cannot use column reference in DEFAULT expression
Command was: ALTER TABLE ONLY public.gtest30_1 ALTER COLUMN b SET DEFAULT (a * 2);

This is the same issue as
</messages/by-id/15830.1575468847@sss.pgh.pa.us&gt;.
I will work in it this week.

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services