On Sat, 24 Nov 2007 21:17:39 -0500 Tom Lane wrote:
> "Andreas 'ads' Scherbaum" <adsmail@wars-nicht.de> writes:
> > we have some plpgsql functions which use quote_literal() regardless of
> > the data type. With Beta 3 this does not work anymore[1].
>
> If you're unwilling to fix your application, you can hack around that
> for yourself.
>
> regression=# select quote_literal(42);
> ERROR: function quote_literal(integer) does not exist
> LINE 1: select quote_literal(42);
> ^
> HINT: No function matches the given name and argument types. You might need to add explicit type casts.
>
> regression=# create function quote_literal(anyelement) returns text as $$
> regression$# select pg_catalog.quote_literal($1 :: pg_catalog.text)
> regression$# $$ language sql;
> CREATE FUNCTION
>
> regression=# select quote_literal(42);
> quote_literal
> ---------------
> '42'
> (1 row)
Already had a similar function in my test case, but yours is more
elegant. I also think, that we will fix our applications or at least
most of them.
But that's not the point: more people will run into this problem and
this looks like a showstopper for updating to 8.3.
By the way, the function is named quote_literal(), not quote_text().
From my point of view i expect to get everything correctly quoted,
what's feeded as input into this function. Given the fact, that
previous versions accepted every input without notice about the
implicit cast, i don't see not so much blame in the application.
Kind regards
-- Andreas 'ads' Scherbaum
PostgreSQL User Group Germany