Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h1JSN-00057R-72 for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Mar 2019 23:26:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1h1JSM-00022q-0N for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Mar 2019 23:26:42 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h1JSL-0001wv-Kd for pgsql-hackers@lists.postgresql.org; Tue, 05 Mar 2019 23:26:41 +0000 Received: from sss.pgh.pa.us ([66.207.139.130]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h1JSJ-0000Ny-8k for pgsql-hackers@lists.postgresql.org; Tue, 05 Mar 2019 23:26:40 +0000 Received: from sss1.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.4/8.14.4) with ESMTP id x25NQapv024447; Tue, 5 Mar 2019 18:26:37 -0500 From: Tom Lane To: Paul Ramsey cc: PostgreSQL Hackers Subject: Re: Allowing extensions to supply operator-/function-specific info In-reply-to: References: <15193.1548028093@sss.pgh.pa.us> <6953.1548297558@sss.pgh.pa.us> <6044.1548524131@sss.pgh.pa.us> <19993.1548697885@sss.pgh.pa.us> <7671.1551135674@sss.pgh.pa.us> <11051.1551139751@sss.pgh.pa.us> <14747.1551219541@sss.pgh.pa.us> <91BAE1F4-7C16-4F87-849F-B01175A8D7D8@cleverelephant.ca> <17244.1551226168@sss.pgh.pa.us> <74C11775-67A7-48D2-B1E3-24C52A686F86@cleverelephant.ca> <15086.1551310830@sss.pgh.pa.us> <24277.1551320775@sss.pgh.pa.us> <26156.1551734021@sss.pgh.pa.us> <31607.1551739943@sss.pgh.pa.us> <48F6F422-4! ! F50-4DA6-A6A1-13C4AA1B9D27@cleverelephant.ca> <914.1551745379@sss.pgh.pa.us> Comments: In-reply-to Paul Ramsey message dated "Tue, 05 Mar 2019 11:58:08 -0800" MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-ID: <24445.1551828396.1@sss.pgh.pa.us> Content-Transfer-Encoding: quoted-printable Date: Tue, 05 Mar 2019 18:26:36 -0500 Message-ID: <24446.1551828396@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk Paul Ramsey writes: > Thanks for the patch, I=E2=80=99ve applied and smoothed and taken your a= dvice on schema-qualified lookups as well. Hm, I think your addition of this bit is wrong: + /* + * Arguments were swapped to put the index value on th= e + * left, so we need the commutated operator for + * the OpExpr + */ + if (swapped) + { + oproid =3D get_commutator(oproid); + if (!OidIsValid(oproid)) PG_RETURN_POINTER((Node *)NULL); + } We already did the operator lookup with the argument types in the desired order, so this is introducing an extra swap. The only reason it appears to work, I suspect, is that all your index operators are self-commutators. regards, tom lane