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 1w4mpc-002YTL-2F for pgsql-bugs@arkaria.postgresql.org; Mon, 23 Mar 2026 21:29:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w4mpa-002Vad-2v for pgsql-bugs@arkaria.postgresql.org; Mon, 23 Mar 2026 21:29:03 +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.96) (envelope-from ) id 1w4mpa-002VaV-20 for pgsql-bugs@lists.postgresql.org; Mon, 23 Mar 2026 21:29:03 +0000 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w4mpY-00000000lY5-26bI for pgsql-bugs@lists.postgresql.org; Mon, 23 Mar 2026 21:29:02 +0000 Received: by mail-ot1-x334.google.com with SMTP id 46e09a7af769-7d7e5e8c907so2579056a34.0 for ; Mon, 23 Mar 2026 14:29:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774301339; cv=none; d=google.com; s=arc-20240605; b=ShcVGBZnOaxME9Jbcx1vxeW6k6AJRToxyI1ICzMf+pzCvdkiwRAgttNovt3DmISMHZ UXAZprx3GWHf3GmVdbXSDeBKAGBqB/kShOLFzqDRCx/n9LrswNQn8yO4NuV9aKekyhOc A9w46+QSmmOHGhSoEvf1MjKJN2YPa+/fS4uwY6ijMe6juSPKIkr4qWUkwoPXQUG14G5p FUk4+5hLzquPNEGCcANHIm4Dlql6BjjXgfFDtm0YDY/uWt6VsIMSupvBZsroB4YuAHWl SKsd0oGlD/+T+JWdmGmNMuHj1irkaULd4kvB5xP9/RyvVA4NDTdZY3xC9gmeb7OVh+K4 Xb8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=YA3IjC6I8jRQ0QCnnKOYELGmPS1MtvJzn3gBlRKns5c=; fh=InG2VXsrXv9H1xFG3vMXBZlA2KL0+I/2nun6CnJlNIQ=; b=Ci9OOnXbXMm3OIPszQpPPEWHg7WP4tYS7UZa87Hw4QXXKWhC87Kjh6G2jLRHYUaKtV Zfs/OM93lT4RCM0IySzU+GtWRaRbmWp0LZtouP5XSirt3r267rZDNKCUtsXLbH0M1wJS rNUOxIfDU8bL8gwAee3OHoVN0qoFyRWATR4g7/wJ/ghJmLo1zKWHFO/P3bTjuWdJNwzl MLA9ZDBg5yXk6KZEbUxc4KSDNGHHLjo0xvC0+NdMzjcsHQmws9xkTrBc6CltIeRNNF1n c71yKr3VeYTrouwT4Fk+wdEEvoh/8x5WFhHl0RJMpf7kO/McQ9LaDaxnQBDjvC0P3T3n tl9g==; 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=1774301339; x=1774906139; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=YA3IjC6I8jRQ0QCnnKOYELGmPS1MtvJzn3gBlRKns5c=; b=nMLfI8+2qYjaaf/ao0l2Zh0tS4eZYo3qGqPPd9oVcssA0a3xFwwf5+FYq0bVOsHbS3 JZAMMnrALoCyYmbLN44EKTGooLsRB4b/IRdzv77vaxi7egA6YUjLD2p4Op3xVVbsDshZ Lq7k8NuAmvvXH/NxT732jCigved3p2Do8btOjDbaDyeP5sg+cwMTY9csLTGh2mIMPPlL PPvUjf9CA8bzNNhLVzowbivupuRg0RcqMpCzeisKShCrffM/d1Cmwg5BcXugKIkeH8Vk 5LUc+ie07x34uq97o69oZYXPjeobSoejOu+GGJqEoNyFGUdL/0TH78Ii0xoiv+i87NH/ KolQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774301339; x=1774906139; h=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=YA3IjC6I8jRQ0QCnnKOYELGmPS1MtvJzn3gBlRKns5c=; b=hPaTFEPvZGnbziu+PnJPxWUft4k2a4wTVFw9Y0k5FeL1TR4saUBayK4I14o10jgryU V1y9VH63z72G3LpC36e4NU2zJRERUADVu4+F2QR9yQKS0rQnPyrxTIIP4jG+czWU9z4C KcbYML/H3EVTc+PVU2NMqgW+g8QMG2xJV+GjnwY/W7PD+wMx3jv8gXTi66SjFdaQW000 7DxMSL97nQNSfU3m1Bgq1UvELDQmJAyK0NErHG3P3CIKPa1isXohUnEyPBUkU76QSFqH ZW5Tf14hticPCQyLNRHzf4rNp8lbn4ir5GfuEx3qzO4rWuKWDPnOv6P+HSsEtBAsZC/g Zp4Q== X-Forwarded-Encrypted: i=1; AJvYcCXTs97boae+iQo/+rfycOCBKbvVwoloi+NaqZf7QF4eqluBf1UMs9R8Pr4MroS2Wp5qJV4+OPNl2SiV@lists.postgresql.org X-Gm-Message-State: AOJu0Yzgi7xrbxSS9iRBCxTKSWZqmJfXvclDokLk80vRoZPjJQ/LcCCD iFX9EGaxklzufPMJ3H8UXPCSHT/mwbKeHJt0y8Cq1Lfz4j7GmKT9y57dq57anxcOmnWFGmSeoyY KVrZB+M97zb2JPIlBVdJoj+dNdp9igEo= X-Gm-Gg: ATEYQzzWJDO2azrq2AmbYOnLyNTZwIfvWu+RcDdC7NojJAiQeiZsWf55zYF2GatnqLP 6N3PSWrIQ6PZlSi4T9hznp8eyZ9Th5/vN/0KkxEn+CY5e43AL/IpcjU8CM5QJ/0xNPe0suZUGfb Mqb1H4/XnP7MPn9zT3yQrz1MYLGIrmdyioOeCqsqDFefSXAIqIp6Q8F7cMPPjQJduVrm/d/LZZw bhTOwjU1IKTlGW6bShIi89o0nXn5tZOJbQSNanrSuu2bheNOdNBCsltiZ2/02k1XtlkeQc+O/63 v/gWxveL7DE7VchYRkfGWfBDVw8AOcYowgu1Qlw0H//THO87KtzFX3CJoBoddD+FPQk/14S2UFd YpCwBtLQWBCNFfLdE7ZIqfsLkFH9T2XYB534bR5J4 X-Received: by 2002:a05:6820:4b8f:b0:67d:e505:cf54 with SMTP id 006d021491bc7-67de5061854mr5553352eaf.57.1774301339205; Mon, 23 Mar 2026 14:28:59 -0700 (PDT) MIME-Version: 1.0 References: <19435-3cc1a87f291129f1@postgresql.org> <1607553.1774017006@sss.pgh.pa.us> <1777986.1774038373@sss.pgh.pa.us> In-Reply-To: <1777986.1774038373@sss.pgh.pa.us> From: Alexander Korotkov Date: Mon, 23 Mar 2026 23:28:45 +0200 X-Gm-Features: AQROBzChEWVC7SxfwqTWoFt-W0_iFVPIZ1GupIp5vq3WcuDnfY35IIYZIrgJegc Message-ID: Subject: Re: BUG #19435: Error: "No relation entry for relid 2" Triggered by Complex Join with Self-Referencing Tables To: Tom Lane Cc: Andrei Lepikhov , Kirill Reshke , Tender Wang , Fujii Masao , ammmkilo@163.com, pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000000cb026064db7b913" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000cb026064db7b913 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Tom! On Fri, Mar 20, 2026 at 10:26=E2=80=AFPM Tom Lane wrote= : > > I wrote: > > At the very least we need to add comments, but I wonder if we > > don't actually need an Assert that ChangeVarNodesWalkExpression > > is not invoked directly on a Query. It would have done the > > right thing before this patch, but now it won't. That's an > > okay tradeoff for fixing the bare-Var case, but not documenting > > what you did is not okay. > > After further contemplation I've decided that an Assert would be > wrong, because it's not impossible that a callback would want > to invoke this on a sub-Query --- for instance, if it wanted to > short-circuit ChangeVarNodes's processing of a SubLink node, > it would need to do that. The key point is that if we do see a > Query node here, we will treat it as a sub-query not a top-level > query, which also justifies skipping the work that > ChangeVarNodesExtended does on a top-level Query. So we just > need a comment explaining that. I'm thinking about the attached. > > (BTW, by this reasoning the previous implementation of > ChangeVarNodesWalkExpression was doubly wrong, since it would > have done the wrong thing at a Query node as well as a Var node.) Thank you so much for caring about this. I agree that this kind of changes should go with proper comments. Please, consider my additions to the comment. They explain why we use ChangeVarNodes_walker() instead of expression_tree_walker(), and gives a bit more details about difference in processing of top-level Query and subquery. ------ Regards, Alexander Korotkov Supabase --0000000000000cb026064db7b913 Content-Type: application/octet-stream; name="further-improve-ChangeVarNodesWalkExpression-comments.patch" Content-Disposition: attachment; filename="further-improve-ChangeVarNodesWalkExpression-comments.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn3p4g490 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZU1hbmlwLmMgYi9zcmMvYmFj a2VuZC9yZXdyaXRlL3Jld3JpdGVNYW5pcC5jCmluZGV4IGRjODAzYTE3MDM3Li4wYzZjNjNhZWJl NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlTWFuaXAuYworKysgYi9z cmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVNYW5pcC5jCkBAIC03NDIsMTEgKzc0MiwxNyBAQCBD aGFuZ2VWYXJOb2RlcyhOb2RlICpub2RlLCBpbnQgcnRfaW5kZXgsIGludCBuZXdfaW5kZXgsIGlu dCBzdWJsZXZlbHNfdXApCiAgKgogICogVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IGEg Y2FsbGJhY2sgdGhhdCBuZWVkcyB0byByZWN1cnNpdmVseQogICogcHJvY2VzcyBzdWJleHByZXNz aW9ucyBvZiBzb21lIG5vZGUgYmVpbmcgdmlzaXRlZCBieSBhbiBvdXRlcgotICogQ2hhbmdlVmFy Tm9kZXNFeHRlbmRlZCBjYWxsIChub3QgbGV0dGluZyBDaGFuZ2VWYXJOb2Rlc193YWxrZXIgZG8g dGhhdCkuCi0gKiBIZW5jZSwgd2UgaW52b2tlIENoYW5nZVZhck5vZGVzX3dhbGtlciBkaXJlY3Rs eS4gIFRoaXMgbWVhbnMgdGhhdCBpZgotICogdGhlIHBhc3NlZCBOb2RlIGlzIGEgUXVlcnkgbm9k ZSwgaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGEgc3ViLVF1ZXJ5LAotICogc28gc3VibGV2ZWxzX3Vw IHdpbGwgYmUgaW5jcmVtZW50ZWQgaW1tZWRpYXRlbHkuICBEbyBub3QgYXBwbHkgdGhpcwotICog dG8gYSB0b3AtbGV2ZWwgUXVlcnkgbm9kZSwgb3IgeW91J2xsIGxpa2VseSBnZXQgd3JvbmcgcmVz dWx0cy4KKyAqIENoYW5nZVZhck5vZGVzRXh0ZW5kZWQgY2FsbCwgaW5zdGVhZCBvZiByZWx5aW5n IG9uIENoYW5nZVZhck5vZGVzX3dhbGtlcidzCisgKiBkZWZhdWx0IHJlY3Vyc2lvbi4gIFdlIGlu dm9rZSBDaGFuZ2VWYXJOb2Rlc193YWxrZXIgZGlyZWN0bHkgcmF0aGVyIHRoYW4KKyAqIGV4cHJl c3Npb25fdHJlZV93YWxrZXIsIGJlY2F1c2UgZXhwcmVzc2lvbl90cmVlX3dhbGtlciBvbmx5IHZp c2l0cyBjaGlsZAorICogbm9kZXMgYW5kIHdvdWxkIGZhaWwgdG8gcHJvY2VzcyB0aGUgcGFzc2Vk IG5vZGUgaXRzZWxmIC0tLSBmb3IgZXhhbXBsZSwKKyAqIGEgYmFyZSBWYXIgbm9kZSB3b3VsZCBu b3QgZ2V0IGl0cyB2YXJubyBhZGp1c3RlZC4KKyAqCisgKiBCZWNhdXNlIHRoaXMgY2FsbHMgQ2hh bmdlVmFyTm9kZXNfd2Fsa2VyIGRpcmVjdGx5LCBpZiB0aGUgcGFzc2VkIG5vZGUgaXMKKyAqIGEg UXVlcnksIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBhIHN1Yi1RdWVyeTogc3VibGV2ZWxzX3VwIGlz IGluY3JlbWVudGVkCisgKiBiZWZvcmUgcmVjdXJzaW5nIGludG8gaXQsIGFuZCBRdWVyeS1sZXZl bCBmaWVsZHMgKHJlc3VsdFJlbGF0aW9uLAorICogbWVyZ2VUYXJnZXRSZWxhdGlvbiwgcm93TWFy a3MsIGV0Yy4pIHdpbGwgbm90IGJlIGFkanVzdGVkLiAgRG8gbm90IGFwcGx5CisgKiB0aGlzIHRv IGEgdG9wLWxldmVsIFF1ZXJ5IG5vZGU7IHVzZSBDaGFuZ2VWYXJOb2Rlc0V4dGVuZGVkIGZvciB0 aGF0LgogICovCiBib29sCiBDaGFuZ2VWYXJOb2Rlc1dhbGtFeHByZXNzaW9uKE5vZGUgKm5vZGUs IENoYW5nZVZhck5vZGVzX2NvbnRleHQgKmNvbnRleHQpCg== --0000000000000cb026064db7b913--