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 1w7Mzj-005EZT-1B for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 00:30:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7Mzh-007PC2-2v for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 00:30:10 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w7Mzh-007PBu-1w for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 00:30:10 +0000 Received: from mail-qt1-x82a.google.com ([2607:f8b0:4864:20::82a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7Mzf-000000025Lj-1QoB for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 00:30:09 +0000 Received: by mail-qt1-x82a.google.com with SMTP id d75a77b69052e-50bc115f206so23600781cf.3 for ; Mon, 30 Mar 2026 17:30:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774917006; cv=none; d=google.com; s=arc-20240605; b=hV4wvjKBTcvSSQxtJnVIFa6ZDeA3WqzG9JzCUrXW0B5atOmstohMLpFBVzJ1QUsNaG kVyURoQimpQQYBTePNPMmTYAHZJ3adRTxHu2sCiQLWll5CwQTgxXIRc825qzoc4zjGYy itUkaybp9rYNwEtYuPGK6/g0CzeP8H8qxXRuSsSkhEVz4pbZmCLUu7ik6hDmnY4NsCny xiBshf6yQmg9dxuft4agcruW1WODKEfeFfm/QfVwoNaO7z7WIYgpCneDh7f4GbMWfgMu /61JN9NvWn+zUvYIOlRaG/eiUV2yp8E5u2x+a2zpj6MF3IgBOqegnd9+Jixce/RKIJvV Ljhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=YZTft7y9BSy15nJHcgEBa6kOMZZgo9O1IQrSL8arPow=; fh=W87oOsdvzeYXMxz53RWCcTfm2l/V6fzHaGYmpGF9hL8=; b=d7prYH1NskIcVDEzDdgNrJS6gwCDt4KloN098fYXoiBiaP+jGvBLPtouvsTntLuo3R 2onuQI9hrY7YmAbrTSu+Ltn2e9q80yFtKMh9XObSflx/fbWgkc13F2JNMgKn/EMuShDf LK6NP2Gha5diXBOHGWZUiXrqfAJTnox4+b/HO+NTwwpJK8dukuaw5bGn5jZzxcgWxsWo sKNvs/zGu1MPizW2MMag4ZAYGsm+Uuij+LTkg8oTr4SBCUBJZNwzT+Z2J8w2QKb2w7ax ZnOw2bXTPofGq+Zs10pH12Mn9kK/AMc05P+ao3ZcBebBdo/o71w3gFEV3EJc2nEw4McE euPA==; 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=gmail.com; s=20251104; t=1774917006; x=1775521806; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=YZTft7y9BSy15nJHcgEBa6kOMZZgo9O1IQrSL8arPow=; b=kZyKfNimZVpgHJ+VZs0KBtNZdF4SEM6ZrO157vBxmjbnGu3uMmsWKj8yN8tdxfG3gH XxB4xOnuyT2HdyT6ov1Ss84wZ5Jm06rDJZd3Z0GSmSpVVvn4FsA+SgpsSwuR2cPU15eV nboF0VtD/Vb+lRxL2oqvAPBrWKItzvS8P+eTY3aM7zsLDaiUlzNUF2peyPcbKI7a6QTA pFaTnPTCF52L88qWa8ODcwu1oAUq8KZT6ekFIb1UekbrK0Ibhhpl34isT0NmguDY5uda /+7YXYyV7N02Jsl1B21d+CSt6X9//UgAEGeGz9IAPNVJR4U78AoIknekJN7SBhlKL9tW tGtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774917006; x=1775521806; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=YZTft7y9BSy15nJHcgEBa6kOMZZgo9O1IQrSL8arPow=; b=jrSjNAPC0OXweK2RQlyoxUUFfvJkxk5zPkDzxlK6xtkEB7XbJeBTeLRC8P8bzCUMMr KfkbPU7q4/I/RDCIt28voKIemGVw9QyjR36Tnp2gPIB5wp/Dff6ymE1zh6DSh3boTyqK VEfTpff+l0gOhICdALX5a5SKyjOxVYRAkqLpSCoW6EIm/FYaVq8WecOUw5m5pOKevRlr 98f5AKh6FsINUpXwC2Se4ydr7BTUI0xQ/J4US+MnwAaZzrTE3y2EmVW6JWl1YLWqD2EG 3sb/Wkfk5fik6Rt1vtcD+XLAzHU0nciHxUUuihQEAM6leMFg4bCoGXIW+Q0u82a9RmtX Pstw== X-Forwarded-Encrypted: i=1; AJvYcCVJgJWBvnvyQG0ZMWdarYCz0l5AByrZVOKcotoxS+almW/6G2X51t9HNrWDg2mTVmPMv4v59zf1H3xWQSsb@lists.postgresql.org X-Gm-Message-State: AOJu0YyD9J/WdztjgJPuGQJd4ucXA4vP3PVOLtxOHQIEHNGjm8ktVdp2 6K40J8xIWS2frSrSBoa3X1VCU/4EoDf7mvdjPwveEEonPchDHf3XaLk6DD05G3yKp6ja+Sonpra O1LfXl+DAi+TArXiDOm0dBtl9dQzfJRA= X-Gm-Gg: ATEYQzzYB5CJ/+LzqGkkSrcAuzlxxoRU/9cX3MhQ2a7RmXKFX9vWnytC7KXRp9PuTi5 o2XBYyBTf+UPzHlA5e2OgOoUNeQMQ6S/c/JzZcet0IE9HKbxtHGLRHAHQcJBSbfDgBnb+REH6p+ uqt6u51kKvP4kW1f87ZXApeXFPmmlHNjq4XvoT5TZGRPS1VOMlE1oj9G5dCK2nxvSq0nZRwgcRs 4ypzEGEA3LvDJGxesZM9ijOvehBtRn+C88BSwjQZeqghzqsnMVMgpF6vfb4Dc5hJpZNjfiTQBrL qfHKvZqmiVktpb6rd5HgnzXozqCp8vr+eTqckxc6 X-Received: by 2002:ac8:5a11:0:b0:509:379b:d4d with SMTP id d75a77b69052e-50ba38167b2mr203878681cf.16.1774917006201; Mon, 30 Mar 2026 17:30:06 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Peter Smith Date: Tue, 31 Mar 2026 11:29:39 +1100 X-Gm-Features: AQROBzAY6D-JWa2BbGcaC2IdIvwE9Jza2nT32EFJgoSMLiXcDkbaBMYGcm3KmpI Message-ID: Subject: Re: Skipping schema changes in publication To: vignesh C Cc: Shlok Kyal , Amit Kapila , Dilip Kumar , shveta malik , Masahiko Sawada , "Hayato Kuroda (Fujitsu)" , Nisha Moond , Ashutosh Sharma , "David G. Johnston" , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hi Vignesh. Some review comments for patch v4-0001. ====== doc/src/sgml/ref/alter_publication.sgml 1. - [ ONLY ] table_name [ * ] + TABLE table_object [, ... ] + +and table_object is: + + [ ONLY ] table_name [ * ] With the introduction of 'table_object' I expected that 'table_and_columns' and 'publication_drop_object' would also make use of it. Why not? ====== doc/src/sgml/ref/create_publication.sgml 2. - [ ONLY ] table_name [ * ] + TABLE table_object [, ... ] + +and table_object is: + + [ ONLY ] table_name [ * ] With the introduction of 'table_object' I expected that 'table_and_columns' would also make use of it. Why not? ====== src/backend/parser/gram.y 3. @@ -11399,7 +11399,7 @@ pub_obj_list: PublicationObjSpec ; opt_pub_except_clause: - EXCEPT TABLE '(' pub_except_obj_list ')' { $$ = $4; } + EXCEPT '(' TABLE pub_except_obj_list ')' { $$ = $4; } | /*EMPTY*/ { $$ = NIL; } ; @@ -11439,8 +11439,8 @@ PublicationExceptObjSpec: pub_except_obj_list: PublicationExceptObjSpec { $$ = list_make1($1); } - | pub_except_obj_list ',' PublicationExceptObjSpec - { $$ = lappend($1, $3); } + | pub_except_obj_list ',' opt_table PublicationExceptObjSpec + { $$ = lappend($1, $4); } ; IMO we should put 'table' in all those table-specific production names: e.g. opt_pub_except_clause ==> opt_pub_except_table_clause e.g. pub_except_obj_list ==> pub_except_tableobj_list e.g. PublicationExceptObjSpec ==> PublicationExceptTableObjSpec IIUC, in future when "FOR ALL SEQUENCES EXCEPT (SEQUENCES ...)" and/or "FOR ALL SCHEMAS EXCEPT (SCHEMA ...)" are implemented then these names won't be much good anymore, so I thought they should be made table-specific now to avoid churning them later. ====== src/bin/psql/tab-complete.in.c 4. - COMPLETE_WITH("EXCEPT TABLE ("); + COMPLETE_WITH("EXCEPT ( TABLE"); (this is in several places in ALTER and CREATE) In v3 the space in "( TABLE" was changed to "(TABLE", but now in v4 the space is back again. AFAICT the v3 change was in response to review [1] (comment #2). Was it reverted deliberately? ====== [1] https://www.postgresql.org/message-id/CAHg%2BQDe%2B7J0e1JLjpqe-NxVJMWXH6UDtqugrm%2BDP7rHEJLrBqQ%40mail.gmail.com Kind Regards, Peter Smith. Fujitsu Australia