Re: Function pg_get_constraintdef
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Magnus Hagander <magnus@hagander.net>
Cc: Erki Eessaar <erki.eessaar@taltech.ee>, "pgsql-bugs@lists.postgresql.org" <pgsql-bugs@lists.postgresql.org>
Date: 2024-11-21T12:30:52Z
Lists: pgsql-bugs
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix pg_get_constraintdef for NOT NULL constraints on domains
- 6e793582bc66 17.3 landed
- 09d09d4297b9 18.0 landed
Attachments
- getconstraintdef-domains.patch (text/x-diff) patch
On 2024-Nov-21, Magnus Hagander wrote: > On Thu, Nov 21, 2024 at 1:01 PM Erki Eessaar <erki.eessaar@taltech.ee> > wrote: > > > SELECT pg_get_constraintdef(c.oid) > > FROM pg_catalog.pg_constraint c; > > > > If I execute the query in two different servers with PostgreSQL 17.1 and > > in different databases in these servers, then I get the answer > > > > ERROR: invalid constraint type "n" > Looks like this is an omission in the catalog-not-null-constraints patch. > It happens when you've got a domain that has a not null constraint on it. > Easily reproducible with > > create domain test as int int not null; > SELECT pg_get_constraintdef(c.oid) FROM pg_catalog.pg_constraint c; Ah, yeah. The overall catalog-not-null-constraints patch was reverted in 17 (and recently reintroduced in 18). But we kept not-null constraints for domains. However, the ruleutils.c code to support domain ones wasn't kept. So we need something based on the attached patch, which just copies what the code in 18 does for the domain case. I wonder if there are other places that need to handle these constraint entries, though. -- Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/