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 1m2vSG-0000Rt-GN for pgsql-hackers@arkaria.postgresql.org; Mon, 12 Jul 2021 12:54:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1m2vSF-0003fa-GD for pgsql-hackers@arkaria.postgresql.org; Mon, 12 Jul 2021 12:54:35 +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 1m2vSF-0003fS-7K for pgsql-hackers@lists.postgresql.org; Mon, 12 Jul 2021 12:54:35 +0000 Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1m2vSB-0002IF-NX for pgsql-hackers@postgresql.org; Mon, 12 Jul 2021 12:54:34 +0000 Received: by mail-ed1-x530.google.com with SMTP id dj21so7982625edb.0 for ; Mon, 12 Jul 2021 05:54:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language; bh=Bwv/udURXdaMt36PfsUADhH0mXfUM7a26fbwIwis8yo=; b=XabCK1/gcGviO9uXe0RkmNf9Zk8Y60skbLWla4wsbnl5fqiam10izMl8E/bPfTpGdX nNmd72f3DOZnHoJ5SE4RJtTLQPDKDfDi48WswpabBaVck5qhcIASPV7W3n3wiQOn9xkz C77V7l31IppggMsVbEWL1xFN/h+mNAe93XXf3LW2Y+F+oT/DldxiybLb1LqricfEb4Hh NpoZjqV831yOsIz7/AMolmfAYdql10B5D2Ty1xoUktD9en2T6MOQA/jX8fAdwybPA0v0 lQ+CDB+epQZlNkB2S1sIwHJrDKd0/zSXzVZ34pUGr5qkjar/HOqnOaIqh39Z58tOR+Yn NgNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=Bwv/udURXdaMt36PfsUADhH0mXfUM7a26fbwIwis8yo=; b=Vv+7zwVupjKKFLbyZ59rCRBCJBCHk66aeUW+Zf+bJVYTXNu6VPvy39DMZgrGXRnvoh X/cfpMCEWX3H/hPT4dhIww+svoYuowNPPvmAdg4sHpNvSdpGtcaYoWlJMT+O+0vQDWQf zAhpQFNCpkNRMn2Y0vSbTJ+v6zXDStvqYwnAMEVa4J53Iewa38efjed/v64S7MvHzC7r X2nW9SjgQ4HEyS+TLuUCyUl0RZKcvBrtZYHL/lheaQEQgZxnOfw1nRCQR8490GcMZ1Az tzGKLYrL5tnhk9uY6IDsBj0MpeVHhBV1wAu0YZjpSb1mON/98gAxa0EQhKctCtPWL9Rp WyCg== X-Gm-Message-State: AOAM530cx+Hvfm/54qucNUVsbm3L020sPB4De45OHe93sWncis19d9D/ Tse4VMriOVRjpfTHv/HKdzC4r9hdV8NVC2Baex3i3Ke91BbpBZDZ0d/ZDAvXi+FDMfrJvBtQ8qG C4uKPZYdSgtWJ0pziCZRWjePLgQS6HzKAH3eFJdWs/+GeHIT5eAXfu4nUQNxkNNtFbTc8v5xLr1 W+HViusSA13uuiyW2o7++NENFDZGsn0Xo2v92UXQpYHGl0SvmLKRwRAudhB4sUYeTo3m2oJfM0d 1pORI9N9RwO+ZNlKVvyukXIpECQRX1ghxj1qw== X-Google-Smtp-Source: ABdhPJzjV/iQKyELCtuCK0fSzOfm2QmVMQWucfaqVWrYwKKmDL8aolMFt4lKeCZrdcDE+nS/JsQgfw== X-Received: by 2002:a05:6402:10c7:: with SMTP id p7mr47889022edu.159.1626094470221; Mon, 12 Jul 2021 05:54:30 -0700 (PDT) Received: from [10.137.0.19] (ip-86-49-254-183.net.upcbroadband.cz. [86.49.254.183]) by smtp.gmail.com with ESMTPSA id r23sm7901082edv.26.2021.07.12.05.54.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 12 Jul 2021 05:54:29 -0700 (PDT) Subject: Re: Column Filtering in Logical Replication To: Rahila Syed , Alvaro Herrera Cc: PostgreSQL-development References: <202107062342.eq6htmp2wgp2@alvherre.pgsql> From: Tomas Vondra Message-ID: Date: Mon, 12 Jul 2021 14:54:26 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------5C65C717A67C48BD588AE593" Content-Language: en-US X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------5C65C717A67C48BD588AE593 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit On 7/12/21 11:38 AM, Rahila Syed wrote: > Hi Alvaro, > > Thank you for comments. > > The patch adds a function get_att_num_by_name; but we have a lsyscache.c > function for that purpose, get_attnum.  Maybe that one should be used > instead? > > Thank you for pointing that out, I agree it makes sense to reuse the > existing function. > Changed it accordingly in the attached patch. >   > > get_tuple_columns_map() returns a bitmapset of the attnos of the columns > in the given list, so its name feels wrong.  I propose > get_table_columnset().  However, this function is invoked for every > insert/update change, so it's going to be far too slow to be usable.  I > think you need to cache the bitmapset somewhere, so that the function is > only called on first use.  I didn't look very closely, but it seems that > struct RelationSyncEntry may be a good place to cache it. > > Makes sense, changed accordingly. >   To nitpick, I find "Bitmapset *att_list" a bit annoying, because it's not really a list ;-) FWIW "make check" fails for me with this version, due to segfault in OpenTableLists. Apparenly there's some confusion - the code expects the list to contain PublicationTable nodes, and tries to extract the RangeVar from the elements. But the list actually contains RangeVar, so this crashes and burns. See the attached backtrace. I'd bet this is because the patch uses list of RangeVar in some cases and list of PublicationTable in some cases, similarly to the "row filtering" patch nearby. IMHO this is just confusing and we should always pass list of PublicationTable nodes. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------5C65C717A67C48BD588AE593 Content-Type: text/plain; charset=UTF-8; name="crash.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="crash.txt" Q29yZSB3YXMgZ2VuZXJhdGVkIGJ5IGBwb3N0Z3JlczogdXNlciByZWdyZXNzaW9uIFtsb2Nh bF0gQUxURVIgUFVCTElDQVRJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAnLgpQcm9n cmFtIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgU0lHU0VHViwgU2VnbWVudGF0aW9uIGZhdWx0 LgojMCAgMHgwMDAwMDAwMDAwNmJlNWI1IGluIE9wZW5UYWJsZUxpc3QgKHRhYmxlcz0weDI3 YjM1YTApIGF0IHB1YmxpY2F0aW9uY21kcy5jOjUyMAo1MjAJCQlib29sCQlyZWN1cnNlID0g cnYtPmluaDsKTWlzc2luZyBzZXBhcmF0ZSBkZWJ1Z2luZm9zLCB1c2U6IGRuZiBkZWJ1Z2lu Zm8taW5zdGFsbCBnbGliYy0yLjMyLTYuZmMzMy54ODZfNjQKKGdkYikgYnQKIzAgIDB4MDAw MDAwMDAwMDZiZTViNSBpbiBPcGVuVGFibGVMaXN0ICh0YWJsZXM9MHgyN2IzNWEwKSBhdCBw dWJsaWNhdGlvbmNtZHMuYzo1MjAKIzEgIDB4MDAwMDAwMDAwMDZiZTEzNyBpbiBBbHRlclB1 YmxpY2F0aW9uVGFibGVzIChzdG10PTB4MjdiMzVmOCwgcmVsPTB4NzNlMjY0ODVlYzgwLCB0 dXA9MHgyODc3Yzk4KSBhdCBwdWJsaWNhdGlvbmNtZHMuYzozNzUKIzIgIDB4MDAwMDAwMDAw MDZiZTQ1OCBpbiBBbHRlclB1YmxpY2F0aW9uIChzdG10PTB4MjdiMzVmOCkgYXQgcHVibGlj YXRpb25jbWRzLmM6NDY0CiMzICAweDAwMDAwMDAwMDA5NzYyYjQgaW4gUHJvY2Vzc1V0aWxp dHlTbG93IChwc3RhdGU9MHgyODc3YjgwLCBwc3RtdD0weDI3YjM5NjgsIHF1ZXJ5U3RyaW5n PTB4MjdiMmFlMCAiQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IFNFVCBUQUJM RSB0ZXN0cHViX3RibDE7IiwgY29udGV4dD1QUk9DRVNTX1VUSUxJVFlfVE9QTEVWRUwsIHBh cmFtcz0weDAsIHF1ZXJ5RW52PTB4MCwgZGVzdD0weDI3YjNhNTgsIHFjPTB4N2ZmZWMyMTFi ZTcwKSBhdCB1dGlsaXR5LmM6MTgwOQojNCAgMHgwMDAwMDAwMDAwOTc0OTY4IGluIHN0YW5k YXJkX1Byb2Nlc3NVdGlsaXR5IChwc3RtdD0weDI3YjM5NjgsIHF1ZXJ5U3RyaW5nPTB4Mjdi MmFlMCAiQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IFNFVCBUQUJMRSB0ZXN0 cHViX3RibDE7IiwgcmVhZE9ubHlUcmVlPWZhbHNlLCBjb250ZXh0PVBST0NFU1NfVVRJTElU WV9UT1BMRVZFTCwgcGFyYW1zPTB4MCwgcXVlcnlFbnY9MHgwLCBkZXN0PTB4MjdiM2E1OCwg cWM9MHg3ZmZlYzIxMWJlNzApIGF0IHV0aWxpdHkuYzoxMDQ5CiM1ICAweDAwMDAwMDAwMDA5 NzNiYjggaW4gUHJvY2Vzc1V0aWxpdHkgKHBzdG10PTB4MjdiMzk2OCwgcXVlcnlTdHJpbmc9 MHgyN2IyYWUwICJBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2RlZmF1bHQgU0VUIFRBQkxF IHRlc3RwdWJfdGJsMTsiLCByZWFkT25seVRyZWU9ZmFsc2UsIGNvbnRleHQ9UFJPQ0VTU19V VElMSVRZX1RPUExFVkVMLCBwYXJhbXM9MHgwLCBxdWVyeUVudj0weDAsIGRlc3Q9MHgyN2Iz YTU4LCBxYz0weDdmZmVjMjExYmU3MCkgYXQgdXRpbGl0eS5jOjUyNwojNiAgMHgwMDAwMDAw MDAwOTcyODkwIGluIFBvcnRhbFJ1blV0aWxpdHkgKHBvcnRhbD0weDI4MTZmZjAsIHBzdG10 PTB4MjdiMzk2OCwgaXNUb3BMZXZlbD10cnVlLCBzZXRIb2xkU25hcHNob3Q9ZmFsc2UsIGRl c3Q9MHgyN2IzYTU4LCBxYz0weDdmZmVjMjExYmU3MCkgYXQgcHF1ZXJ5LmM6MTE0NwojNyAg MHgwMDAwMDAwMDAwOTcyYWY0IGluIFBvcnRhbFJ1bk11bHRpIChwb3J0YWw9MHgyODE2ZmYw LCBpc1RvcExldmVsPXRydWUsIHNldEhvbGRTbmFwc2hvdD1mYWxzZSwgZGVzdD0weDI3YjNh NTgsIGFsdGRlc3Q9MHgyN2IzYTU4LCBxYz0weDdmZmVjMjExYmU3MCkgYXQgcHF1ZXJ5LmM6 MTMwNAojOCAgMHgwMDAwMDAwMDAwOTcyMDJkIGluIFBvcnRhbFJ1biAocG9ydGFsPTB4Mjgx NmZmMCwgY291bnQ9OTIyMzM3MjAzNjg1NDc3NTgwNywgaXNUb3BMZXZlbD10cnVlLCBydW5f b25jZT10cnVlLCBkZXN0PTB4MjdiM2E1OCwgYWx0ZGVzdD0weDI3YjNhNTgsIHFjPTB4N2Zm ZWMyMTFiZTcwKSBhdCBwcXVlcnkuYzo3ODYKIzkgIDB4MDAwMDAwMDAwMDk2YmM0ZiBpbiBl eGVjX3NpbXBsZV9xdWVyeSAocXVlcnlfc3RyaW5nPTB4MjdiMmFlMCAiQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9kZWZhdWx0IFNFVCBUQUJMRSB0ZXN0cHViX3RibDE7IikgYXQgcG9z dGdyZXMuYzoxMjE0CiMxMCAweDAwMDAwMDAwMDA5NzAxNWEgaW4gUG9zdGdyZXNNYWluIChh cmdjPTEsIGFyZ3Y9MHg3ZmZlYzIxMWMxMDAsIGRibmFtZT0weDI3ZGVlZDggInJlZ3Jlc3Np b24iLCB1c2VybmFtZT0weDI3ZGVlYjggInVzZXIiKSBhdCBwb3N0Z3Jlcy5jOjQ0ODYKIzEx IDB4MDAwMDAwMDAwMDhhZDA4ZCBpbiBCYWNrZW5kUnVuIChwb3J0PTB4MjdkN2ZjMCkgYXQg cG9zdG1hc3Rlci5jOjQ1MDcKIzEyIDB4MDAwMDAwMDAwMDhhY2EwYyBpbiBCYWNrZW5kU3Rh cnR1cCAocG9ydD0weDI3ZDdmYzApIGF0IHBvc3RtYXN0ZXIuYzo0MjI5CiMxMyAweDAwMDAw MDAwMDA4YThmYzAgaW4gU2VydmVyTG9vcCAoKSBhdCBwb3N0bWFzdGVyLmM6MTc0NQojMTQg MHgwMDAwMDAwMDAwOGE4ODhiIGluIFBvc3RtYXN0ZXJNYWluIChhcmdjPTgsIGFyZ3Y9MHgy N2FjNTkwKSBhdCBwb3N0bWFzdGVyLmM6MTQxNwojMTUgMHgwMDAwMDAwMDAwN2FiMmIwIGlu IG1haW4gKGFyZ2M9OCwgYXJndj0weDI3YWM1OTApIGF0IG1haW4uYzoyMDkK --------------5C65C717A67C48BD588AE593--