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 1trZL7-005dRf-98 for pgsql-bugs@arkaria.postgresql.org; Mon, 10 Mar 2025 09:22:25 +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 1trZL5-007IkZ-MT for pgsql-bugs@arkaria.postgresql.org; Mon, 10 Mar 2025 09:22:23 +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 1trZL5-007IkR-DC for pgsql-bugs@lists.postgresql.org; Mon, 10 Mar 2025 09:22:23 +0000 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1trZL1-0020Rf-35 for pgsql-bugs@lists.postgresql.org; Mon, 10 Mar 2025 09:22:23 +0000 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-39104c1cbbdso1884515f8f.3 for ; Mon, 10 Mar 2025 02:22:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741598539; x=1742203339; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=98OmLSlvVWTzA0u95cImlTfx8+XabGD4VQNE/Arl1fE=; b=ObPfmFOXz1DVBl+QpVa5RnsIXIxU1FGkT9OFWMsRTeICF5eymIVLp/7kDdocCMl1DS wGqwSYY5b4dDotE7bqUf4YT29KqDVILp56ybPDqoWAkTj7fbFq+GnSnlS5pDz79eknhP NodH+uWJbatrs5nsY/1LFeNNacPeOZio8rtT/dXcZ4z7qMHChp5s9hLbNjLbgfxOupwJ CowNg2RP29S80suNcS0aOQDx5ua/uh9bGGJTDcG/xLAK1H3a4CgcQQDXmWdZhIbuJhTt hj6IeggEUr0py2yQPL5MB9R8so0vVNimnOAlkYYRWKykpI1QMu0j7l9Rug10PrAGWH4n HUkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741598539; x=1742203339; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=98OmLSlvVWTzA0u95cImlTfx8+XabGD4VQNE/Arl1fE=; b=eVqLvcYO3acBJGNKte5HFk2SI6OHrj+awF5DsRz3db0ytXL1CDuv6C9KmPxRnIXZYM AwY94m3H7h6Or8jbznUjDH3TQskVGWHaRgdZNxGUmP7Jxv8vmlTb4L7xudg8y/lNNhRd BRNfGxsehuQ4AdIZ1zp3vIamTY94W5n8cULej3zz6DQQUIKXNqA0GRLPOmhXo285vhXY iDxNVrmEInkr6w5O2SFwfKLu66M4d31Uc2VVDPbLLiDfzuul7MJkyX/rsRK8f3Kfkpl/ uCXOJtGsti1oxsVTplY9iJQibBeHQJfnxcNT4gwIcjH7sSuX58LBCaYxKvfZdHp4rKqs gfTQ== X-Gm-Message-State: AOJu0YzVB0WVYWSvdtF9V29+ZrKDicoqLwlj08o1n72bJI/ENPNOR8uT 1gqqNBouDp2JtSZet1eElmAbJzIV3BSNQP2d38yvanndLxzA0kXj X-Gm-Gg: ASbGncvJ1sAIkb4HC1j3aArEhH5h2AU8Z3OzEEcJ4jx88YNOtbSyfyB5djuLZarfSgV 4ZZybQvPr9RvZvBZRDVflLGCJw8AoljoSgtV81oIcteIk1nuERcngEOztGy0I8gO8XX6WDtIuZP AtbpcApojge3dkIMT5o0jTzAJ38WCmoII0rK2nr4STGH2GvBPunEwnAO8w6XH3MHnfqU1B3QiB/ t4+zPx0jgVuYfy3pDyprMqw8zz209zNkHM/Ary8ad6myD14JDvHfJVrLVCQLm8SONuubC0/aQY7 wAGzP2VR1uHvGgpx+DmaCeNiz5UEGpqxCHwdUfIbFjFBomWGN9+p8ZQmbIJYhmdvxo3OOSTrzXd 2+nVsI9zEQJukZpE= X-Google-Smtp-Source: AGHT+IHQWa+VooCw1q2vsTgvPrXoEqst9o1l2aAaQS+TBn+8hqB8kg99972Wy39og0bcR2hNd1bw/g== X-Received: by 2002:a05:6000:2ac:b0:390:f400:2083 with SMTP id ffacd0b85a97d-39132b5bb58mr8483119f8f.0.1741598538998; Mon, 10 Mar 2025 02:22:18 -0700 (PDT) Received: from [192.168.0.211] (84.123.232.230.dyn.user.ono.com. [84.123.232.230]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3912bee262esm14246890f8f.0.2025.03.10.02.22.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Mar 2025 02:22:18 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------dwbkqzajLsn8TAryusG9wdNR" Message-ID: Date: Mon, 10 Mar 2025 10:22:17 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Memoize in between of two JOIN nodes To: Richard Guo Cc: pgsql-bugs@lists.postgresql.org References: <531bcdbc-e734-4db8-b1d1-18af8bdf9eab@gmail.com> Content-Language: en-US From: Andrei Lepikhov In-Reply-To: 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. --------------dwbkqzajLsn8TAryusG9wdNR Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 7/3/2025 02:13, Richard Guo wrote: > On Thu, Mar 6, 2025 at 8:17 PM Andrei Lepikhov wrote: >> Playing with memoisation, I found the case where the Memoize is put over >> a JOIN node (see attachment). >> I recall a discussion we had with Richard in which he mentioned [1] that >> this feature is still not implemented and is hard to design. >> I'm not sure, but may it be a sign of a potential bug? > > In your case, the Memoize node is added on top of a base relation of a > subquery RTE, not a join relation. The final plan might be kind of > confusing because the SubqueryScan node is considered trivial and is > removed from the plan tree. Yes, I understand your point. But I kept in mind a different idea, sorry for my bad explanation: In the case of another subquery, we can't use the memoize node even if it would help a lot: EXPLAIN (ANALYZE, COSTS OFF, TIMING OFF, BUFFERS OFF, SUMMARY ON) SELECT * FROM t1 LEFT JOIN ( SELECT t2.* FROM t2 JOIN ( VALUES (1,1), (2,2)) AS q2(x,y) ON (t2.y=q2.y)) q ON (t1.x = q.x); see the full case reproduction script in the attachment. So, the question is: may we play with subquery flattening to let memoize caching a join result? In our previous discussion, you pointed out the problem of reference detection. But maybe the SubqueryScan hack can make it simpler? -- regards, Andrei Lepikhov --------------dwbkqzajLsn8TAryusG9wdNR Content-Type: application/sql; name="demo.sql" Content-Disposition: attachment; filename="demo.sql" Content-Transfer-Encoding: base64 RFJPUCBUQUJMRSBJRiBFWElTVFMgdDEsdDIgQ0FTQ0FERTsKU0VUIGVuYWJsZV9tZXJnZWpv aW4gPSAnb2ZmJzsKU0VUIGVuYWJsZV9oYXNoam9pbiA9ICdvZmYnOwpTRVQgZW5hYmxlX3Nl cXNjYW4gPSAnb2ZmJzsKU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAw OwoKQ1JFQVRFIFRBQkxFIHQxICh4IGludGVnZXIsIHkgbnVtZXJpYyBERUZBVUxUIDApOwpJ TlNFUlQgSU5UTyB0MSAoeCkgKFNFTEVDVCBncyAlIDIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwxRTYpIEFTIGdzKTsKCkNSRUFURSBUQUJMRSB0MiAoeCBpbnRlZ2VyLCB5IG51bWVyaWMg REVGQVVMVCAwKTsKSU5TRVJUIElOVE8gdDIgKHgpIChTRUxFQ1QgZ3MgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwxRTUpIEFTIGdzKTsKQ1JFQVRFIElOREVYIE9OIHQyKHgpOwpWQUNVVU0g QU5BTFlaRSB0MSx0MjsKCkVYUExBSU4gKEFOQUxZWkUsIENPU1RTIE9GRiwgVElNSU5HIE9G RiwgQlVGRkVSUyBPRkYsIFNVTU1BUlkgT04pClNFTEVDVCAqIEZST00gdDEgTEVGVCBKT0lO ICgKICBTRUxFQ1QgdDIuKiBGUk9NIHQyIEpPSU4gKFZBTFVFUyAoMSwxKSwgKDIsMikpIEFT IHEyKHgseSkgT04gKHQyLnk9cTIueSkpIHEKT04gKHQxLnggPSBxLngpOwoKLyoKIE5lc3Rl ZCBMb29wIExlZnQgSm9pbiAoYWN0dWFsIHJvd3M9MTAwMDAwMC4wMCBsb29wcz0xKQogICAt PiAgU2VxIFNjYW4gb24gdDEgKGFjdHVhbCByb3dzPTEwMDAwMDAuMDAgbG9vcHM9MSkKICAg ICAgICAgRGlzYWJsZWQ6IHRydWUKICAgLT4gIE5lc3RlZCBMb29wIChhY3R1YWwgcm93cz0w LjAwIGxvb3BzPTEwMDAwMDApCiAgICAgICAgIEpvaW4gRmlsdGVyOiAodDIueSA9ICgiKlZB TFVFUyoiLmNvbHVtbjIpOjpudW1lcmljKQogICAgICAgICBSb3dzIFJlbW92ZWQgYnkgSm9p biBGaWx0ZXI6IDEKICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgdDJfeF9pZHggb24g dDIgKGFjdHVhbCByb3dzPTAuNTAgbG9vcHM9MTAwMDAwMCkKICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHggPSB0MS54KQogICAgICAgICAtPiAgVmFsdWVzIFNjYW4gb24gIipWQUxV RVMqIiAoYWN0dWFsIHJvd3M9Mi4wMCBsb29wcz01MDAwMDApCiBQbGFubmluZyBUaW1lOiAw LjMxMSBtcwogRXhlY3V0aW9uIFRpbWU6IDcyMTcuMDI0IG1zCiAqLwo= --------------dwbkqzajLsn8TAryusG9wdNR--