Re: pg_dump does not dump domain not-null constraint's comments
От | jian he |
---|---|
Тема | Re: pg_dump does not dump domain not-null constraint's comments |
Дата | |
Msg-id | CACJufxF_C2pe6J_+nPr6C5jf5rQnbYP8XOKr4HM8yHZtp2aQqQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: pg_dump does not dump domain not-null constraint's comments (Álvaro Herrera <alvherre@kurilemu.de>) |
Ответы |
Re: pg_dump does not dump domain not-null constraint's comments
|
Список | pgsql-hackers |
On Tue, Jul 15, 2025 at 2:24 AM Álvaro Herrera <alvherre@kurilemu.de> wrote: > > On 2025-May-22, jian he wrote: > > > I actually found another bug. > > create schema test; > > CREATE DOMAIN test.d1 AS integer NOT NULL default 11; > > pg_dump --schema=test > 1.sql > > "" > > pg_dump: warning: could not resolve dependency loop among these items: > > pg_dump: detail: TYPE d1 (ID 1415 OID 18007) > > pg_dump: detail: CONSTRAINT d1_not_null (ID 1416 OID 18008) > > "" > > Oh, interesting. I agree with the rough fix, but I think it's better if > we keep the contype comparisons rather than removing them, relaxing to > allow for one more char. > > I didn't like the idea of stashing the not-null constraint in the same > array as the check constraints; it feels a bit dirty (especially because > of the need to scan the array in order to find the not-null one). I > opted to add a separate TypeInfo->notnull pointer instead. This feels > more natural. This works because we know a domain has only one not-null > constraint. Note that this means we don't need your proposed 0002 > anymore. > TypeInfo->notnull is much better than TypeInfo->domChecks handle both check and not-null constraints. > > The attached applies on top of your patch. Opinions? > + constraint->contype = *(PQgetvalue(res, i, i_contype)); can change to constraint->contype = contype; in getDomainConstraints, we use pg_malloc constrinfo = (ConstraintInfo *) pg_malloc(ntups * sizeof(ConstraintInfo)); after constraint->condeferred = false; would better also add constraint->conperiod = false; accidently found another existing bug. create schema test; CREATE DOMAIN test.d1 AS integer NOT NULL default 11; alter domain test.d1 add constraint a2 check(value > 1) not valid; comment on CONSTRAINT a2 ON DOMAIN test.d1 is 'test'; dump output is: CREATE SCHEMA test; CREATE DOMAIN test.d1 AS integer NOT NULL DEFAULT 11; COMMENT ON CONSTRAINT a2 ON DOMAIN test.d1 IS 'test'; ALTER DOMAIN test.d1 ADD CONSTRAINT a2 CHECK ((VALUE > 1)) NOT VALID; Obviously the COMMENT command will error out. currently working on a fix, just sharing the bug details in advance.
В списке pgsql-hackers по дате отправления: