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 1rV7cj-00EyaZ-Lm for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Jan 2024 10:15: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 1rV7ci-00DCSy-0m for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Jan 2024 10:15: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 1rV7ch-00DCSq-Gw for pgsql-hackers@lists.postgresql.org; Wed, 31 Jan 2024 10:15:15 +0000 Received: from mail-vs1-xe29.google.com ([2607:f8b0:4864:20::e29]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rV7ce-004J7W-VY for pgsql-hackers@postgresql.org; Wed, 31 Jan 2024 10:15:14 +0000 Received: by mail-vs1-xe29.google.com with SMTP id ada2fe7eead31-46b1419ad06so428847137.1 for ; Wed, 31 Jan 2024 02:15:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706696112; x=1707300912; darn=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=iwHPVlNdCojpj+ZKA7efm5ZcTn+NTZh3gU1ONk4G28Q=; b=MHOOInXAbPWCzkcgoMyvn9dYXrUSRYayxf7b587cqW7iN9fEMeoqPE1WcD7M83TlYo JYBtRRgNuHnAer4ZfOVuFWNm3X0nlqgRbkLmUQcMl1yaOVGPRmrzbbnlQogcpTReI6v9 AR6YZEOiQqaMOWVdSFi02l2gBovspP6KBsnrZQ67/PRNNAzmfKYZ+EWnqUrTYFuZrDND 3cIF6WiJK1ngQ5dV9WYxu/Rxoyw3Yh9mLTTxGGaii/RNgnINO1XtwjJc7SyWNTJQkTGI xo/SzreKwe82KYVIavmFixwp1CQG5U9SaoN8By3jzAXtR+BIhKzIy0tYWxaS91fkd3ww Oocg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706696112; x=1707300912; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=iwHPVlNdCojpj+ZKA7efm5ZcTn+NTZh3gU1ONk4G28Q=; b=WHGmlcbbndarZEn8/S5u7FbccsDZ/RMqxJNFPsPbk4FFBv+cDns9ghwEL1ze3tAbk0 67jjhBm6ee3ymgqNVIz5rtvMJUaH5unwJ9j2eAl8Ua3C78d2u03qH/0xEdeo+p8f1sO5 AzeKw/KvPrNBaTkV34zm5s38EH46xuBTDrdqMehvvt+bpb8M2kEVScZIWNePga+dQJe6 dRFSE9ASkIpGIfGUewH9lJ9rOm0I6m/TDyNrcb67P+/KU4Zo/IKaPDp58Sb6AdtoP1yk 8aBeFJ/fTp1HCrvMdfge934PS3Nxow4FiaQoBGTBJM/a4kQSV6xDRlAsW+mAaZ6NmAAm 0g1Q== X-Gm-Message-State: AOJu0YxMfA/9DMczijFb2xP6yqB0YZL+NN8fOAA+b1k6084b0Z62fyrF HkOBq9Y0e2jZSeSKij9pjddc6iyHDULGm6+1zBnF/rrXi5+SSzcDnrn+NWVDmfCO6Lu5jcXOpcw QuJPE9Ckj2GwHwWxfnFRbmG3Pabg= X-Google-Smtp-Source: AGHT+IFok1DhpSrw9hXPnRPRuYXLsy+HHBt857b0rQyVu6SHjOoESbp7p34dfqNnT64OYENqxvW2erW/oYK7ejXvdJU= X-Received: by 2002:a05:6102:194a:b0:469:b4d5:ba48 with SMTP id jl10-20020a056102194a00b00469b4d5ba48mr1979168vsb.19.1706696111908; Wed, 31 Jan 2024 02:15:11 -0800 (PST) MIME-Version: 1.0 References: <567ED6CA.2040504@sigaev.ru> <16a7e3aa-24c0-4986-8820-ea2857bd7b6b@postgrespro.ru> <421656a9-5df7-41bb-9d58-1c1edbd5dc3e@postgrespro.ru> <28c727ba-5260-42a8-88b0-4ecdeeca6ef8@postgrespro.ru> <4c1c2c0b-802f-45ae-a7cd-007bfd8957cf@postgrespro.ru> <52f0d302-7963-452f-8c5a-f66d261514eb@postgrespro.ru> <43ad8a48-b980-410d-a83c-5beebf82a4ed@postgrespro.ru> <04ef16eb-46c1-4ce7-9f68-d1c80ef0be81@postgrespro.ru> <59e67a40-95a8-4d74-ae4e-027ea0f59084@postgrespro.ru> <59b77a8a-29d6-4727-bf26-4a30a6a9719a@postgrespro.ru> <32d23d97-d07f-4d44-9933-ba3295fb3ed8@postgrespro.ru> In-Reply-To: From: jian he Date: Wed, 31 Jan 2024 18:15:00 +0800 Message-ID: Subject: Re: POC, WIP: OR-clause support for indexes To: Andrei Lepikhov Cc: Alena Rybakina , Robert Haas , pgsql-hackers@postgresql.org, Alexander Korotkov , Peter Geoghegan , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Ranier Vilela , Tomas Vondra , Peter Eisentraut Content-Type: multipart/mixed; boundary="0000000000007d869b06103b2713" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007d869b06103b2713 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jan 31, 2024 at 10:55=E2=80=AFAM jian he wrote: > > based on my understanding of > https://www.postgresql.org/docs/current/xoper-optimization.html#XOPER-COM= MUTATOR > I think you need move commutator check right after the `if > (get_op_rettype(opno) !=3D BOOLOID)` branch > I was wrong about this part. sorry for the noise. I have made some changes (attachment). * if the operator expression left or right side type category is {array | domain | composite}, then don't do the transformation. (i am not 10% sure with composite) * if the left side of the operator expression node contains volatile functions, then don't do the transformation. * some other minor cosmetic changes. --0000000000007d869b06103b2713 Content-Type: application/octet-stream; name="v14_comments.no-cfbot" Content-Disposition: attachment; filename="v14_comments.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls1mphkk0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDZiNGIwMGViLi5mYjE5OTIzMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZXhwci5jCkBAIC0yMDIsNiArMjAyLDcgQEAgdHJhbnNmb3JtQm9vbEV4cHJPcihQ YXJzZVN0YXRlICpwc3RhdGUsIEJvb2xFeHByICpleHByKQogCQlPckNsYXVzZUdyb3VwS2V5CQlo YXNoa2V5OwogCQlib29sCQkJCQlmb3VuZDsKIAkJT2lkCQkJCQkJb3BubzsKKwkJVFlQQ0FURUdP UlkgCQkJY2F0ZWdvcnk7CiAJCU5vZGUJCQkJICAgKmxlZnRvcCwgKnJpZ2h0b3A7CiAKIAkJLyog QXQgZmlyc3QsIHRyYW5zZm9ybSB0aGUgYXJnIGFuZCBldmFsdWF0ZSBjb25zdGFudCBleHByZXNz aW9ucy4gKi8KQEAgLTI0Myw3ICsyNDQsNyBAQCB0cmFuc2Zvcm1Cb29sRXhwck9yKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQm9vbEV4cHIgKmV4cHIpCiAKIAkJCWlmICghT2lkSXNWYWxpZChvcG5vKSkK IAkJCXsKLQkJCQkvKiBDb21tdXRlciBkb2Vzbid0IGV4aXN0LCB3ZSBjYW4ndCByZXZlcnNlIHRo ZSBvcmRlciAqLworCQkJCS8qIGNvbW11dGF0b3IgZG9lc24ndCBleGlzdCwgd2UgY2FuJ3QgcmV2 ZXJzZSB0aGUgb3JkZXIgKi8KIAkJCQlvcl9saXN0ID0gbGFwcGVuZChvcl9saXN0LCBvcnF1YWwp OwogCQkJCWNvbnRpbnVlOwogCQkJfQpAQCAtMjYyLDYgKzI2MywzMyBAQCB0cmFuc2Zvcm1Cb29s RXhwck9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQm9vbEV4cHIgKmV4cHIpCiAJCQljb250aW51ZTsK IAkJfQogCisJCS8qIHRyYW5zZm9ybWF0aW9uIG9ubHkgd29ya3Mgd2l0aCBib3RoIHNpZGUgdHlw ZSBpcyBub3QgeyBhcnJheSB8IGNvbXBvaXN0ZSB8IGRvbWFpbiB9ICovCisJCWNhdGVnb3J5ID0g VHlwZUNhdGVnb3J5KGV4cHJUeXBlKGNvbnN0X2V4cHIpKTsKKwkJaWYgKGNhdGVnb3J5ID09IFRZ UENBVEVHT1JZX0FSUkFZIHx8IGNhdGVnb3J5ID09IFRZUFRZUEVfRE9NQUlOCisJCQl8fCBjYXRl Z29yeSA9PSBUWVBUWVBFX0NPTVBPU0lURSkKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3Jf bGlzdCwgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJY2F0ZWdvcnkgPSBUeXBlQ2F0 ZWdvcnkoZXhwclR5cGUobmNvbnN0X2V4cHIpKTsKKwkJaWYgKGNhdGVnb3J5ID09IFRZUENBVEVH T1JZX0FSUkFZIHx8IGNhdGVnb3J5ID09IFRZUFRZUEVfRE9NQUlOCisJCQl8fCBjYXRlZ29yeSA9 PSBUWVBUWVBFX0NPTVBPU0lURSkKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlzdCwg b3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJICogaWYgdGhlIG5vbi1jb25z dCAobGVmdCBzaWRlIG9mIG9wZXJhdG9yIGV4cHJlc3Npb24pIGNvbnRhaW4gdm9sdGFpbiBmdW5j dGlvbnMKKwkJICogdGhlbiB3ZSBjYW5ub3QgZG8gdGhlIHRyYW5zZm9ybWF0aW9uCisJCSovCisJ CWlmIChjb250YWluX3ZvbGF0aWxlX2Z1bmN0aW9ucygoTm9kZSAqKSBuY29uc3RfZXhwcikpCisJ CXsKKwkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsIG9ycXVhbCk7CisJCQljb250aW51ZTsK KwkJfQorCiAJCS8qCiAJCSogQXQgdGhpcyBwb2ludCB3ZSBkZWZpbml0ZWx5IGhhdmUgYSB0cmFu c2Zvcm1hYmxlIGNsYXVzZS4KIAkJKiBDbGFzc2lmeSBpdCBhbmQgYWRkIGludG8gc3BlY2lmaWMg Z3JvdXAgb2YgY2xhdXNlcywgb3IgY3JlYXRlIG5ldwpAQCAtMzMzLDcgKzM2MSw3IEBAIHRyYW5z Zm9ybUJvb2xFeHByT3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBCb29sRXhwciAqZXhwcikKIAkJZWxz ZQogCQkJYXJyYXlfdHlwZSA9IEludmFsaWRPaWQ7CiAKLQkJaWYgKGFycmF5X3R5cGUgIT0gSW52 YWxpZE9pZCkKKwkJaWYgKE9pZElzVmFsaWQoYXJyYXlfdHlwZSkpCiAJCXsKIAkJCS8qCiAJCQkg KiBPSzogY29lcmNlIGFsbCB0aGUgcmlnaHQtaGFuZCBub24tVmFyIGlucHV0cyB0byB0aGUgY29t bW9uCkBAIC0zOTIsOCArNDIwLDEwIEBAIHRyYW5zZm9ybUJvb2xFeHByT3IoUGFyc2VTdGF0ZSAq cHN0YXRlLCBCb29sRXhwciAqZXhwcikKIAkJZWxzZQogCQl7CiAJCQkvKgotCQkJICogVGhpcyBw YXJ0IHdvcmtzIG9uIGludGFycmF5IHRlc3QgKE9SIHRoZXJlIGlzIG1hZGUgb24KLQkJCSAqIGVs ZW1lbnRzIG9mIGEgY3VzdG9tIHR5cGUpCisJCQkgKiBJZiB0aGUgY29uc3Qgbm9kZSAocmlnaHQg c2lkZSBvZiBvcGVyYXRvciBleHByZXNzaW9uKSAncyB0eXBlCisJCQkgKiAgZG9uJ3QgaGF2ZSDi gJx0cnVl4oCdIGFycmF5IHR5cGUsIHRoZW4gd2UgY2Fubm5vdCBkbyB0aGUgdHJhbnNmb3JtYXRp b24uCisJCQkgKiBXZSBzaW1wbHkgY29uY2F0ZW5hdGUgdGhlIGV4cHJlc3Npb24gbm9kZS4KKwkJ CSAqCiAJCQkgKi8KIAkJCWxpc3RfZnJlZShlbnRyeS0+Y29uc3RzKTsKIAkJCW9yX2xpc3QgPSBs aXN0X2NvbmNhdChvcl9saXN0LCBlbnRyeS0+ZXhwcnMpOwo= --0000000000007d869b06103b2713--