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 1tzCSD-00GZKg-Vy for pgsql-hackers@arkaria.postgresql.org; Mon, 31 Mar 2025 10:33:18 +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 1tzCSC-003lwA-N6 for pgsql-hackers@arkaria.postgresql.org; Mon, 31 Mar 2025 10:33:16 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tzCSC-003lvp-DS for pgsql-hackers@lists.postgresql.org; Mon, 31 Mar 2025 10:33:16 +0000 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tzCSA-0027IW-2E for pgsql-hackers@postgresql.org; Mon, 31 Mar 2025 10:33:15 +0000 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-43cf257158fso30545515e9.2 for ; Mon, 31 Mar 2025 03:33:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743417193; x=1744021993; darn=postgresql.org; h=content-transfer-encoding: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=LznIRZre8nrJLuxN5yBdv0E/CsSTEZKOpgKWbJe2frs=; b=K+hIQmpMM8uaXDi/YnouFVuuB7PhljusAlDCTT1xKk370wj3ZKjgfODYCAoKhrlWe0 4anQ9NYIIVUcsndKWyKlmkOC1WNtByHD/HxpVwddlhDNfI5YGZiyJD0WcRyFlpm9KKSp PNww5qS+l5pAXijjM2T15vBzNC2hxA/J+vFFPh1jHU1VtsUKscR7XdX0JDw38HqR+Pqc FiErBpMVGxJ5dAoi54g0O7mhE46lRIohHAddt5hM49IiqwEYZ4GZwCwY5DgtrV4s0DgM B7vp6xvDoZxjQAoR8r/q3dnCGFfkz+BeV60eC+yU/DNXRy03kKCvSMlMywv4vdFuOvr/ EExA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743417193; x=1744021993; h=content-transfer-encoding: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=LznIRZre8nrJLuxN5yBdv0E/CsSTEZKOpgKWbJe2frs=; b=n8TNMpRpHCMlWvhKxoVFRWmlNF7aSAcSBixBWB0Brtn+otLJ5L+J4GygdocRaFkSYJ Y9ytjaJCgT4C0a94rM+snD+dDfQnbcskk5BqpkGTqrJIik5PPxyvAPBGBTjCeTgHTfED Rl6x5d88ftlvgMm5Vo7viH2qc44cTURiTKuuTFNtc5m/qrgtiJqKmsRbCG6ueKX0dIjk 1dTgP6AZVWTzC1P2rVJv1Be3X/L2N5E2C7KX/PZbG1NnpHJmu/1c7LB72nyh5v2Rhii1 i6hB7+VbFnIKnhVXNIcRvq+ypACFB8pk/Mvp9c32ym0T6NhumNxuK0asuRF/UwhuqagV c+5Q== X-Forwarded-Encrypted: i=1; AJvYcCWDYmCnMFNv3yvjSdzx7N40SiEI8qsgFVRex5qhzFzLb/5kOJlOThyivvSPyv0XwwTAAuU3BXgMOW6uD7LI@postgresql.org X-Gm-Message-State: AOJu0Yw+jwNZZhfiH+57FORNEzGfGYSeyYaxGfHXASNocHywTQj/jiO5 C8pGWnNMlVcS/hIrhhio3twSpLsiLIrgystqFugSO6kX+Orv3VRi X-Gm-Gg: ASbGncu3Surh9S/hceqqPsIjVjutMNZ8hsHdWR36npAps2nm6cWRmp2IFCX2BMrbwzK aAAXZg8daKzjDv+ZbOaIbC/KZDv0AIqcyn/nWl4ID/ZYLZS+7maTETD1Yx62ciWA7ux0mI7zP8w 7DixJxMKIGjUTSC6TYnCr79EWE8yOvX5CMuQlG0q+a41kU6xGA1aSU+MZ8bmSpIfM3a2Ioxk0SV VoP6s1wFNunIpAEuUgfWjuWTRFHlPGnA/zwVtZ+V06ppSdGjZrtEFEIG1Ry3sZPqI5OnXHA6rY4 oMCNMZq4J7sv7eHDTOCa2TLUN2NVHIT+1MIgy8fPOlwL8gQL/ZjghfJv+vEnrlKy8B/Po2ZKniJ tVfU= X-Google-Smtp-Source: AGHT+IEkUnzJu2izoiU9DturB9VUkFSUZrQ929e4Ukv93qTuCXT5iuYiS67yf5tnJrmnX9EFcP08OA== X-Received: by 2002:a05:6000:2a5:b0:391:31c8:ba58 with SMTP id ffacd0b85a97d-39c120cb82amr7365184f8f.10.1743417193090; Mon, 31 Mar 2025 03:33:13 -0700 (PDT) Received: from [192.168.0.89] (84.123.232.230.dyn.user.ono.com. [84.123.232.230]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39c0b7a3d66sm10773894f8f.81.2025.03.31.03.33.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 31 Mar 2025 03:33:12 -0700 (PDT) Message-ID: Date: Mon, 31 Mar 2025 12:33:12 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Memoize ANTI and SEMI JOIN inner To: Richard Guo Cc: David Rowley , PostgreSQL-development References: <60bf8d26-7c7e-4915-b544-afdb9020011d@gmail.com> <95586c5d-2632-4f1c-bfb9-4c391f260de4@gmail.com> <1b356b61-3a2a-490a-bf9a-6340a1ec004a@gmail.com> Content-Language: en-AU From: Andrei Lepikhov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On 3/31/25 12:18, Richard Guo wrote: > On Mon, Mar 31, 2025 at 6:46 PM Andrei Lepikhov wrote: > Nested Loop > -> Seq Scan on t t2 > -> Nested Loop > -> Seq Scan on t t1 > -> Subquery Scan on t3 > Filter: ((t2.a = t3.a) AND (t1.b = t3.b)) > -> Seq Scan on t t3_1 > (7 rows) > > t3's ppi_clauses includes "t2.a = t3.a" and "t1.b = t3.b", while t1/t3 > join's restrictlist only includes "t1.b = t3.b". I attempted to make your query ab it closer to our case: SET enable_mergejoin = f; SET enable_hashjoin = f; SET enable_material = f; CREATE INDEX ON t(a); explain (costs off) select * from t t1 join t t2 on EXISTS (select *, t1.a+t2.a as x from t t3 WHERE t2.a = t3.a AND t1.b = t3.b); and I don't get the case. As I see, ANTI/SEMI join just transforms to the regular join and it is still not the case. May you be more specific? -- regards, Andrei Lepikhov