Обсуждение: BUG #19024: Error when trying to use pg_dump of new server on old server
BUG #19024: Error when trying to use pg_dump of new server on old server
От
PG Bug reporting form
Дата:
The following bug has been logged on the website: Bug reference: 19024 Logged by: Egor Chindyaskin Email address: kyzevan23@mail.ru PostgreSQL version: 17.6 Operating system: Ubuntu 25.04 Description: Hello, commit 6b755d8d70b2ceffeb4798cbb6907d2704c2e6c4 introduced a new bug. If you take the old cluster and server and try to do a pg_dump on the new server REL_17_STABLE (71ee96e9f95806f9f6e2c805496c0dcf25b3946a), as shown in the reproduction below: #!/bin/bash PG_OLD=REL_17_0/bin PG_NEW=REL_17_STABLE/bin $PG_OLD/initdb -D data $PG_OLD/pg_ctl -D data -l logfile start $PG_OLD/dropdb testdb > /dev/null || true $PG_OLD/createdb testdb $PG_OLD/psql -c "CREATE DOMAIN public.hstestdom1 AS integer NOT NULL DEFAULT 0;" testdb $PG_NEW/pg_dump testdb We will get the error pg_dump: error: query failed: ERROR: invalid constraint type "n" pg_dump: detail: Query was: EXECUTE getDomainConstraints('16386') --- Best regards, Egor Chindyaskin Postgres Professional: http://postgrespro.com
On Tue, 19 Aug 2025 at 16:34, PG Bug reporting form <noreply@postgresql.org> wrote: > > The following bug has been logged on the website: > > Bug reference: 19024 > Logged by: Egor Chindyaskin > Email address: kyzevan23@mail.ru > PostgreSQL version: 17.6 > Operating system: Ubuntu 25.04 > Description: > > Hello, commit 6b755d8d70b2ceffeb4798cbb6907d2704c2e6c4 introduced a new bug. > If you take the old cluster and server and try to do a pg_dump on the new > server REL_17_STABLE (71ee96e9f95806f9f6e2c805496c0dcf25b3946a), as shown in > the reproduction below: > > #!/bin/bash > PG_OLD=REL_17_0/bin > PG_NEW=REL_17_STABLE/bin > $PG_OLD/initdb -D data > $PG_OLD/pg_ctl -D data -l logfile start > $PG_OLD/dropdb testdb > /dev/null || true > $PG_OLD/createdb testdb > $PG_OLD/psql -c "CREATE DOMAIN public.hstestdom1 AS integer NOT NULL DEFAULT > 0;" testdb > $PG_NEW/pg_dump testdb > > We will get the error > > pg_dump: error: query failed: ERROR: invalid constraint type "n" > pg_dump: detail: Query was: EXECUTE getDomainConstraints('16386') > > --- > Best regards, > Egor Chindyaskin > Postgres Professional: http://postgrespro.com > Hi! 6e79358 fixed server support for pg_get_constraintdef, so you should use pg >= 17.3 for this test to work. pd_dump executes queries on server, so NEW pg_dump will execute on OLD server. We cannot change anything in 17.0 to make this example work. So nothing need to be done for REL_17_STABLE? -- Best regards, Kirill Reshke
On Tue, 19 Aug 2025 at 17:54, Kirill Reshke <reshkekirill@gmail.com> wrote: > > Hi! > > 6e79358 fixed server support for pg_get_constraintdef, so you should > use pg >= 17.3 for this test to work. > pd_dump executes queries on server, so NEW pg_dump will execute on OLD > server. We cannot change anything in 17.0 to make this example work. > So nothing need to be done for REL_17_STABLE? > I will clarify a little here. The only way to fix this is to add new code to REL_17_STABLE for pg version >= 170000 and < 170003. Something like, "if postgresql in pg 17 with bug in pg_get_constraintdef, do not call pg_get_constraintdef for contype = 'n', but describe it using pg_dump code" This is a very difficult solution to maintain in-core, so the only advice I can give is no actually update the minor version of the server. -- Best regards, Kirill Reshke
Kirill Reshke <reshkekirill@gmail.com> writes: > I will clarify a little here. The only way to fix this is to add new > code to REL_17_STABLE for pg version >= 170000 and < 170003. > Something like, "if postgresql in pg 17 with bug in > pg_get_constraintdef, do not call pg_get_constraintdef for contype = > 'n', but describe it using pg_dump code" > This is a very difficult solution to maintain in-core, so the only > advice I can give is no actually update the minor version of the > server. No, we're not going to do that. The correct answer here is "update to a supported version of the server", namely the latest minor release. regards, tom lane