Re: Error: Operator does not exist: "char"=integer

From: Julius Tuskenis <julius(dot)tuskenis(at)gmail(dot)com>
To:
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Error: Operator does not exist: "char"=integer
Date: 2008-12-18 12:49:29
Message-ID: 494A46D9.8050505@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Raymond O'Donnell rašė:
> A lot of previously automatic casts were removed in the 8.3 series -
> this is possibly one of them.
>
> You now need to cast explicitly in such cases, e.g.
>
> select '5'::integer;
>
> Ray.
>
That is a good advice and a good practice. But the solution usually
takes time. For a quick (temporary) solution you could write your own
operator for handling "char" = integer cases.

I had to do it once for an "integer ILIKE text" operator:

CREATE OR REPLACE FUNCTION of_integer_ilike_text(prm_integer integer,
prm_text text)
RETURNS boolean AS
$BODY$BEGIN
RETURN prm_integer::text ~~* prm_text ;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION of_integer_ilike_text(integer, text) OWNER TO useris;

CREATE OPERATOR ~~(
PROCEDURE = of_integer_ilike_text,
LEFTARG = int4,
RIGHTARG = text);

I'm sure you'll manage to do this for "text = integer";

Julius Tuskenis

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message gerhard 2008-12-18 13:29:52 DELETE running at snail-speed
Previous Message Julius Tuskenis 2008-12-18 12:40:39 Re: SQL plan in functions