Re: BUG #13805: plpgsql execute using expression evaluate wrong
| От | David Gould |
|---|---|
| Тема | Re: BUG #13805: plpgsql execute using expression evaluate wrong |
| Дата | |
| Msg-id | 20151207220847.4da716e1@engels обсуждение исходный текст |
| Ответ на | BUG #13805: plpgsql execute using expression evaluate wrong (amutu@amutu.com) |
| Ответы |
Re: BUG #13805: plpgsql execute using expression evaluate wrong
Re: BUG #13805: plpgsql execute using expression evaluate wrong |
| Список | pgsql-bugs |
On Tue, 08 Dec 2015 03:54:44 +0000
amutu@amutu.com wrote:
> execute $$select ('$1 month')::interval $$ into rt2 using n;
> raise notice 'rt2 : %',rt2;
>=20
> execute $$select ($1::varchar || ' month')::interval $$ into rt2 using n;
> raise notice 'rt2 : %',rt2;
> end;
> NOTICE: rt2 : 1 mon-----wrong=EF=BC=8Cshould 4 mons
> NOTICE: rt2 : 4 mons
You may have found a bug, but if so, it is not where you think it is. The
expression: '$1 month' is a text literal. PL/PGsql does not interpolate $n
like a shell, it only does the substitution where a variable could
ordinarily exist.
However, it does seem a little odd that the literal syntax for
intervals accepts the '$':
postgres=3D# select '$1 month'::interval, '$4 month'::interval;
interval | interval=20
----------+----------
1 mon | 4 mons
(1 row)
I would have expected it to raise an error. The documentation does not shed
any light on this. Anyone?
-dg=20
--=20
David Gould 510 282 0869 daveg@sonic.net
If simplicity worked, the world would be overrun with insects.
В списке pgsql-bugs по дате отправления: