On 2025-Jun-25, Fujii Masao wrote:

> From 516e647e7d1fdafc64dba092389963f32cd688e5 Mon Sep 17 00:00:00 2001
> From: Fujii Masao <fu...@postgresql.org>
> Date: Wed, 25 Jun 2025 10:02:56 +0900
> Subject: [PATCH v2] Make CREATE TABLE LIKE copy comments on NOT NULL
>  constraints when requested.
> 
> Commit 14e87ffa5c5 introduced support for adding comments to NOT NULL
> constraints. However, CREATE TABLE LIKE INCLUDING COMMENTS did not copy
> these comments to the new table. This was an oversight in that commit.
> 
> This commit corrects the behavior by ensuring CREATE TABLE LIKE to also copy
> the comments on NOT NULL constraints when INCLUDING COMMENTS is specified.

LGTM.  I'd add a line in the test showing that these comments are copied
even if INCLUDING CONSTRAINTS is not given, because not-null constraints
comments themselves are -- as attached.

-- 
Álvaro Herrera               48°01'N 7°57'E  —  https://www.EnterpriseDB.com/
"It takes less than 2 seconds to get to 78% complete; that's a good sign.
A few seconds later it's at 90%, but it seems to have stuck there.  Did
somebody make percentages logarithmic while I wasn't looking?"
                http://smylers.hates-software.com/2005/09/08/1995c749.html
>From 3a5b66feaf4824707f5e09f084ed7b303589f887 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81lvaro=20Herrera?= <alvhe...@kurilemu.de>
Date: Wed, 25 Jun 2025 13:42:03 +0200
Subject: [PATCH] test fixup

---
 src/test/regress/expected/create_table_like.out | 12 +++++++-----
 src/test/regress/sql/create_table_like.sql      |  3 ++-
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/test/regress/expected/create_table_like.out 
b/src/test/regress/expected/create_table_like.out
index 1374a972e6e..7092b42672d 100644
--- a/src/test/regress/expected/create_table_like.out
+++ b/src/test/regress/expected/create_table_like.out
@@ -329,6 +329,7 @@ COMMENT ON STATISTICS ctlt1_expr_stat IS 'ab expr stats';
 COMMENT ON COLUMN ctlt1.a IS 'A';
 COMMENT ON COLUMN ctlt1.b IS 'B';
 COMMENT ON CONSTRAINT ctlt1_a_check ON ctlt1 IS 't1_a_check';
+COMMENT ON CONSTRAINT ctlt1_a_not_null ON ctlt1 IS 't1_a_notnull';
 COMMENT ON INDEX ctlt1_pkey IS 'index pkey';
 COMMENT ON INDEX ctlt1_b_key IS 'index b_key';
 ALTER TABLE ctlt1 ALTER COLUMN a SET STORAGE MAIN;
@@ -384,11 +385,12 @@ Not-null constraints:
     "ctlt1_a_not_null" NOT NULL "a" (local, inherited)
 Inherits: ctlt1
 
-SELECT description FROM pg_description, pg_constraint c WHERE classoid = 
'pg_constraint'::regclass AND objoid = c.oid AND c.conrelid = 
'ctlt1_inh'::regclass;
- description 
--------------
- t1_a_check
-(1 row)
+SELECT conname, description FROM pg_description, pg_constraint c WHERE 
classoid = 'pg_constraint'::regclass AND objoid = c.oid AND c.conrelid = 
'ctlt1_inh'::regclass ORDER BY conname COLLATE "C";
+     conname      | description  
+------------------+--------------
+ ctlt1_a_check    | t1_a_check
+ ctlt1_a_not_null | t1_a_notnull
+(2 rows)
 
 CREATE TABLE ctlt13_inh () INHERITS (ctlt1, ctlt3);
 NOTICE:  merging multiple inherited definitions of column "a"
diff --git a/src/test/regress/sql/create_table_like.sql 
b/src/test/regress/sql/create_table_like.sql
index 6da7f4f0557..9edde9830e7 100644
--- a/src/test/regress/sql/create_table_like.sql
+++ b/src/test/regress/sql/create_table_like.sql
@@ -139,6 +139,7 @@ COMMENT ON STATISTICS ctlt1_expr_stat IS 'ab expr stats';
 COMMENT ON COLUMN ctlt1.a IS 'A';
 COMMENT ON COLUMN ctlt1.b IS 'B';
 COMMENT ON CONSTRAINT ctlt1_a_check ON ctlt1 IS 't1_a_check';
+COMMENT ON CONSTRAINT ctlt1_a_not_null ON ctlt1 IS 't1_a_notnull';
 COMMENT ON INDEX ctlt1_pkey IS 'index pkey';
 COMMENT ON INDEX ctlt1_b_key IS 'index b_key';
 ALTER TABLE ctlt1 ALTER COLUMN a SET STORAGE MAIN;
@@ -164,7 +165,7 @@ CREATE TABLE ctlt12_comments (LIKE ctlt1 INCLUDING 
COMMENTS, LIKE ctlt2 INCLUDIN
 \d+ ctlt12_comments
 CREATE TABLE ctlt1_inh (LIKE ctlt1 INCLUDING CONSTRAINTS INCLUDING COMMENTS) 
INHERITS (ctlt1);
 \d+ ctlt1_inh
-SELECT description FROM pg_description, pg_constraint c WHERE classoid = 
'pg_constraint'::regclass AND objoid = c.oid AND c.conrelid = 
'ctlt1_inh'::regclass;
+SELECT conname, description FROM pg_description, pg_constraint c WHERE 
classoid = 'pg_constraint'::regclass AND objoid = c.oid AND c.conrelid = 
'ctlt1_inh'::regclass ORDER BY conname COLLATE "C";
 CREATE TABLE ctlt13_inh () INHERITS (ctlt1, ctlt3);
 \d+ ctlt13_inh
 CREATE TABLE ctlt13_like (LIKE ctlt3 INCLUDING CONSTRAINTS INCLUDING INDEXES 
INCLUDING COMMENTS INCLUDING STORAGE) INHERITS (ctlt1);
-- 
2.39.5

Reply via email to