OSDN Git Service

Behave correctly if INSERT ... VALUES is decorated with additional clauses.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 3 Oct 2010 00:02:27 +0000 (20:02 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 3 Oct 2010 00:02:27 +0000 (20:02 -0400)
commit3a13f12b3a18da0a61571cb134fdecea03a10d6f
treee72d2b53c5718e249fe85b879e31ba2cc463f70c
parente77f605d431c488983d6c96cb3513c691bf1907c
Behave correctly if INSERT ... VALUES is decorated with additional clauses.

In versions 8.2 and up, the grammar allows attaching ORDER BY, LIMIT,
FOR UPDATE, or WITH to VALUES, and hence to INSERT ... VALUES.  But the
special-case code for VALUES in transformInsertStmt() wasn't expecting any
of those, and just ignored them, leading to unexpected results.  Rather
than complicate the special-case path, just ensure that the presence of any
of those clauses makes us treat the query as if it had a general SELECT.
Per report from Hitoshi Harada.
src/backend/parser/analyze.c