Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nh91w-00063a-CP for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Apr 2022 12:01:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nh91v-0006uO-4f for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Apr 2022 12:01:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nh91u-0006uF-Rc for pgsql-hackers@lists.postgresql.org; Wed, 20 Apr 2022 12:01:54 +0000 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nh91r-000166-TE for pgsql-hackers@postgresql.org; Wed, 20 Apr 2022 12:01:54 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id E8B0D32021A7; Wed, 20 Apr 2022 08:01:46 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Wed, 20 Apr 2022 08:01:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:from:from:in-reply-to:in-reply-to :message-id:mime-version:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; t=1650456106; x=1650542506; bh=sv717JhxMZbmR5u0M3EBERfYnGah HbL6U5Ew3YQzxzM=; b=Nozf+6ryllz9qq1jtug+hkqgkss4XRGnkpJQzg+aJZ/k DHhf2QvPvH13hjHsa2A85AQlrkIaH8Z4Ij9JyL4ZU/SjX2LmsZ/d8++mrt1W6t1w O4ptdPoPyg3GKbk6r2u2dG0rv0OFyDwsub8SLgYDMHyirfZgyXKekWBlkJXxjKON UKIq1332OgiNroGBWeyUGlb47iB6fKPA/yz2sn92evxUgP7it4J/Ta+8NyTjTO1Y hKhDswDcNi+i+Znpu9H+OIT2T3bp2+6ymyCsD0uLwN3gea/nJObHlGkw/FqWSnLJ RY63oMW1uk7lLm5fe3EysnotoTvV6nSaaDC9H9MJhA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrtddtgddvudcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpeffhffvvefukfggtggugfgjsehmkeerredttdejnecuhfhrohhmpeetlhhvrghr ohcujfgvrhhrvghrrgcuoegrlhhvhhgvrhhrvgesrghlvhhhrdhnohdqihhprdhorhhgqe enucggtffrrghtthgvrhhnpeduleekkefgtddttedtkefguddvieffleetgeejiefhteeh keevfeettdduvdfhueenucffohhmrghinhepvghnthgvrhhprhhishgvuggsrdgtohhmne cuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomheprghlvhhh vghrrhgvsegrlhhvhhdrnhhoqdhiphdrohhrgh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 20 Apr 2022 08:01:44 -0400 (EDT) Received: by perhan.alvh.no-ip.org (Postfix, from userid 1000) id 6F3F02A379F; Wed, 20 Apr 2022 14:01:37 +0200 (CEST) Date: Wed, 20 Apr 2022 14:01:37 +0200 From: Alvaro Herrera To: Amit Kapila Cc: Justin Pryzby , David Rowley , pgsql-hackers , Fabien COELHO Subject: Re: typos Message-ID: <202204201201.ecwdyys7lg3l@alvherre.pgsql> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="uazwmjfrgengbdil" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --uazwmjfrgengbdil Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit On 2022-Apr-20, Amit Kapila wrote: > Your proposed changes look good to me but I think all these places > need to mention 'column list' as well because the behavior is the same > for it. Hmm, you're right. Added that, and changed the wording somewhat because some things read awkwardly. Here's the result in patch form. Column lists seems not mentioned in logical-replication.sgml, either. -- Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/ "La verdad no siempre es bonita, pero el hambre de ella sí" --uazwmjfrgengbdil Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename="rowfilter-doc.patch" diff --git a/doc/src/sgml/ref/create_publication.sgml b/doc/src/sgml/ref/create_publication.sgml index 23d883c158..c58478e8f8 100644 --- a/doc/src/sgml/ref/create_publication.sgml +++ b/doc/src/sgml/ref/create_publication.sgml @@ -79,7 +79,8 @@ CREATE PUBLICATION name - If the optional WHERE clause is specified, rows for + If the optional WHERE clause is specified, it defines a + row filter expression. Rows for which the expression evaluates to false or null will not be published. Note that parentheses are required around the expression. It has no effect on @@ -192,6 +193,11 @@ CREATE PUBLICATION name consisting of a different set of partitions. + + This parameter also affects how row filters and column lists are + chosen for partitions; see below for details. + + If this is enabled, TRUNCATE operations performed directly on partitions are not replicated. @@ -241,21 +247,28 @@ CREATE PUBLICATION name - A WHERE (i.e. row filter) expression must contain only + A row filter expression (i.e., the WHERE clause) must contain only columns that are covered by the REPLICA IDENTITY, in order for UPDATE and DELETE operations to be published. For publication of INSERT operations, any column may be used in the WHERE expression. The - WHERE clause allows simple expressions that don't have + row filter allows simple expressions that don't have user-defined functions, user-defined operators, user-defined types, user-defined collations, non-immutable built-in functions, or references to system columns. - If your publication contains a partitioned table, the publication parameter - publish_via_partition_root determines if it uses the - partition's row filter (if the parameter is false, the default) or the root - partitioned table's row filter. + + + + For published partitioned tables, the row filter for each + partition is taken from the published partitioned table if the + publication parameter publish_via_partition_root is true, + or from the partition itself if it is false (the default). See for details about row filters. + Similarly, for published partitioned tables, the column list for each + partition is taken from the published partitioned table if the + publication parameter publish_via_partition_root is true, + or from the partition itself if it is false. --uazwmjfrgengbdil--