Re: Error: Operator does not exist: "char"=integer - Mailing list pgsql-general

From Julius Tuskenis
Subject Re: Error: Operator does not exist: "char"=integer
Date
Msg-id 494A46D9.8050505@gmail.com
Whole thread Raw
In response to Re: Error: Operator does not exist: "char"=integer  (Raymond O'Donnell <rod@iol.ie>)
Responses Re: Error: Operator does not exist: "char"=integer
List 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



pgsql-general by date:

Previous
From: Julius Tuskenis
Date:
Subject: Re: SQL plan in functions
Next
From: gerhard
Date:
Subject: DELETE running at snail-speed