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 1vvMbK-00Fi2n-39 for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Feb 2026 21:39:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vvMbI-008iJk-2n for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Feb 2026 21:39:20 +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.96) (envelope-from ) id 1vvMbI-008iJc-1j for pgsql-hackers@lists.postgresql.org; Wed, 25 Feb 2026 21:39:20 +0000 Received: from mail-yw1-x1129.google.com ([2607:f8b0:4864:20::1129]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vvMbE-00000001BMU-3V0A for pgsql-hackers@lists.postgresql.org; Wed, 25 Feb 2026 21:39:19 +0000 Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-79801df3e42so2746617b3.0 for ; Wed, 25 Feb 2026 13:39:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772055556; cv=none; d=google.com; s=arc-20240605; b=O7PxwQ3oJbx0mzcCzd/G8Ubwv+NO/Pw9TYQpg6+VQOBmUxg21y45ZS2p/wgjWJ1d0K VNcexLodurGEaVLvMpSTVD8rUFcx9OWa6NimIvvIbNJZwqY5sm+kVzJOlCtBoRdXSKIJ kxacLbNoCCfL7ZSvQFPqXoPJPL9OrFeleEaejMVrUXAxkmBHNE3DPDPPGbQt3kF1G3kf tIkH6Kv2SEIrmg490xTtAXPkwJxxMqKU5g2SpEFXpnTYjX93iG4Etpu1b5BaFjm1IhwT gEn7Xcg9a/270hUQZ8kFPFJlrO6kUQzB5MDW3qLuP1FWK8VMxj6dXOOXPM+vctFnOZSz AK7g== 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=o70NN37H7/yNnKAOUaCyIqx2H0t9cgiy7lYdog0ed7E=; fh=IrCdxHxMJx3PaUJMxCcomtMrBs6dAgv2VKgKkJ9zxhk=; b=dKf1Gaqewz8JlfYw4DnCcqkJuuFs0g70BgrdqgyX3NUv2VWd7ysdkZG6IO9VnAQuy2 Kl/mEFnQiWTxfDeOEqMnCGn5nxkcOPfGNj9E/WH6wdPmuVmg44Hag9WfOHmVBUHnNcLJ 2v3JgBP1W4Jjn3OkddqCv4ZSAOfWg8u5WlOFXY14Nd+9Or02TpR4skdQ5W0j4PDFZNrH PSbC5/MK2HrFz63wLEv5SraSxgjseS6M03/wYeKU1r+jO/6DBWhJlMJxAe/kR2k0Eyx+ LfSKkHbBXymsinHq2iFwvDojJ3EpdTNV5GYyff+DdDN/ZCg4ayjjBXp8F72Q46URU6oF /r1Q==; 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=percona.com; s=google; t=1772055556; x=1772660356; 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=o70NN37H7/yNnKAOUaCyIqx2H0t9cgiy7lYdog0ed7E=; b=SDeItEOiokppalJY2rdncdRb4m5RwNtYr8hAriCoZbdlWKa+Y++Dwi2cwmwiPzblDc C+0cxeSsumjKdWWEHcM8HBUXOem/0ADnl2T0n8fGDN18NcFMls79wBbYXcQMArb1LMpp cqdVRd6j03y7/yPfgieZvLSZYjEDtQoCQwn6Q= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772055556; x=1772660356; 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=o70NN37H7/yNnKAOUaCyIqx2H0t9cgiy7lYdog0ed7E=; b=pCdIoLaibEsMQcozmjiaE1lpdOwXgx9Y0YqpP8AJbPC8MZvfoTjFa5VjW1HjsPBNEC 5MrdxVmiKY/zM51gb++QzmrDctHI/18KVXXQrsh9ZIQ40Ym/bhhWRLAHfawCtlPwRWLK Dg7off6efzfh6h1x+U7nWlcyGSg+kgiqLubeGpGcH6bdwXg2sZL9RuOqlQcyPse4uPFO RxKxMISxS96qK8NE8cu1s9P6pD+w6sbtBNS4TZUn4RvmOvt1+A5iSGk2KXrKA5oIza/6 T06gu96lrsTWHw6XwbX/0WjB4LeWTKzhfTGNehzEAPbGUl2V4lZNQTLFshjKE8iePNP0 eIQA== X-Forwarded-Encrypted: i=1; AJvYcCUsBtCvNGGuHOOj3jaN//2LdZO0Gly8G/5yFJ/ag+Gt/9ztlwqtUKrdcmvbD2kGITol/jQ+cg77CG2VpcbB@lists.postgresql.org X-Gm-Message-State: AOJu0YzBr4Wd0BbMXOP9ln53xyXMIoIsMTNyJhYxogfcoUnpU+L4AgHU m+9+N/g12PC+QhAvlSBUCltLBzKeaAhXXrDz+PbTa3gYlNT+Kl6D72Sc0HRKZirG+s7JGsA8WlX OjAveQeSfKT/qHF6HQCA0VSKly1vhSx3eSX4gSScc/yC2M3JMnu6IKwRPNZDpmpnuHA/O7KBW7D Fxqqp+ST/qzq2YwAQEIIC7JSHfL5mVySHnRy0uJ07/qWtip5oPaSy7kYQLDwQdxnIMAejHCx4+y GyZUyPi9jHy5SByh+Dcg3fu/eQs4PM/cTakzseEMZo9bs5fBHGlTcYY/OVzzVFeI9g= X-Gm-Gg: ATEYQzy9vYAWs2vNm74i/7n4g2prLonoM0nbyhYjkuePwBpGYrfuLZKlvEV+j8e1adR 0MCciVh/TWPngguq+9GLlQZ+hiIULZV8q9AIDigOWpVoquj+4VtFppEG+EveHDMHPIuj/wMOFN3 4lEPTko4/vVOSjqa2MmqKJ7YQuoHmPy6q5rYu/L00W0TvN+65Nkuj8I8Ghdz/u4zWLODAGUne/Q Gt3t2rJgiA/CwLBbvPjOaUZmLem+W29JwPjC/3WmnqkGr4y2Q3vI5xHBLrwjTfLus5SHNstZ6CQ Nl2/punUi0oA3NHjeflUaxlhVSSSkfOw93S/VhVrn7TF9ocvPdrtjzE1RCPrW/E8QEUEAYu3Ti3 L+84= X-Received: by 2002:a05:690c:c4cb:b0:794:c15e:df6b with SMTP id 00721157ae682-79874d6f474mr5664067b3.31.1772055556374; Wed, 25 Feb 2026 13:39:16 -0800 (PST) MIME-Version: 1.0 References: <7db341e0-fbc6-4ec5-922c-11fdafe7be12@tantorlabs.com> <988e3168-6096-488a-bb42-787e1e8c21a4@tantorlabs.com> <21FF6A0B-886F-4132-B6A6-0F4E934B4CEE@Outlook.com> <8ee9d903-bb13-434c-8145-b3769bf2b3cb@tantorlabs.com> <9e3054ae-1c5d-46dd-9b6a-7fb67764b076@tantorlabs.com> In-Reply-To: <9e3054ae-1c5d-46dd-9b6a-7fb67764b076@tantorlabs.com> From: Zsolt Parragi Date: Wed, 25 Feb 2026 21:39:05 +0000 X-Gm-Features: AaiRm53nrbY6sIz_WqnZkm4dgZzQsmCjJ9NBGCJLRVLpLt1lC5qJ8zJ1_SzB6YY Message-ID: Subject: Re: Hash-based MCV matching for large IN-lists To: Ilia Evdokimov Cc: Tatsuya Kawata , David Geier , Chengpeng Yan , "pgsql-hackers@lists.postgresql.org" Content-Type: text/plain; charset="UTF-8" X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: percona,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hello + hashContext.hash_fcinfo = hash_fcinfo; + hashContext.op_is_reversed = !hash_mcv; + hashContext.insert_mode = true; Are you sure about op_is_reversed, isn't it backwards, shouldn't it be = hash_mcv instead? See the following testcase: CREATE TABLE test_cross_type_bug (val float4); INSERT INTO test_cross_type_bug SELECT v FROM generate_series(1, 200) AS v, generate_series(1, 50); ALTER TABLE test_cross_type_bug ALTER COLUMN val SET STATISTICS 200; ANALYZE test_cross_type_bug; SELECT string_agg(v::text, ', ') AS in_list FROM generate_series(1, 200) AS gs(v) \gset EXPLAIN SELECT * FROM test_cross_type_bug WHERE val = ANY(ARRAY[:in_list]::float4[]); EXPLAIN SELECT * FROM test_cross_type_bug WHERE val = ANY(ARRAY[:in_list]::float8[]); DROP TABLE test_cross_type_bug;