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 1wc7N9-0036NW-1z for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jun 2026 20:05:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wc7N6-00DZzp-1g for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jun 2026 20:05:24 +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 1wc7N6-00DZzg-0a for pgsql-hackers@lists.postgresql.org; Tue, 23 Jun 2026 20:05:24 +0000 Received: from mail-yw1-x112a.google.com ([2607:f8b0:4864:20::112a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wc7N4-00000001nHI-1lQM for pgsql-hackers@lists.postgresql.org; Tue, 23 Jun 2026 20:05:23 +0000 Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-805f5d1a6c3so3410607b3.1 for ; Tue, 23 Jun 2026 13:05:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782245121; cv=none; d=google.com; s=arc-20240605; b=ZpyZPn0t9p/Vkl1k0TQ5bNAqDBiBsA047peYVvhxyklU0u7FklZbMMYFNfbvv7VaT4 ZLwcXD0FgrabG8UBmoBAoq8pomfulGozQnuOMW6fMvWIvrCK/ly9lnlvoynDeY7kNTg7 cnufyziUKrMMtGKXXaTDfdHiMvTUC6TL/yitAlMtx63ZB36h3rbgWgxYGkh/lIjggAi+ 3L3RroF/AY8raxDR0mr89fqy4YWPiL8JoIcVN2RFi48GLza1nLUPTKTjY2tf7H1hxWKn CqOA5Pr5XkEEM63y7ZdIZXZtUYhP3dkDdx9RhimqmD8cTgIgl5xk00rtk56zMCrHmIcc k4yw== 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=hoD/SODZSp4w9ZnM4UZ32iuFi1W71dZZRde3sV4XxDA=; fh=nwNxTtLLPTU0ewfLM7SSbrjMajMl+wwnFkCY/fi90vE=; b=Piy0ZvrzJRYJ53WvP9vLR0lpl3CQegHmP/DVKAwmmsrk7S+eh9iZHLgLAoTw9zaEgr 54SArrUqliqQGVcY9GogkJoHcrbCHVnuEAXjy236c/Oxkg7nbcT4Tt18GTOtJ4u/CFj6 cxWK7BbuzFh8F82Vvr/iS+5wScXvvMcmQuJ1LWlSWf6GAAR+ekk0rA8dazdJ7iNoMwuB Cod1tr2oIban9bDYC24Gd+A3+oxKKK9oYpW91IPVlCRSEcxeCgudDkNwqCrRu+S18MzT PItZjwWIvOgLZYKa3Qq2+kXb/N//L7pZT6ZeImeuc3jNNDcc4Uzw73CWaLo3ZevF5ie0 N+gg==; 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=1782245121; x=1782849921; 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=hoD/SODZSp4w9ZnM4UZ32iuFi1W71dZZRde3sV4XxDA=; b=ha9WhnGTHIU3XCaD/jtlB95LELuR/uvo4bHYybjC5wustKD/AVpIHTwNOMdAexTGu2 ID2e8W/zs1ZlD8DuQj4iigC5LPqScHE3O0/LxqPUlSSkk9pGMkUKE90lDsI6iPXTrOqs 9FcqobQ2Rp//dXEd36tejg2sRlq4QsLab5oxCYpuQQ2gz42bzfPu0Fg/etyi5MbCuVXX PUX+moAJ8rmfhdlBufSerHL7MhCeJqNbaikSrjKWW4XawtdZnIQbopIOIKcePumr7BWB 8GMgrQFxb967qql1HQVf6PhTtUUHHcsY7oyg+7E6rYVSvXzcaE1LUer68zjOs4i0qAJu 0L4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782245121; x=1782849921; 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=hoD/SODZSp4w9ZnM4UZ32iuFi1W71dZZRde3sV4XxDA=; b=QvvAg2TlCoLKAsTfAleZPCvFncG4BNo//o6iAhJfz62gFn/+SQbdO0Y3BGS+EvEldI ByLcILbFkHR/QHze9r60LAnq0nky4MmlcRUcYNNIo0WlxTdljl74w7OCPI9mTZ8bz3Su 6rZDklOq2lKgooUXnbp0Ybb55c/y4D8RiSTE6hEJ5h6SMuETvM5muPuzV8m7DYDDVsJC 2jR1IP4HfteNAgyb5Ih39ZBTKXPEnlQAHhMP2fhXO8ll1UKydSjJs/zu8UG70yyM61Rg MQFZ394zcveOIdDL+8CbKESYqboyTtnqonHbk7FQZJgkSC55PlNClTC0Cr1Hytwk5t9K KImw== X-Gm-Message-State: AOJu0Ywpawhb0JtqP6lqDGHBgY2SqAe8+pmISMozimTXd3ofQffq3Ks3 9oT2FzCJLvwBHB5mCyEeIXoIdqcR67fgGOLDL0m3DCid7pmo8/ShyPbUKP2qTW43zSbE+q5qlox zhlsYEWovE7PAnCTDJPnGQPs9ml6aDIXcaZAzURqP+DmG2RV2S+SebciatkUj0oEWMLrBEHTsOg zXdA/lxCFwjzBdFVshSCreOBa6vs5AyfHT9QRnlu53TRv+Lk7rN6Y64bPC0OPRJ+jgPzXwSeS5U BosQkkkyqVWPLIl7H6tTl76Fbszx/BpqFmd53/mA4u7fcVRbst+Ukzn6WhxP/Q6NLhuMQW0HRi+ Yg== X-Gm-Gg: AfdE7cmUuQQvsfvbYFjfHKIgCbeBTKFchzazMzBz8Zhz+igDpEnbJN7SgYSyDzWnnKz KyqAf0HlnO9Xr4/2a5rdyFLWtiVC/DIko+eHHwSbhJmm97e/4+L850OG8fYOtGLOsa/5ZtVjBYz qxPjnCWozKA0339pMyNi9XYKNmadpvtXfukdF0i1/TOh6vkh+ytFUZz3NYmDJRGJIn0XYLGFnmK 14TsLBd9Kg+xDu9o5NmGBLbWbL6pSCiBz9xDO3+ZOne2h2o9oSS6L+ruCz4ueNaDS529csZ6ilu Xm3M34y6MoEHhYxuTOLoKxVss5NxiYJDFisphwgwG8MBD9zv86hKBFmQdFOVIw9av8Li X-Received: by 2002:a05:690c:680f:b0:7db:f8b1:cd7a with SMTP id 00721157ae682-806c0e57404mr41972617b3.8.1782245120714; Tue, 23 Jun 2026 13:05:20 -0700 (PDT) Received: from 298783833264 named unknown by gmailapi.google.com with HTTPREST; Tue, 23 Jun 2026 15:05:20 -0500 Received: from 298783833264 named unknown by gmailapi.google.com with HTTPREST; Tue, 23 Jun 2026 15:05:20 -0500 From: Zsolt Parragi In-Reply-To: References: <983C7B03-D9C3-4F15-8913-7616EC5E6414@gmail.com> <20260623.162104.775158751399277188.horikyota.ntt@gmail.com> MIME-Version: 1.0 Date: Tue, 23 Jun 2026 15:05:20 -0500 X-Gm-Features: AVVi8Cdg-d3QxEaO_zpeq9J4W1PkM7t7nIPbT7APnFJcwLyVdeoGJXwi8evHDKY 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 The new design is definitely an improvement as a more generic interface. I'm unsure about the "include" wording, to me that suggest "also includes", while the actual behavior is "only includes". To me it would be a bit surprising pg_get_table_ddl including something not including the basic create table statement. I also found a few issues with include in v10. Include check doesn't seem to work: CREATE TABLE t ( id int PRIMARY KEY, qty int CHECK (qty > 0), CONSTRAINT t_id_pos CHECK (id > 0) ); SELECT * FROM pg_get_table_ddl('t', 'include', 'check'); -- empty? The include partitions clause also doesn't work: CREATE TABLE p (id int, val text) PARTITION BY RANGE (id); CREATE TABLE p_a PARTITION OF p FOR VALUES FROM (0) TO (100); CREATE TABLE p_b PARTITION OF p FOR VALUES FROM (100) TO (200); SELECT * FROM pg_get_table_ddl('p','include','partitions'); -- empty There's also an issue with replica identity non primary key unique indexes: CREATE TABLE t2 (a int NOT NULL UNIQUE, b int); ALTER TABLE t2 REPLICA IDENTITY USING INDEX t2_a_key; SELECT * FROM pg_get_table_ddl('t2','exclude','unique'); -- ALTER TABLE public.t2 REPLICA IDENTITY USING INDEX t2_a_key; -- but there's no such index