On 1/14/14, 12:41 AM, Florian Pflug wrote:
In fact, after reading the documentation on SELECT ... INTO, I'm convinced the
the whole consistent_into thing is a bad idea. The documentation states clearly
that

   For INSERT/UPDATE/DELETE with RETURNING, PL/pgSQL reports an error for more 
than
   one returned row, even when STRICT is not specified. This is because there 
is no
   option such as ORDER BY with which to determine which affected row should be
   returned.

It therefor isn't an oversight that SELECT ... INTO allows multiple result rows
but INSERT/UPDATE/DELETE forbids them, it's been done that way on purpose and
for a reason.

Yeah, it does state that. But it's a BS reason. In addition to ORDER BY, SELECT also has a LIMIT which you can use to get the "first row" behaviour. There's no way to go to the more sane behaviour from what we have right now.

When I've worked with PL/PgSQL, this has been a source of a few bugs that would have been noticed during testing if the behaviour of INTO wasn't as dangerous as it is right now. Yes, it breaks backwards compatibility, but that's why there's a nice GUC. If we're not going to scrap PL/PgSQL and start over again, we are going to have to do changes like this to make the language better. Also I think that out of all the things we could do to break backwards compatibility, this is closer to "harmless" than "a pain in the butt".


Regards,
Marko Tiikkaja


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

Reply via email to