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 1u1lzl-007p5T-0y for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Apr 2025 12:54:33 +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 1u1lzi-00G4ky-Sx for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Apr 2025 12:54:31 +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 1u1lzi-00G4kq-JF for pgsql-hackers@lists.postgresql.org; Mon, 07 Apr 2025 12:54:30 +0000 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u1lzg-003v99-1Z for pgsql-hackers@lists.postgresql.org; Mon, 07 Apr 2025 12:54:30 +0000 Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-30bfed67e08so43296771fa.2 for ; Mon, 07 Apr 2025 05:54:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744030467; x=1744635267; darn=lists.postgresql.org; h=in-reply-to:from:cc:content-language:references:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=/zA3TBA28X+MVZLYR78iVQ7WdhjTZcpTZW4ofqDhhhk=; b=LY86uKKZFkr+jGK/g2b5q8ppTQYgCuaPAxm8VcrPLAEUYtHpc1ZhH0cb5zIMecQIbC 0QYn00PTWmDAx70uuWkUywQqOEL2BnvaYMeeJb/P6YDN2jX6CAvJtJBB4qjU+M21Kg3U +6kU/pYucQZALDL6pAPtE/g+YtIDG8QzutGA/f3/NmDGVWpF15CLhSoCQdKiMLa1qfeG N1uBxDU4fRaTCZBbRoQdaW3n0cnxTnmhyXM4E2ii8Jo15yS1d07kLG79uOwQPmB6herc t1hCagdaHZuYhWK1ZniRDywSN9wHd5mY8wdPTkXwoTqFQLcDOLH0RoGhcrhRHnFANxpP CfBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744030467; x=1744635267; h=in-reply-to:from:cc:content-language:references:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=/zA3TBA28X+MVZLYR78iVQ7WdhjTZcpTZW4ofqDhhhk=; b=eviwfNl81UZOgx8Mop/F5FvKJQgO1ggy9sNF8R/gsgT/s6fcnVXVB35myS7++nhPbZ 3l+rj8WoUCSWNWS0j2nWJqxKJ1QgtjI+TALsWy/x/5KsUUKQRsuDMN5kGkkDdghtYYv1 +IO/WMoaVhYLxdxX4GRWwKJCQwfeQR/I5Xx/tES+sr6v8cBdmwMlIuc//bmUM2LC20v3 ObhUnqjfp6/Il0VCoOtDhzTiRcK2P93GpARUV2Vh+nxVY1ACkmjFs6qGsdU8byQNrFFQ uz0Z3A9I08bGABHSYWXF8aO5hynGyejIJz7rVdRDZTc7XkxmYRBHSJctN7i99TrLeSbS VE8g== X-Gm-Message-State: AOJu0Yw+sWcq+WEgtZ/ODwaTTWL6S8trwYvL0DR5TlXiTRUlI/haWTaN 55T1RUcb7sswg+d+UG+W8E8wQXCJf2tnuUPvZrd43DKGhgHrimZKlEHNzIh9O40= X-Gm-Gg: ASbGncsEWpB4qNb2RNDnxY8todMDQZCzpIUlF7cIqBEYNHOwtbpscHT7NDZIUUv6iBE F1mjwEIyhjAJh4fndsUoZR6bz1lNKj7ZE5Llk5MaZNgLUX3QZTkyWeojl3Ua2KBSpwlplLdkT/I lZeEsVg1bLfEYxB5j03hp52J3bX60B7opavMIm4znp/pzltDA6MryuLrz6nHyjFdtone9gjXA8k ilicRvfSJM0hebA8mCjNkZa5VLMTp3r5RagHE1fZbEt9ZVe/kIVG3pvIWl3G8QGuvLb8RwCO2+E 6FenIk3S8uDLVTh8VZQ7I1Xvz731T3PzlAWk+1leIkA= X-Google-Smtp-Source: AGHT+IGcv9/nzFarBvvqsBC9Lt6mmYwncvO/d9i3ERtKSrsOnPRnCzjnwWK/Mqe5wu+6YcSp7gQ63g== X-Received: by 2002:a2e:a5c1:0:b0:30b:ba06:b6f9 with SMTP id 38308e7fff4ca-30f0a1716f4mr41334511fa.26.1744030466774; Mon, 07 Apr 2025 05:54:26 -0700 (PDT) Received: from [10.4.15.162] ([93.174.131.141]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30f0313f3e2sm15867981fa.26.2025.04.07.05.54.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 07 Apr 2025 05:54:26 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------NfCIMOYPlO3CgQQQvatl0IP8" Message-ID: <7ba688e1-7091-4262-991f-a9162254065a@gmail.com> Date: Mon, 7 Apr 2025 14:54:24 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: An incorrect check in get_memoize_path To: Richard Guo References: Content-Language: en-AU Cc: Pg Hackers 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. --------------NfCIMOYPlO3CgQQQvatl0IP8 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 4/7/25 09:50, Richard Guo wrote: > Consider the join to t3. It is a unique join, and not all of its > restriction clauses are parameterized. Despite this, the check still > passes. At least, this code looks more simple to understand, more 'armored' and worth to change. At the same time I think term 'Incorrect' is not good unless you show an example where data returned is not consistent to the expected. I think this inequality check has worked in couple with the get_equal_hashops. I think it may be pushed as is. But it worth to discover the get_equal_hashops more deeply. Discovering your idea I wrote an example (see attachment) which (with commented clause_sides_match_join) provides an incorrect Memoize - that's why I ended up with support of your change even when you can't show any buggy behaviour. But I've got an assertion that is different from the error I expected to see (error on single_row mode): #0 0x00005583c45532ce in CheckVarSlotCompatibility #1 0x00005583c4553244 in CheckExprStillValid #2 0x00005583c45530ea in ExecInterpExprStillValid #3 0x00005583c45a245c in ExecEvalExpr #4 0x00005583c45a3985 in prepare_probe_slot #5 0x00005583c45a3e52 in cache_lookup #6 0x00005583c45a4313 in ExecMemoize It looks strange. -- regards, Andrei Lepikhov --------------NfCIMOYPlO3CgQQQvatl0IP8 Content-Type: application/sql; name="example.sql" Content-Disposition: attachment; filename="example.sql" Content-Transfer-Encoding: base64 RFJPUCBUQUJMRSBJRiBFWElTVFMgdCx0MzsKQ1JFQVRFIFRBQkxFIHQgKGEgaW50LCBiIGlu dCk7CkNSRUFURSBUQUJMRSB0MyAoYSBpbnQsIGIgaW50KTsKSU5TRVJUIElOVE8gdCAoCiAg U0VMRUNUIGdzJTUsIGdzJTUgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApIEFTIGdzKTsK SU5TRVJUIElOVE8gdDMgKAogIFNFTEVDVCBncywgZ3MgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwxMDApIEFTIGdzKTsKQ1JFQVRFIElOREVYIE9OIHQgKGEsYik7ClZBQ1VVTSBBTkFMWVpF IHQsdDM7CgpleHBsYWluIChhbmFseXplLCBjb3N0cyBvZmYpCnNlbGVjdCAqIGZyb20gdCB0 MCBsZWZ0IGpvaW4KICAodCB0MSBsZWZ0IGpvaW4gdCB0MiBvbiB0MS5hID0gdDIuYQogICBq b2luIGxhdGVyYWwKICAgICAoc2VsZWN0IGRpc3RpbmN0IG9uIChhLCBiKSBhLCBiLCB0MC5h K3QxLmErdDIuYSBhcyB4CiAgICAgIGZyb20gdCB0MyBvZmZzZXQgMCkgdDMKICAgICAgICAg b24gdDEuYSA9IHQzLmEgYW5kIGNvYWxlc2NlKHQyLmIpID0gdDMuYikKICBvbiB0MC5iID0g dDMuYjsKICAKLyoKIE5lc3RlZCBMb29wIExlZnQgSm9pbgogICAtPiAgU2VxIFNjYW4gb24g dCB0MAogICAtPiAgTmVzdGVkIExvb3AKICAgICAgICAgSm9pbiBGaWx0ZXI6IChDT0FMRVND RSh0Mi5iKSA9IHQzLmIpCiAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KICAg ICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyB0X2FfYl9pZHggb24gdCB0 MQogICAgICAgICAgICAgICAtPiAgTWVtb2l6ZQogICAgICAgICAgICAgICAgICAgICBDYWNo ZSBLZXk6IHQxLmEKICAgICAgICAgICAgICAgICAgICAgQ2FjaGUgTW9kZTogbG9naWNhbAog ICAgICAgICAgICAgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRfYV9iX2lk eCBvbiB0IHQyCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0g dDEuYSkKICAgICAgICAgLT4gIE1lbW9pemUKICAgICAgICAgICAgICAgQ2FjaGUgS2V5OiB0 My5iLCB0MS5hLCB0MC5hLCB0Mi5hCiAgICAgICAgICAgICAgIENhY2hlIE1vZGU6IGJpbmFy eQogICAgICAgICAgICAgICAtPiAgU3VicXVlcnkgU2NhbiBvbiB0MwogICAgICAgICAgICAg ICAgICAgICBGaWx0ZXI6ICgodDAuYiA9IHQzLmIpIEFORCAodDEuYSA9IHQzLmEpKQogICAg ICAgICAgICAgICAgICAgICAtPiAgVW5pcXVlCiAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTb3J0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0 M18xLmEsIHQzXzEuYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gdCB0M18xCiovCgo= --------------NfCIMOYPlO3CgQQQvatl0IP8--