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.94.2) (envelope-from ) id 1uhowW-004TFw-MA for pgsql-hackers@arkaria.postgresql.org; Fri, 01 Aug 2025 12:33:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uhowT-007hOa-Qg for pgsql-hackers@arkaria.postgresql.org; Fri, 01 Aug 2025 12:32:57 +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.94.2) (envelope-from ) id 1uhowT-007hNc-Fi for pgsql-hackers@lists.postgresql.org; Fri, 01 Aug 2025 12:32:57 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uhowQ-000CX5-2i for pgsql-hackers@lists.postgresql.org; Fri, 01 Aug 2025 12:32:56 +0000 Received: from [192.168.15.242] (unknown [80.251.191.198]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: a.lepikhov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 11F7C60B33; Fri, 1 Aug 2025 15:32:52 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------okl2m2jWC0zUqr2i0hJgbhaT" Message-ID: <18c6bd6c-6d2a-419a-b0da-dfedef34b585@gmail.com> Date: Fri, 1 Aug 2025 14:32:51 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: Andrei Lepikhov Subject: Correction of RowMark Removal During Sel-Join Elimination To: PostgreSQL Hackers , Alexander Korotkov X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/08/01 08:41:00 #27632508 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 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. --------------okl2m2jWC0zUqr2i0hJgbhaT Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, I've noticed that the code for sel-join elimination incorrectly removes RowMarks. Currently, this doesn't lead to any issues because the optimiser retains pointers to the simple_rte_array. A RowMark refers to an RTE entry that is the same for both the relations being kept and those being removed. I believe it would be beneficial to address this issue now to prevent potential problems in the future. See the patch attached. -- regards, Andrei Lepikhov --------------okl2m2jWC0zUqr2i0hJgbhaT Content-Type: text/plain; charset=UTF-8; name="v0-0001-Force-RowMark-Sanity-Checking.patch" Content-Disposition: attachment; filename="v0-0001-Force-RowMark-Sanity-Checking.patch" Content-Transfer-Encoding: base64 RnJvbSA1YmY4NjBiZjcwM2FkZDg3NjAxMjg2NDIzZTg4OWZiYWI3MWNiYzgxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmVpIFYuIExlcGlraG92IiA8bGVwaWhvdkBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjMgSnVsIDIwMjUgMTM6NDY6MDIgKzAyMDAKU3ViamVj dDogW1BBVENIIHYwXSBGb3JjZSBSb3dNYXJrIFNhbml0eSBDaGVja2luZwoKVGhlIFNKRSBm ZWF0dXJlIGVsaW1pbmF0ZXMgaW5jb3JyZWN0IFJvd01hcmtzIHdpdGhvdXQgaW50cm9kdWNp bmcgYW55IHBvdGVudGlhbAplcnJvcnMuIFRoaXMgaXMgZHVlIHRvIGEgc3RyYWlnaHRmb3J3 YXJkIHJlYXNvbjogdGhlIHBsYW5uZWQgUm93TWFyayBpcyB1c2VkIHRvCnJlZmVyZW5jZSBh IHJ0YWJsZSBlbnRyeSBpbiBsYXRlciBleGVjdXRpb24gc3RhZ2VzLiBBbiBSVEUgZW50cnkg Zm9yIGtlZXBpbmcKYW5kIHJlbW92aW5nIHJlbGF0aW9ucyBpcyBpZGVudGljYWwgYW5kIHJl ZmVycyB0byB0aGUgc2FtZSByZWxhdGlvbiBPSUQuCgpUbyByZWR1Y2UgY29uZnVzaW9uIGFu ZCBwcmV2ZW50IGZ1dHVyZSBpc3N1ZXMsIHRoaXMgY29tbWl0IGNsZWFucyB1cCB0aGUgY29k ZQphbmQgZml4ZXMgdGhlIGluY29ycmVjdCBiZWhhdmlvdXIuIEFkZGl0aW9uYWxseSwgaXQg cmVuYW1lcyB2YXJpYWJsZXMgdG8gbWFrZQpzaW1pbGFyIGVycm9ycyBtb3JlIGFwcGFyZW50 IGluIHRoZSBmdXR1cmUuIEZ1cnRoZXJtb3JlLCBpdCBpbmNsdWRlcyBzYW5pdHkKY2hlY2tz IGluIHNldHJlZnMuYyBvbiBleGlzdGluZyBub24tbnVsbCBSVEUgYW5kIFJlbE9wdEluZm8g ZW50cmllcwpmb3IgZWFjaCBSb3dNYXJrLgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2FuYWx5emVqb2lucy5jIHwgNDMgKysrKysrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgICAgIHwgIDQgKysrCiAyIGZpbGVz IGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMKaW5kZXggNGQ1NWMyZWE1OTEu LmJiNTEyMDJmZTUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9h bmFseXplam9pbnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXpl am9pbnMuYwpAQCAtNjMxLDYgKzYzMSw3IEBAIHJlbW92ZV9sZWZ0am9pbnJlbF9mcm9tX3F1 ZXJ5KFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQsCiAJICogcmVtb3ZlX2pvaW5fY2xh dXNlX2Zyb21fcmVscyB3aWxsIHRvdWNoIGl0LikKIAkgKi8KIAlyb290LT5zaW1wbGVfcmVs X2FycmF5W3JlbGlkXSA9IE5VTEw7CisJcm9vdC0+c2ltcGxlX3J0ZV9hcnJheVtyZWxpZF0g PSBOVUxMOwogCiAJLyogQW5kIG51a2UgdGhlIFJlbE9wdEluZm8sIGp1c3QgaW4gY2FzZSB0 aGVyZSdzIGFub3RoZXIgYWNjZXNzIHBhdGggKi8KIAlwZnJlZShyZWwpOwpAQCAtMTk3OSwx MCArMTk4MCwxMiBAQCByZW1vdmVfc2VsZl9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwg UGxhblJvd01hcmsgKmttYXJrLCBQbGFuUm93TWFyayAqcm1hcmssCiAJICogcmVtb3ZlX2pv aW5fY2xhdXNlX2Zyb21fcmVscyB3aWxsIHRvdWNoIGl0LikKIAkgKi8KIAlyb290LT5zaW1w bGVfcmVsX2FycmF5W3RvUmVtb3ZlLT5yZWxpZF0gPSBOVUxMOworCXJvb3QtPnNpbXBsZV9y dGVfYXJyYXlbdG9SZW1vdmUtPnJlbGlkXSA9IE5VTEw7CiAKIAkvKiBBbmQgbnVrZSB0aGUg UmVsT3B0SW5mbywganVzdCBpbiBjYXNlIHRoZXJlJ3MgYW5vdGhlciBhY2Nlc3MgcGF0aC4g Ki8KIAlwZnJlZSh0b1JlbW92ZSk7CiAKKwogCS8qCiAJICogTm93IHJlcGVhdCBjb25zdHJ1 Y3Rpb24gb2YgYXR0cl9uZWVkZWQgYml0cyBjb21pbmcgZnJvbSBhbGwgb3RoZXIKIAkgKiBz b3VyY2VzLgpAQCAtMjE0MiwyMSArMjE0NSwyMSBAQCByZW1vdmVfc2VsZl9qb2luc19vbmVf Z3JvdXAoUGxhbm5lckluZm8gKnJvb3QsIFJlbGlkcyByZWxpZHMpCiAKIAl3aGlsZSAoKHIg PSBibXNfbmV4dF9tZW1iZXIocmVsaWRzLCByKSkgPiAwKQogCXsKLQkJUmVsT3B0SW5mbyAq aW5uZXIgPSByb290LT5zaW1wbGVfcmVsX2FycmF5W3JdOworCQlSZWxPcHRJbmZvICpycmVs ID0gcm9vdC0+c2ltcGxlX3JlbF9hcnJheVtyXTsKIAogCQlrID0gcjsKIAogCQl3aGlsZSAo KGsgPSBibXNfbmV4dF9tZW1iZXIocmVsaWRzLCBrKSkgPiAwKQogCQl7CiAJCQlSZWxpZHMJ CWpvaW5yZWxpZHMgPSBOVUxMOwotCQkJUmVsT3B0SW5mbyAqb3V0ZXIgPSByb290LT5zaW1w bGVfcmVsX2FycmF5W2tdOworCQkJUmVsT3B0SW5mbyAqa3JlbCA9IHJvb3QtPnNpbXBsZV9y ZWxfYXJyYXlba107CiAJCQlMaXN0CSAgICpyZXN0cmljdGxpc3Q7CiAJCQlMaXN0CSAgICpz ZWxmam9pbnF1YWxzOwogCQkJTGlzdAkgICAqb3RoZXJqb2lucXVhbHM7CiAJCQlMaXN0Q2Vs bCAgICpsYzsKIAkJCWJvb2wJCWppbmZvX2NoZWNrID0gdHJ1ZTsKLQkJCVBsYW5Sb3dNYXJr ICpvbWFyayA9IE5VTEw7Ci0JCQlQbGFuUm93TWFyayAqaW1hcmsgPSBOVUxMOworCQkJUGxh blJvd01hcmsgKmttYXJrID0gTlVMTDsKKwkJCVBsYW5Sb3dNYXJrICpybWFyayA9IE5VTEw7 CiAJCQlMaXN0CSAgICp1Y2xhdXNlcyA9IE5JTDsKIAogCQkJLyogQSBzYW5pdHkgY2hlY2s6 IHRoZSByZWxhdGlvbnMgaGF2ZSB0aGUgc2FtZSBPaWQuICovCkBAIC0yMTk0LDIxICsyMTk3 LDIxIEBAIHJlbW92ZV9zZWxmX2pvaW5zX29uZV9ncm91cChQbGFubmVySW5mbyAqcm9vdCwg UmVsaWRzIHJlbGlkcykKIAkJCXsKIAkJCQlQbGFuUm93TWFyayAqcm93TWFyayA9IChQbGFu Um93TWFyayAqKSBsZmlyc3QobGMpOwogCi0JCQkJaWYgKHJvd01hcmstPnJ0aSA9PSBrKQor CQkJCWlmIChyb3dNYXJrLT5ydGkgPT0gcikKIAkJCQl7Ci0JCQkJCUFzc2VydChpbWFyayA9 PSBOVUxMKTsKLQkJCQkJaW1hcmsgPSByb3dNYXJrOworCQkJCQlBc3NlcnQocm1hcmsgPT0g TlVMTCk7CisJCQkJCXJtYXJrID0gcm93TWFyazsKIAkJCQl9Ci0JCQkJZWxzZSBpZiAocm93 TWFyay0+cnRpID09IHIpCisJCQkJZWxzZSBpZiAocm93TWFyay0+cnRpID09IGspCiAJCQkJ ewotCQkJCQlBc3NlcnQob21hcmsgPT0gTlVMTCk7Ci0JCQkJCW9tYXJrID0gcm93TWFyazsK KwkJCQkJQXNzZXJ0KGttYXJrID09IE5VTEwpOworCQkJCQlrbWFyayA9IHJvd01hcms7CiAJ CQkJfQogCi0JCQkJaWYgKG9tYXJrICYmIGltYXJrKQorCQkJCWlmIChrbWFyayAmJiBybWFy aykKIAkJCQkJYnJlYWs7CiAJCQl9Ci0JCQlpZiAob21hcmsgJiYgaW1hcmsgJiYgb21hcmst Pm1hcmtUeXBlICE9IGltYXJrLT5tYXJrVHlwZSkKKwkJCWlmIChrbWFyayAmJiBybWFyayAm JiBrbWFyay0+bWFya1R5cGUgIT0gcm1hcmstPm1hcmtUeXBlKQogCQkJCWNvbnRpbnVlOwog CiAJCQkvKgpAQCAtMjIyOSw4ICsyMjMyLDggQEAgcmVtb3ZlX3NlbGZfam9pbnNfb25lX2dy b3VwKFBsYW5uZXJJbmZvICpyb290LCBSZWxpZHMgcmVsaWRzKQogCQkJICogYnVpbGRfam9p bnJlbF9yZXN0cmljdGxpc3QoKSByb3V0aW5lLgogCQkJICovCiAJCQlyZXN0cmljdGxpc3Qg PSBnZW5lcmF0ZV9qb2luX2ltcGxpZWRfZXF1YWxpdGllcyhyb290LCBqb2lucmVsaWRzLAot CQkJCQkJCQkJCQkJCQkJaW5uZXItPnJlbGlkcywKLQkJCQkJCQkJCQkJCQkJCW91dGVyLCBO VUxMKTsKKwkJCQkJCQkJCQkJCQkJCXJyZWwtPnJlbGlkcywKKwkJCQkJCQkJCQkJCQkJCWty ZWwsIE5VTEwpOwogCQkJaWYgKHJlc3RyaWN0bGlzdCA9PSBOSUwpCiAJCQkJY29udGludWU7 CiAKQEAgLTIyNDAsNyArMjI0Myw3IEBAIHJlbW92ZV9zZWxmX2pvaW5zX29uZV9ncm91cChQ bGFubmVySW5mbyAqcm9vdCwgUmVsaWRzIHJlbGlkcykKIAkJCSAqIG90aGVyam9pbnF1YWxz LgogCQkJICovCiAJCQlzcGxpdF9zZWxmam9pbl9xdWFscyhyb290LCByZXN0cmljdGxpc3Qs ICZzZWxmam9pbnF1YWxzLAotCQkJCQkJCQkgJm90aGVyam9pbnF1YWxzLCBpbm5lci0+cmVs aWQsIG91dGVyLT5yZWxpZCk7CisJCQkJCQkJCSAmb3RoZXJqb2lucXVhbHMsIHJyZWwtPnJl bGlkLCBrcmVsLT5yZWxpZCk7CiAKIAkJCUFzc2VydChsaXN0X2xlbmd0aChyZXN0cmljdGxp c3QpID09CiAJCQkJICAgKGxpc3RfbGVuZ3RoKHNlbGZqb2lucXVhbHMpICsgbGlzdF9sZW5n dGgob3RoZXJqb2lucXVhbHMpKSk7CkBAIC0yMjUxLDcgKzIyNTQsNyBAQCByZW1vdmVfc2Vs Zl9qb2luc19vbmVfZ3JvdXAoUGxhbm5lckluZm8gKnJvb3QsIFJlbGlkcyByZWxpZHMpCiAJ CQkgKiBkZWdlbmVyYXRlIGNhc2Ugd29ya3Mgb25seSBpZiBib3RoIHNpZGVzIGhhdmUgdGhl IHNhbWUgY2xhdXNlLgogCQkJICogU28gZG9lc24ndCBtYXR0ZXIgd2hpY2ggc2lkZSB0byBh ZGQuCiAJCQkgKi8KLQkJCXNlbGZqb2lucXVhbHMgPSBsaXN0X2NvbmNhdChzZWxmam9pbnF1 YWxzLCBvdXRlci0+YmFzZXJlc3RyaWN0aW5mbyk7CisJCQlzZWxmam9pbnF1YWxzID0gbGlz dF9jb25jYXQoc2VsZmpvaW5xdWFscywga3JlbC0+YmFzZXJlc3RyaWN0aW5mbyk7CiAKIAkJ CS8qCiAJCQkgKiBEZXRlcm1pbmUgaWYgdGhlIGlubmVyIHRhYmxlIGNhbiBkdXBsaWNhdGUg b3V0ZXIgcm93cy4gIFdlIG11c3QKQEAgLTIyNjAsOCArMjI2Myw4IEBAIHJlbW92ZV9zZWxm X2pvaW5zX29uZV9ncm91cChQbGFubmVySW5mbyAqcm9vdCwgUmVsaWRzIHJlbGlkcykKIAkJ CSAqIGpvaW4gcXVhbHMgYXJlIHNlbGYtam9pbiBxdWFscy4gIE90aGVyd2lzZSwgd2UgY291 bGQgZW5kIHVwCiAJCQkgKiBwdXR0aW5nIGZhbHNlIG5lZ2F0aXZlcyBpbiB0aGUgY2FjaGUu CiAJCQkgKi8KLQkJCWlmICghaW5uZXJyZWxfaXNfdW5pcXVlX2V4dChyb290LCBqb2lucmVs aWRzLCBpbm5lci0+cmVsaWRzLAotCQkJCQkJCQkJCW91dGVyLCBKT0lOX0lOTkVSLCBzZWxm am9pbnF1YWxzLAorCQkJaWYgKCFpbm5lcnJlbF9pc191bmlxdWVfZXh0KHJvb3QsIGpvaW5y ZWxpZHMsIHJyZWwtPnJlbGlkcywKKwkJCQkJCQkJCQlrcmVsLCBKT0lOX0lOTkVSLCBzZWxm am9pbnF1YWxzLAogCQkJCQkJCQkJCWxpc3RfbGVuZ3RoKG90aGVyam9pbnF1YWxzKSA9PSAw LAogCQkJCQkJCQkJCSZ1Y2xhdXNlcykpCiAJCQkJY29udGludWU7CkBAIC0yMjc3LDE0ICsy MjgwLDE0IEBAIHJlbW92ZV9zZWxmX2pvaW5zX29uZV9ncm91cChQbGFubmVySW5mbyAqcm9v dCwgUmVsaWRzIHJlbGlkcykKIAkJCSAqIGV4cHJlc3Npb25zLCBvciB3ZSB3b24ndCBtYXRj aCB0aGUgc2FtZSByb3cgb24gZWFjaCBzaWRlIG9mIHRoZQogCQkJICogam9pbi4KIAkJCSAq LwotCQkJaWYgKCFtYXRjaF91bmlxdWVfY2xhdXNlcyhyb290LCBpbm5lciwgdWNsYXVzZXMs IG91dGVyLT5yZWxpZCkpCisJCQlpZiAoIW1hdGNoX3VuaXF1ZV9jbGF1c2VzKHJvb3QsIHJy ZWwsIHVjbGF1c2VzLCBrcmVsLT5yZWxpZCkpCiAJCQkJY29udGludWU7CiAKIAkJCS8qCiAJ CQkgKiBXZSBjYW4gcmVtb3ZlIGVpdGhlciByZWxhdGlvbiwgc28gcmVtb3ZlIHRoZSBpbm5l ciBvbmUgaW4gb3JkZXIKIAkJCSAqIHRvIHNpbXBsaWZ5IHRoaXMgbG9vcC4KIAkJCSAqLwot CQkJcmVtb3ZlX3NlbGZfam9pbl9yZWwocm9vdCwgb21hcmssIGltYXJrLCBvdXRlciwgaW5u ZXIsIHJlc3RyaWN0bGlzdCk7CisJCQlyZW1vdmVfc2VsZl9qb2luX3JlbChyb290LCBrbWFy aywgcm1hcmssIGtyZWwsIHJyZWwsIHJlc3RyaWN0bGlzdCk7CiAKIAkJCXJlc3VsdCA9IGJt c19hZGRfbWVtYmVyKHJlc3VsdCwgcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Nl dHJlZnMuYwppbmRleCA4NDZlNDQxODZjMy4uZDcwNjU0NmYzMzIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTMwNyw2ICszMDcsMTAgQEAgc2V0X3BsYW5f cmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbikKIAkJUGxhblJvd01h cmsgKnJjID0gbGZpcnN0X25vZGUoUGxhblJvd01hcmssIGxjKTsKIAkJUGxhblJvd01hcmsg Km5ld3JjOwogCisJCS8qIHNhbml0eSBjaGVjayBvbiBleGlzdGluZyByb3cgbWFya3MgKi8K KwkJQXNzZXJ0KHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlbcmMtPnJ0aV0gIT0gTlVMTCAmJgor CQkJICAgcm9vdC0+c2ltcGxlX3J0ZV9hcnJheVtyYy0+cnRpXSAhPSBOVUxMKTsKKwogCQkv KiBmbGF0IGNvcHkgaXMgZW5vdWdoIHNpbmNlIGFsbCBmaWVsZHMgYXJlIHNjYWxhcnMgKi8K IAkJbmV3cmMgPSAoUGxhblJvd01hcmsgKikgcGFsbG9jKHNpemVvZihQbGFuUm93TWFyaykp OwogCQltZW1jcHkobmV3cmMsIHJjLCBzaXplb2YoUGxhblJvd01hcmspKTsKLS0gCjIuNTAu MQoK --------------okl2m2jWC0zUqr2i0hJgbhaT--