Skip site navigation (1) Skip section navigation (2)

BUG #4767: create operator - negator doesn't work

From: "fduerr" <fduerr(at)gmx(dot)de>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #4767: create operator - negator doesn't work
Date: 2009-04-21 11:04:01
Message-ID: 200904211104.n3LB419B076817@wwwmaster.postgresql.org (view raw or flat)
Thread:
Lists: pgsql-bugs
The following bug has been logged online:

Bug reference:      4767
Logged by:          fduerr
Email address:      fduerr(at)gmx(dot)de
PostgreSQL version: 8.3.x 8.4.b1
Operating system:   Debian Lenny
Description:        create operator - negator doesn't work
Details: 

Hi,
my apologies beforehand in case i'm just too stupid to understand the
documentation...
i understand, that the operator's negator argument specifies the operator
that, when applied with the same operands, yields the inverted result.
So thats what i did:

CREATE OR REPLACE FUNCTION eq_int_bool(INTEGER, BOOLEAN) RETURNS BOOLEAN AS
 'SELECT CAST($1 AS BOOLEAN)=$2;' LANGUAGE SQL IMMUTABLE;
CREATE OPERATOR = (
 LEFTARG=INTEGER,
 RIGHTARG=BOOLEAN,
 PROCEDURE=eq_int_bool,
 COMMUTATOR= = ,
 NEGATOR= <> 
);

And thats, what i got:

SELECT 1=false;
 ?column? 
----------
 f
(1 row)

SELECT 1<>false;
8.3.x: ERROR: cache lookup failed for function 0
8.4b1: ERROR: operator is only a shell: integer <> boolean

The workaround is, of course, to define an operator with '<>' as commutator
that returns the negated result. Still i wonder: is it me, the documentation
or pg?

Responses

pgsql-bugs by date

Next:From: grouviDate: 2009-04-21 11:46:42
Subject: BUG #4768: FATAL:could not reattach to shared memory:487
Previous:From: RobertDate: 2009-04-21 10:55:58
Subject: BUG #4766: i cant setup a program

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group