pg_dump: fix failure to dump comments on constraints in some cases.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 2 Nov 2022 15:30:04 +0000 (11:30 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 2 Nov 2022 15:30:04 +0000 (11:30 -0400)
Thinko in commit 5209c0ba0: I checked the wrong object's
DUMP_COMPONENT_COMMENT bit in two places.

Per bug #17675 from Franz-Josef Färber.

Discussion: https://postgr.es/m/17675-c69c001e06390867@postgresql.org

src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/t/002_pg_dump.pl

index bd9b066e4eb8863fd7d55f6b6e83a6a3fec55026..da427f4d4a17c177ca5658918125b7fc4204ba4b 100644 (file)
@@ -10996,7 +10996,7 @@ dumpDomain(Archive *fout, const TypeInfo *tyinfo)
                appendPQExpBuffer(conprefix, "CONSTRAINT %s ON DOMAIN",
                                                  fmtId(domcheck->dobj.name));
 
-               if (tyinfo->dobj.dump & DUMP_COMPONENT_COMMENT)
+               if (domcheck->dobj.dump & DUMP_COMPONENT_COMMENT)
                        dumpComment(fout, conprefix->data, qtypname,
                                                tyinfo->dobj.namespace->dobj.name,
                                                tyinfo->rolname,
@@ -15868,7 +15868,7 @@ dumpTableSchema(Archive *fout, const TableInfo *tbinfo)
                if (constr->separate || !constr->conislocal)
                        continue;
 
-               if (tbinfo->dobj.dump & DUMP_COMPONENT_COMMENT)
+               if (constr->dobj.dump & DUMP_COMPONENT_COMMENT)
                        dumpTableConstraintComment(fout, constr);
        }
 
index 5df5a0ad59effe387c34f3b3665a7972cbebf369..8dc1f0eccb5dbf8000bdf1c874bb5fdcc300e692 100644 (file)
@@ -1690,13 +1690,16 @@ my %tests = (
                               COLLATE "C"
                                           DEFAULT \'10014\'
                                           CHECK(VALUE ~ \'^\d{5}$\' OR
-                                                        VALUE ~ \'^\d{5}-\d{4}$\');',
+                                                        VALUE ~ \'^\d{5}-\d{4}$\');
+                                          COMMENT ON CONSTRAINT us_postal_code_check
+                                                ON DOMAIN dump_test.us_postal_code IS \'check it\';',
                regexp => qr/^
                        \QCREATE DOMAIN dump_test.us_postal_code AS text COLLATE pg_catalog."C" DEFAULT '10014'::text\E\n\s+
                        \QCONSTRAINT us_postal_code_check CHECK \E
                        \Q(((VALUE ~ '^\d{5}\E
                        \$\Q'::text) OR (VALUE ~ '^\d{5}-\d{4}\E\$
-                       \Q'::text)));\E
+                       \Q'::text)));\E(.|\n)*
+                       \QCOMMENT ON CONSTRAINT us_postal_code_check ON DOMAIN dump_test.us_postal_code IS 'check it';\E
                        /xm,
                like =>
                  { %full_runs, %dump_test_schema_runs, section_pre_data => 1, },
@@ -2639,7 +2642,9 @@ my %tests = (
                                                   col3 text,
                                                   col4 text,
                                                   CHECK (col1 <= 1000)
-                                          ) WITH (autovacuum_enabled = false, fillfactor=80);',
+                                          ) WITH (autovacuum_enabled = false, fillfactor=80);
+                                          COMMENT ON CONSTRAINT test_table_col1_check
+                                                ON dump_test.test_table IS \'bounds check\';',
                regexp => qr/^
                        \QCREATE TABLE dump_test.test_table (\E\n
                        \s+\Qcol1 integer NOT NULL,\E\n
@@ -2648,7 +2653,9 @@ my %tests = (
                        \s+\Qcol4 text,\E\n
                        \s+\QCONSTRAINT test_table_col1_check CHECK ((col1 <= 1000))\E\n
                        \Q)\E\n
-                       \QWITH (autovacuum_enabled='false', fillfactor='80');\E\n/xm,
+                       \QWITH (autovacuum_enabled='false', fillfactor='80');\E\n(.|\n)*
+                       \QCOMMENT ON CONSTRAINT test_table_col1_check ON dump_test.test_table IS 'bounds check';\E
+                       /xm,
                like => {
                        %full_runs,
                        %dump_test_schema_runs,