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 1w5w81-003mOM-1S for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Mar 2026 01:36:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w5w7y-006xmn-2R for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Mar 2026 01:36:47 +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 1w5w7y-006xmf-16 for pgsql-hackers@lists.postgresql.org; Fri, 27 Mar 2026 01:36:46 +0000 Received: from mail-qv1-xf30.google.com ([2607:f8b0:4864:20::f30]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w5w7w-00000001EjO-2x5Z for pgsql-hackers@lists.postgresql.org; Fri, 27 Mar 2026 01:36:45 +0000 Received: by mail-qv1-xf30.google.com with SMTP id 6a1803df08f44-899ed41208fso19812316d6.1 for ; Thu, 26 Mar 2026 18:36:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774575404; cv=none; d=google.com; s=arc-20240605; b=L37qD0NtLWbIhjKqI9AcubxmWGSJspB/hzZvc6wYElhsbrrAb0tHIETgrJzZgvuRWf Py0IdCd3LbljKKTdzQQyWeGYR8+XqnAm0/lQ1ynQyvuPvv0ZUVYbZDs3xPDgpEHmG+A4 +vqpvdWxQ019svFrahJZypL57XiY/jjqfrN28VS1vSbExdfSB0+kJlaxymQx/Qk9zj4V hB5/06BJocSLIAXX5eMu5ibBXxLi9+hbizcwDrh1FwSvvr3SnBqp5b4xMvYn0aiDd+Xq 1NpA4pk4c8kQSkVtjCr7Adxww2V+fVnufbh5hI+C/pOYQjznSvu2uFApUiqK5F4J0fGT XISw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=+yGCONwvl0gGfEPxvbzr6ffG5eIhIt1DP8bmjYj9XkA=; fh=bLF4ZGHg8qfDhLwdt1ANGYD8lQmOUAtjYFguQ3J/fc8=; b=GrMZRojYMhzXiZEOZQlt2pIaNDoGQWw8MXp8zDlH0u0eCDfn7R6a9xqrafR6VnQDC0 3WCzf9arJM1p8MbP6JX1a8I86w28veCzHbWmgEv1S864vI+AVyR/QL94b4lQeBuWpALs lOo8nlSh0Ms1peE8d/PbAz+YWUtcnBk8XuKeM68clx59Bal3hbBo/+9uoC5EjgzvG0oR g9DPOVsZNTcsKqbv0jtKsyretAWFHDzjs+l4bsgcAVwuZdVF//o1ziQz6gPpgsf3yWBD 0CJjzXlfjwHH5rKLLIALsNJB7qWkWlWJC0AXMvgDm+39viQdm3wMxvAwOCZpK6V6m8el sY5Q==; 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=1774575404; x=1775180204; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=+yGCONwvl0gGfEPxvbzr6ffG5eIhIt1DP8bmjYj9XkA=; b=D3OhFbZT4RKojGOUk4FMAbXxCC/s/Ag++ffGi65BWSkqg6mxrk7ZSyl2iG1Qod2Nui AEBJfodpOg5Vx8Ek58CYBLgDSbt8qS092+8DJvt3qR+Q7yL+6PTm7KLeQf2venYXBeEf aEfa6ae3iAZ4ZTKpTKeVPkJwlnlYZe9KNNBw7ddGD9wKIhBpdkdVbx8CAQWNuUWUfEmA KEFIPdqQyI5ubT2lv4u76jNudpar7HewBy6MtaccKJwh0xHCGVltJhNiY59xPCHt3pmz y51Eu9KU5nnwvfyoHaAhTVcnT1fNdPtgH+ojdzwGgTp0Ap0uejDe/6h/JSHTEo1KYLMP pIYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774575404; x=1775180204; h=content-transfer-encoding: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=+yGCONwvl0gGfEPxvbzr6ffG5eIhIt1DP8bmjYj9XkA=; b=Le1VAmjOcOmWzVOMYY4cBq/LyilcW08qe/l+km+GcFxyu5ja0mXaMW1sBDK3X2NP2J wFt6Nx+uz16uceaYSX1Y31e7JuwuzlQU+H9wNtuV9cO3Tfo26M/rGHxlc+HeYmGd9pbA myAynftrklPeLpYvDx1D8/QfkkWG7ls/o99CWX1XVVG2f/Rt12sbQMF2FJ1lUjMiN6Ft qeBSl8OoabhJXT2Ha9GtyNZrN1CjDTLXbaqb0i72bJDbBUWKICqTKmUTD8eGa6QjT2zk TASOLd2I8KICN81T9fpt/BrTNECJJLisU+DzsdAIjxZXV/LYSBt08JAQ67YX5Ys84xgE wNsw== X-Forwarded-Encrypted: i=1; AJvYcCUI5yMuJeRMdB71rnaVnwRQ1na21nLxhEOQphtTQTJbEtCqFKvi1WoCOUBjeiEWsQovmqKtiY5bl5mNM8zj@lists.postgresql.org X-Gm-Message-State: AOJu0Yyw9N1cwsGE9lbIphCHh3o9AV6E2blUG+MwUPSFPET9qGZyKGOH Me1E+yc9tST8obuztIXpMPim1UhV2ubg3VaZP4FPwkNwbujVl/uzVpZlm9grcC0CvEdqKe74two zsZlW5T82LO9jFur4Mlp68hYNMJDWfh0= X-Gm-Gg: ATEYQzyhZ9MERBx2vnhvAUN/7c2FEOlAF7+BgaKbZiEBTwI/f+HBiN49vZ0GzCN6925 zomvDs2DbpHsvmnU0IHhGIYuXDDmshHjhcsS9y3FtgYPLU7oyUayF5O/vS3a8QdS6PIrnJyzjEL xP/tM8YDwpKFpT2D30B4khIvBtmZs/kIepvZhjE8n5O78JafXuSeU/C7y3Kk/Gd6OAySxl3eSmq ZaXd9xrl32sRcIUxmb7JXaSPh1/vRkDsj7uQjXs4at+QClK0lILxSAMtMnbS0/hljo7d1VfvDJT kiii6KM+8iwsS66UEMI3BOMPeVV1IN1RbAotKRTdNg== X-Received: by 2002:ad4:5ba5:0:b0:899:fd80:f79f with SMTP id 6a1803df08f44-89ce8d16612mr8419626d6.23.1774575402106; Thu, 26 Mar 2026 18:36:42 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Peter Smith Date: Fri, 27 Mar 2026 12:36:14 +1100 X-Gm-Features: AQROBzB6WefdmkyAeXHqtT4r9CWXkw-tGGMz4GxQCT9CrKAm-Iaz2dMoyY5kfk8 Message-ID: Subject: Re: Skipping schema changes in publication To: vignesh C Cc: Amit Kapila , Dilip Kumar , shveta malik , Masahiko Sawada , "Hayato Kuroda (Fujitsu)" , Shlok Kyal , 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" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Fri, Mar 27, 2026 at 2:24=E2=80=AFAM vignesh C wro= te: > ... > > By now multiple people (Dilip Kumar, Peter Smith, Sawada Masahiko) > > have preferred the alternate syntax, to move TABLE inside () to make > > specifying inclusion and exclusion list in a similar way. Unless we > > have more feedback, I think we can change it now. > > Attached patch has the changes for the same. > Hi Vignesh. Here are some review comments for the new syntax patch 0001. =3D=3D=3D=3D=3D=3D doc/src/sgml/ref/create_publication.sgml 1. - ALL TABLES [ EXCEPT TABLE ( except_table_object [, ... ] ) ] + ALL TABLES [ EXCEPT ( TABLE except_table_object [, ... ] ) ] I don't think this is correct. To have the same flexibility as the TABLE inclusion lists, the TABLE keyword needs to be inside the , and there need to be more ellipses there too. e.g. Like this: and publication_all_object is one of: ALL TABLES [ EXCEPT ( except_table_object [, ... ] ) ] ALL SEQUENCES and except_table_object is: TABLE { [ ONLY ] table_name [ * ] } [, ...] ~~~ 2. The CREATE PUBLICATION page still refers to "EXCEPT TABLE" in multiple plac= es. Perhaps now it should be called "EXCEPT (TABLE) clause" or just "EXCEPT clause" or something else. =3D=3D=3D=3D=3D=3D doc/src/sgml/ref/alter_publication.sgml 3. - ALL TABLES [ EXCEPT TABLE ( except_table_object [, ... ] ) ] + ALL TABLES [ EXCEPT ( TABLE except_table_object [, ... ] ) ] This ALTER PUBLICATION synopsis should have the same/similar changes as in the above review comment above for the CREATE PUBLICATION synopsis. e.g. and publication_all_object is one of: ALL TABLES [ EXCEPT ( except_table_object [, ... ] ) ] ALL SEQUENCES and except_table_object is: TABLE { [ ONLY ] table_name [ * ] } [, ...] ~~~ 4. Also, similar to the earlier review comment, this ALTER PUBLICATION page still refers to "EXCEPT TABLE" in multiple places. Perhaps now it should be called "EXCEPT (TABLE) clause" or just "EXCEPT cla= use". =3D=3D=3D=3D=3D=3D src/backend/parser/gram.y 5. - EXCEPT TABLE '(' pub_except_obj_list ')' { $$ =3D $4; } + EXCEPT '(' TABLE pub_except_obj_list ')' { $$ =3D $4; } Same review comment as my above synopsis comments. This patch implementation only supports EXCEPT (TABLE t1,t2,t3); Specifically, it doesn't have the same flexibility you get from a table inclusion list. e.g. IMO cmd should also work for: EXCEPT (TABLE t1, TABLE t2,t3); etc. =3D=3D=3D=3D=3D=3D src/bin/pg_dump/pg_dump.c 6. Code comment still refers to "EXCEPT TABLE clause", but it doesn't look like that anymore. =3D=3D=3D=3D=3D=3D src/test/regress/sql/publication.sql 7. Comments still refer to "EXCEPT TABLE" and "EXCEPT TABLE clause", but it doesn't look like that anymore. ~~~ 8. There needs to be additional tests to confirm that the syntax has the same flexibility as TABLE inclusion lists do e.g. all these variations below are valid and equivalent: ... EXCEPT (TABLE t1, t2, t3, t4); ... EXCEPT (TABLE t1, t2, TABLE t3, t4); ... EXCEPT (TABLE t1, t2, TABLE t3, t4); ... EXCEPT (TABLE t1, TABLE t2, TABLE t3, TABLE t4); =3D=3D=3D=3D=3D=3D src/test/subscription/t/037_except.pl 9. Comments still refer to "EXCEPT TABLE", but it doesn't look like that anymo= re. =3D=3D=3D=3D=3D=3D (more files) 10. There are still more source files (not currently part of this patch) that are still calling this the "EXCEPT TABLE" clause, even though the syntax is different now. e.g. "src/backend/commands/publicationcmds.c" and others. Need to search the master source to find every affected comment. =3D=3D=3D=3D=3D=3D Kind Regards, Peter Smith. Fujitsu Australia