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 1p0eU0-0005iq-6w for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Dec 2022 07:59:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p0eTy-0004Uw-Dn for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Dec 2022 07:59:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p0eTy-0004Un-08 for pgsql-hackers@lists.postgresql.org; Thu, 01 Dec 2022 07:59:46 +0000 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p0eTv-0000iw-IK for pgsql-hackers@postgresql.org; Thu, 01 Dec 2022 07:59:44 +0000 Received: by mail-pg1-x52a.google.com with SMTP id r18so966526pgr.12 for ; Wed, 30 Nov 2022 23:59:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=2xu9iFCoDjrKIMy2zcFrztvHhT5ly4l3ATl0i2SS4x4=; b=ZwX7GH1dxGrLmKGL6IPIx+EKRYX1+n9Zun9m8ZsMU7t1741WlkbRxlUIxHk7rx8GVk ys44S77C4MvaoomqX0aURmyCM6BWPgAf+XXWnmY4t7ch5rG7fOuglfOd0MC5NrIzMvcm 2jFHjB7TuN1n8D0rE3wWFDMQoWkatJIqAUI3OF6dh75hHHARVx+Sjxf2s/cCeJCKBdB/ URZlsHeKnVa7bPIkkEKz/I/QGWPJ3MuybR9TjBITUOOy3vvhVxJ4BI3i+ux1Lz0PyodC 8X0Rr0CdISmXA4JGcysO310ZwfTYyUt2T7/QrK9+9Lf1PLe8KPIRWjMvhcNBDlegjv68 iCpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=2xu9iFCoDjrKIMy2zcFrztvHhT5ly4l3ATl0i2SS4x4=; b=yz86LldB3O+0AwCYaidONoGRU3/4h9++0RpynzE5b1ubzY1MsbcJhkxA+nfnLPK3ih jttGtWCvYjZna7sZBVkucYjvkQ7SUTg1kIW8131jRJYp+gF4WigcJsSqLbTw+XWDqNve zVGctTY5hpuN9rvpxrKSJ0dy5rGmItELR2kVFi9hrkVkQFAVpCPX90glzr0IGLNcchf9 NkjnwfXdCvhCfjM313Wzbk/Gcy6PECKXieycWniS/s2kHxH8+b4jghotPqfpNiNANCsU mcscPFDyklqRNHeuFwtHL38JuSvecRpocYPPw2dSw+BN/MwrSD8Jw2W5Lk1Z59KKyUhe KX5Q== X-Gm-Message-State: ANoB5pn8Y2d4PUnr9+MQ83M0OGLlU8c0q7sRmHRWG/VUdVsqHRjxUpBJ 5hsx2x0HOPBnx0ATTpvJSxLq6bi8joVdLgqMHzs= X-Google-Smtp-Source: AA0mqf6q+BT9tAmPUB6RhsF054ifZcwOxGm7WGsDI7gzv23Sq9vu1QpRffmX8v42xQ7w45tf3rY+LGKJ3tNPSX+yPtU= X-Received: by 2002:a63:4043:0:b0:470:2ecd:333e with SMTP id n64-20020a634043000000b004702ecd333emr58817842pga.596.1669881582313; Wed, 30 Nov 2022 23:59:42 -0800 (PST) MIME-Version: 1.0 References: <20221130181201.mfinyvtob3j5i2a6@alvherre.pgsql> In-Reply-To: <20221130181201.mfinyvtob3j5i2a6@alvherre.pgsql> From: Amit Langote Date: Thu, 1 Dec 2022 16:59:25 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Alvaro Herrera Cc: Robert Haas , Jacob Champion , Zhihong Yu , David Rowley , Tom Lane , PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000088655005eebf9a63" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000088655005eebf9a63 Content-Type: text/plain; charset="UTF-8" Hi Alvaro, Thanks for looking at this one. On Thu, Dec 1, 2022 at 3:12 AM Alvaro Herrera wrote: > Looking at 0001, I wonder if we should have a crosscheck that a > PartitionPruneInfo you got from following an index is indeed constructed > for the relation that you think it is: previously, you were always sure > that the prune struct is for this node, because you followed a pointer > that was set up in the node itself. Now you only have an index, and you > have to trust that the index is correct. Yeah, a crosscheck sounds like a good idea. > I'm not sure how to implement this, or even if it's doable at all. > Keeping the OID of the partitioned table in the PartitionPruneInfo > struct is easy, but I don't know how to check it in ExecInitMergeAppend > and ExecInitAppend. Hmm, how about keeping the [Merge]Append's parent relation's RT index in the PartitionPruneInfo and passing it down to ExecInitPartitionPruning() from ExecInit[Merge]Append() for cross-checking? Both Append and MergeAppend already have a 'apprelids' field that we can save a copy of in the PartitionPruneInfo. Tried that in the attached delta patch. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --00000000000088655005eebf9a63 Content-Type: application/octet-stream; name="PartitionPruneInfo-relids.patch" Content-Disposition: attachment; filename="PartitionPruneInfo-relids.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb4scr950 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCAyYmQwNjlkODg5Li45YTYzMWE5 MTkyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xNzkxLDYgKzE3OTEs OSBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRy TWFwICphdHRyTWFwKQogICoJCUluaXRpYWxpemUgZGF0YSBzdHJ1Y3R1cmUgbmVlZGVkIGZvciBy dW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBhbmQKICAqCQlkbyBpbml0aWFsIHBydW5pbmcgaWYg bmVlZGVkCiAgKgorICogJ3Jvb3RfcGFyZW50X3JlbGlkcycgaWRlbnRpZmllcyB0aGUgcmVsYXRp b24gdG8gd2hpY2ggYm90aCB0aGUgcGFyZW50IHBsYW4KKyAqIGFuZCB0aGUgUGFydGl0aW9uUHJ1 bmVJbmZvIGdpdmVuIGJ5ICdwYXJ0X3BydW5lX2luZGV4JyBiZWxvbmcuCisgKgogICogT24gcmV0 dXJuLCAqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zIGlzIGFzc2lnbmVkIHRoZSBzZXQgb2YgaW5k ZXhlcyBvZgogICogY2hpbGQgc3VicGxhbnMgdGhhdCBtdXN0IGJlIGluaXRpYWxpemVkIGFsb25n IHdpdGggdGhlIHBhcmVudCBwbGFuIG5vZGUuCiAgKiBJbml0aWFsIHBydW5pbmcgaXMgcGVyZm9y bWVkIGhlcmUgaWYgbmVlZGVkIGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0aGUKQEAgLTE4MDQsNiAr MTgwNyw3IEBAIFBhcnRpdGlvblBydW5lU3RhdGUgKgogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5n KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAogCQkJ CQkJIGludCBwYXJ0X3BydW5lX2luZGV4LAorCQkJCQkJIEJpdG1hcHNldCAqcm9vdF9wYXJlbnRf cmVsaWRzLAogCQkJCQkJIEJpdG1hcHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykKIHsK IAlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwpAQCAtMTgxMSw2ICsxODE1LDE0IEBA IEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAlQYXJ0aXRp b25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxpc3RfbnRoKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9p bmZvcywKIAkJCQkJCQkJCQkJIHBhcnRfcHJ1bmVfaW5kZXgpOwogCisJLyogU2FuaXR5OiBwYXJ0 X3BydW5lX2luZGV4IGdpdmVzIHRoZSBjb3JyZWN0IFBhcnRpdGlvblBydW5lSW5mby4gKi8KKwlp ZiAoIWJtc19lcXVhbChyb290X3BhcmVudF9yZWxpZHMsIHBydW5laW5mby0+cm9vdF9wYXJlbnRf cmVsaWRzKSkKKwkJZWxvZyhFUlJPUiwgIndyb25nIHJlbGlkcyAoJXMpIGZvdW5kIGluIFBhcnRp dGlvblBydW5lSW5mbyBhdCBwYXJ0X3BydW5lX2luZGV4PSV1IHdoaWNoIGhhcyByb290X3BhcmVu dF9yZWxpZHM9JXMiLAorCQkJIGJtc1RvU3RyaW5nKHJvb3RfcGFyZW50X3JlbGlkcyksCisJCQkg cGFydF9wcnVuZV9pbmRleCwKKwkJCSBibXNUb1N0cmluZyhwcnVuZWluZm8tPnJvb3RfcGFyZW50 X3JlbGlkcykpOworCisKIAkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8g ZXZhbHVhdGUgcGFydGl0aW9uIGV4cHJzICovCiAJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0 ZSwgcGxhbnN0YXRlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFw cGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IGM2Zjg2YTY1 MTAuLjk5ODMwMTk4YmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBl bmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTE0Niw2ICsx NDYsNyBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCQlwcnVuZXN0YXRlID0gRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCZhcHBlbmRz dGF0ZS0+cHMsCiAJCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgobm9kZS0+YXBwZW5kcGxhbnMpLAog CQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgsCisJCQkJCQkJCQkJCSAgbm9kZS0+ YXBwcmVsaWRzLAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKIAkJYXBwZW5kc3RhdGUt PmFzX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJz KHZhbGlkc3VicGxhbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRl eCA4ZDM1ODYwYzMwLi5mMzcwZjlmMjg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYwpAQCAtOTQsNiArOTQsNyBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5k ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJcHJ1bmVzdGF0ZSA9IEV4ZWNJ bml0UGFydGl0aW9uUHJ1bmluZygmbWVyZ2VzdGF0ZS0+cHMsCiAJCQkJCQkJCQkJCSAgbGlzdF9s ZW5ndGgobm9kZS0+bWVyZ2VwbGFucyksCiAJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9p bmRleCwKKwkJCQkJCQkJCQkJICBub2RlLT5hcHByZWxpZHMsCiAJCQkJCQkJCQkJCSAgJnZhbGlk c3VicGxhbnMpOwogCQltZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7CiAJ CW5wbGFucyA9IGJtc19udW1fbWVtYmVycyh2YWxpZHN1YnBsYW5zKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3NldHJlZnMuYwppbmRleCA3MjBmMjBmNTYzLi5lNjdmMGUzNTA5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0zNTQsNiArMzU0LDggQEAgc2V0X3BsYW5fcmVm ZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbikKIAkJUGFydGl0aW9uUHJ1bmVJ bmZvICpwcnVuZWluZm8gPSBsZmlyc3QobGMpOwogCQlMaXN0Q2VsbCAgKmw7CiAKKwkJcHJ1bmVp bmZvLT5yb290X3BhcmVudF9yZWxpZHMgPQorCQkJb2Zmc2V0X3JlbGlkX3NldChwcnVuZWluZm8t PnJvb3RfcGFyZW50X3JlbGlkcywgcnRvZmZzZXQpOwogCQlmb3JlYWNoKGwsIHBydW5laW5mby0+ cHJ1bmVfaW5mb3MpCiAJCXsKIAkJCUxpc3QJICAgKnBydW5lX2luZm9zID0gbGZpcnN0KGwpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jIGIvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCmluZGV4IDY1NjViNmVkMDEuLmQ0OGY2Nzg0 YzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYworKysg Yi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKQEAgLTM0MCw2ICszNDAsNyBA QCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnBhcmVudHJlbCwKIAogCS8qIEVsc2UgYnVpbGQgdGhlIHJlc3VsdCBkYXRhIHN0cnVjdHVyZSAq LwogCXBydW5laW5mbyA9IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lSW5mbyk7CisJcHJ1bmVpbmZv LT5yb290X3BhcmVudF9yZWxpZHMgPSBwYXJlbnRyZWwtPnJlbGlkczsKIAlwcnVuZWluZm8tPnBy dW5lX2luZm9zID0gcHJ1bmVyZWxpbmZvczsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFy dGl0aW9uLmgKaW5kZXggYmY5NjJhZjdhZi4uMTdmYWJjMThjOSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWNQYXJ0aXRpb24uaApAQCAtMTI0LDYgKzEyNCw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRp dGlvblBydW5lU3RhdGUKIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRp dGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJCQkJIGludCBuX3Rv dGFsX3N1YnBsYW5zLAogCQkJCQkJCQkJCQkJCSBpbnQgcGFydF9wcnVuZV9pbmRleCwKKwkJCQkJ CQkJCQkJCQkgQml0bWFwc2V0ICpyb290X3BhcmVudF9yZWxpZHMsCiAJCQkJCQkJCQkJCQkJIEJp dG1hcHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyk7CiBleHRlcm4gQml0bWFwc2V0ICpF eGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwK IAkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRl eCAyZTEzMmFmYzVhLi5iMmQ2ZjhmYjZlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtMTQwNyw2 ICsxNDA3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhblJvd01hcmsKICAqIFRoZW4sIHNpbmNlIGFu IEFwcGVuZC10eXBlIG5vZGUgY291bGQgaGF2ZSBtdWx0aXBsZSBwYXJ0aXRpb25pbmcKICAqIGhp ZXJhcmNoaWVzIGFtb25nIGl0cyBjaGlsZHJlbiwgd2UgaGF2ZSBhbiB1bm9yZGVyZWQgTGlzdCBv ZiB0aG9zZSBMaXN0cy4KICAqCisgKiByb290X3BhcmVudF9yZWxpZHMJUmVsT3B0SW5mby5yZWxp ZHMgb2YgdGhlIHJlbGF0aW9uIHRvIHdoaWNoIHRoZSBwYXJlbnQKKyAqCQkJCQkJcGxhbiBub2Rl IGFuZCB0aGlzIFBhcnRpdGlvblBydW5lSW5mbyBub2RlIGJlbG9uZwogICogcHJ1bmVfaW5mb3MJ CQlMaXN0IG9mIExpc3RzIGNvbnRhaW5pbmcgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gbm9kZXMs CiAgKgkJCQkJCW9uZSBzdWJsaXN0IHBlciBydW4tdGltZS1wcnVuYWJsZSBwYXJ0aXRpb24gaGll cmFyY2h5CiAgKgkJCQkJCWFwcGVhcmluZyBpbiB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIHN1YnBs YW5zLgpAQCAtMTQxOSw2ICsxNDIxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVJ bmZvCiAJcGdfbm9kZV9hdHRyKG5vX2VxdWFsKQogCiAJTm9kZVRhZwkJdHlwZTsKKwlCaXRtYXBz ZXQgICpyb290X3BhcmVudF9yZWxpZHM7CiAJTGlzdAkgICAqcHJ1bmVfaW5mb3M7CiAJQml0bWFw c2V0ICAqb3RoZXJfc3VicGxhbnM7CiB9IFBhcnRpdGlvblBydW5lSW5mbzsK --00000000000088655005eebf9a63--