Обсуждение: [BUGS] BUG #14834: quote_literal and composite types,different behaviour between sql and plpgsql

Поиск
Список
Период
Сортировка

[BUGS] BUG #14834: quote_literal and composite types,different behaviour between sql and plpgsql

От
dvd@gnx.it
Дата:
The following bug has been logged on the website:

Bug reference:      14834
Logged by:          David Mugnai
Email address:      dvd@gnx.it
PostgreSQL version: 9.4.7
Operating system:   Linux
Description:

I found that `quote_literal` behaviour is wrong when used in a plpgsql
function over a null composite type, let me show:


create type t as (x text);

create function f(val t default null) returns text as $$select quote_literal(val);
$$ language sql stable;

create function f2(val t default null) returns text as $$
declareo text;
beginselect quote_literal(val) into o;return o;
end
$$ language plpgsql;

dvd@[local]/dvd> select f() union all select f2();  f
--------(null)'()'
(2 rows)


If I do not mistake the both the functions should returns NULL;


--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

dvd@gnx.it writes:
> I found that `quote_literal` behaviour is wrong when used in a plpgsql
> function over a null composite type, let me show:

No, there's nothing wrong with quote_literal.  Your example is showing
that plpgsql converts a "null" composite value into a row-of-nulls,
when dealing with a variable of a named composite type (in this case,
the variable is the parameter "val").  This is arguably wrong, but plpgsql
has been doing that for a mighty long time so people are hesitant to
change it.
        regards, tom lane


-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs