Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wWhGZ-002nQM-1R for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jun 2026 21:12:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wWhGY-003yjw-05 for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jun 2026 21:12:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wWhGX-003yjo-2K for pgsql-hackers@lists.postgresql.org; Mon, 08 Jun 2026 21:12:13 +0000 Received: from mail-yx1-xb136.google.com ([2607:f8b0:4864:20::b136]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wWhGV-00000001kJC-2SFf for pgsql-hackers@lists.postgresql.org; Mon, 08 Jun 2026 21:12:12 +0000 Received: by mail-yx1-xb136.google.com with SMTP id 956f58d0204a3-660633a60caso235862d50.2 for ; Mon, 08 Jun 2026 14:12:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780953131; cv=none; d=google.com; s=arc-20240605; b=DxVT5SKbYPpA/Rwj+cK6W8SDUV1NWcXha40A+UbDMa2CPzJbINpBh0LU1zY9Dq/4xy jRossGiXqNyK5hR/NDDg613bNgwg6MZWKHLl9wCMVZXu7ar+ruIB5z/EViXsri9WWhWl OmzYStD/OpyQHpePGlw4AVgQFOqN7F7WKOr8IotLrGQuJChj0jLiQj4aEzFMnvVmvTWZ nPvgJFoNK0vIPzP97y+TUu85a5V8PfI218HMF0Q/UlHm+gvisexabxf+CBKYMOpr9vnz 3COqkC1DK7+UIYcnrVvzBQ6JnyZvjdjUWvChSz5m2odBZjC+5AfEEt4584Rvj32lo76q RFuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:mime-version:references:in-reply-to:from :dkim-signature; bh=v635fiDQewEfA7lOZLXezAnARnL1HHsDW33S2wC1bn8=; fh=nwNxTtLLPTU0ewfLM7SSbrjMajMl+wwnFkCY/fi90vE=; b=POpA8gQEIaPJ8Cxy+ogZwUrRdDsrTMhmRyTQiDMJv4tPxe9YQSGs7EbECzJfQyUzoR DOlZHWd4W+GMLIOTi6phiIHJQ8BO5ZF3BF3qWoilW14imJkxjsdjtrcnu6JEIrN0aEoJ Kl7aS0Yfkfo82iKoJP9+JmSa27ZtU3HTxReE9PtTc6evIXxJnv1x8IE/+HCp6k3475vw sG7UyrVC+lIF5908oEsycsVtFYS+MNQv6KIUkArKSbqqv5SEBU+4PbXLYtXy2+sDuaGF KOGz9hhJQFQOzub6z8mKF/qjf7Bm0swF7VYn12/tz+8xTooroj4IF52xOF4kIRt7AmUP NFrg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=percona.com; s=google; t=1780953131; x=1781557931; darn=lists.postgresql.org; h=to:subject:message-id:date:mime-version:references:in-reply-to:from :from:to:cc:subject:date:message-id:reply-to; bh=v635fiDQewEfA7lOZLXezAnARnL1HHsDW33S2wC1bn8=; b=ESA4ScEcpzD33+vcqMqxKfukL9b6ZvEYBhfAb+4Aez659ofKNJcTm4OLrq43jLQn5w DyNW3SQHTScXB/t4icT3gkPH/Wscg5izMWoNETFkbbHAaWeJFL5Mu47EhbY37tS7WqYd 6BL6V7Bc7RVSFT+Yt36sbWB7CywfPDBMJPVQKVzu9nuw99C7nbdxrbsUzB1d/kXew0Om hxbI+AMiCHeOh++HW1EZbAKtlyJkrJBAnYSindxjZKzKb8yNVzkGiOzISmKtB+BZFnMW +M0hsa4pAdd8FNP+ZPglkEjYeKeLIZxe4cQV/wBQ9khFo/MhoxfNB4utaCqgqGD2/izc U97w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780953131; x=1781557931; h=to:subject:message-id:date:mime-version:references:in-reply-to:from :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=v635fiDQewEfA7lOZLXezAnARnL1HHsDW33S2wC1bn8=; b=WROHqMiG8XMEGrj1xKbliOz68ItpVp0S2Sh7cXS0DySkdTz1CFGp2FbtmKN9JKRPEr A6ACu8ejfaV50BB8b1Jb1s5vMazTqntuHk0oJlEk2QCYqVmoi+9rNNLs/TkhVc/gxoLv wB30fkwVgB/XtIG0TZHjm7J2hv53Y0vVmL4WDr/O4zwD6ydJzHtG4+ZLnAdInUFp3sq4 j1hxAwp02EsDC8Hmwna0lI3x7Sxr2Gb+IUyyDlXCxVyfnUiKe9LpASv7fymQZTQmWWQv 7hkDq9nGZc0+4jrXVQ/rlhG9/3chZydcK+zZH8XdS4k77cppBbZugDNbk6sxYbcRV0ig PnBw== X-Gm-Message-State: AOJu0YyABpbfGE68mXdSOTsG2eyRAxiZbIcCBHm6Dn4/pP7XqOc3TB5b yvFFKKYyEIRQgYfCLOy/+KDJiZSDsEd6bx+qIFoSWss6lgQb2KRO18GRSCEaBnvBWIAWxLoRMol IauHdUJ4W0SRDmnayt+jQ7h1FJUZZ61wPl9kQlinAp0+2F9ArM6OctDvVakJKhIFuwx9KTV0f8i 9vhE1BPY2MBK56sI4pSgR+iZEpqeYbj7AT3aPEkojp9ZybFZmCoTQhi/6RfEfn64N+zJ27lV9PM awVY9Pd61PTE2RaQG0BGP/AO/bTQxCo2YnyUlic/dpFXVclNmkvA9UjGJE1nIHtA8e5bFsAZVdf OQ== X-Gm-Gg: Acq92OGugYszic7gIG8iGSGtrLcFcywOJ2hbElxu5mYKOwZCr/l1blEX7L7lpnY5x49 4tMsSqNaTzLVnld9myBwmV5Bnxwre5bEqjNkdGvlwpYvjsFhF7wWi2p8xIAnFN1NLZSYOOaFh/5 k44Jak9yEJf9k7zk+2lWWxVpzW0aoJ3PD2fUGtxwuJ34wB3itFcuGt3pKpRWI8d5eay+E7TEW8h BAoWMsRrX3LoSeH4cvxxcfnRC9rx19e1LNjNmrMP9lEHDAHG9yxq6l23ya3HwEyPPDrPydqZ1D5 yq/doOisXwJJ1kmIw8mlyhxePUY9E9TJGch9Am0+Z0zwdvoqC7aKafHRNVHDUGH8+NFuga2DqgT hDEzBUjNNU9VHOQ== X-Received: by 2002:a05:690e:4847:b0:654:ea8a:f67 with SMTP id 956f58d0204a3-66106dd0d5fmr11009088d50.9.1780953130562; Mon, 08 Jun 2026 14:12:10 -0700 (PDT) Received: from 298783833264 named unknown by gmailapi.google.com with HTTPREST; Mon, 8 Jun 2026 16:12:09 -0500 Received: from 298783833264 named unknown by gmailapi.google.com with HTTPREST; Mon, 8 Jun 2026 16:12:09 -0500 From: Zsolt Parragi In-Reply-To: References: MIME-Version: 1.0 Date: Mon, 8 Jun 2026 16:12:09 -0500 X-Gm-Features: AVVi8CdQ9FXQowQefC5jDEMVUvPC__EO-Ued4LwWliEJUcIGqTwNms1oHoquy7Q Message-ID: Subject: Re: [PATCH] Add pg_get_table_ddl() to reconstruct CREATE TABLE statements To: pgsql-hackers@lists.postgresql.org Content-Type: text/plain; charset="UTF-8" X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: percona,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hello! I did some basic testing with the new functions, and found a few bugs: 1. Seems like check constraints on partitions are ignored: CREATE TABLE p (id int, val int) PARTITION BY RANGE (id); CREATE TABLE p_child PARTITION OF p (CONSTRAINT chk_inline CHECK (val > 0)) FOR VALUES FROM (0) TO (100); SELECT * FROM pg_get_table_ddl('p_child', 'owner','false'); 2. inherited stored generated columns can't be replayed: CREATE TABLE par_s ( id int, g int GENERATED ALWAYS AS (id * 2) STORED ); CREATE TABLE ch_s () INHERITS (par_s); SELECT * FROM pg_get_table_ddl('ch_s', 'owner','false'); -- CREATE TABLE public.ch_s () INHERITS (public.par_s); -- ALTER TABLE public.ch_s ALTER COLUMN g SET DEFAULT (id * 2); Dropping ch_s, executing the returned statements: ERROR: column "g" of relation "ch_s" is a generated column HINT: Use ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION instead. 3. named not null constraints can't be replayed: CREATE TABLE t (a int CONSTRAINT my_nn NOT NULL); SELECT * FROM pg_get_table_ddl('t'::regclass,'owner','false'); -- CREATE TABLE public.t ( a integer NOT NULL); -- ALTER TABLE public.t ADD CONSTRAINT my_nn NOT NULL a; Dropping t, executing the statements: ERROR: cannot create not-null constraint "my_nn" on column "a" of table "t" DETAIL: A not-null constraint named "t_a_not_null" already exists for this column.