Обсуждение: psql's is_select_command is naive
It knows that queries beginning with "select" or "values" are select commands, but it seems not to be clued in about "table" and "with". For now, we can probably get by with just adding those to the list of things it checks for. But I wonder what we'll do about this if we ever get CTEs for insert/update/delete statements... you'd have to parse the whole darn thing to figure out whether it was WITH...SELECT or WITH...INSERT or WITH...INSERT...RETURNING. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise Postgres Company
* Robert Haas (robertmhaas@gmail.com) wrote: > For now, we can probably get by with just adding those to the list of > things it checks for. But I wonder what we'll do about this if we > ever get CTEs for insert/update/delete statements... you'd have to > parse the whole darn thing to figure out whether it was WITH...SELECT > or WITH...INSERT or WITH...INSERT...RETURNING. Would be nice if it could just ask the backend if it's planning to send back some data. :) Stephen
Robert Haas <robertmhaas@gmail.com> writes: > It knows that queries beginning with "select" or "values" are select > commands, but it seems not to be clued in about "table" and "with". What we really ought to do IMO is throw out the entire current implementation of fetch_count. If libpq exposed access to the protocol-level fetch count, we could implement it without this cursor kluge. regards, tom lane
On Wed, May 26, 2010 at 10:35 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Robert Haas <robertmhaas@gmail.com> writes: >> It knows that queries beginning with "select" or "values" are select >> commands, but it seems not to be clued in about "table" and "with". > > What we really ought to do IMO is throw out the entire current > implementation of fetch_count. If libpq exposed access to the > protocol-level fetch count, we could implement it without this > cursor kluge. I suspect that would make a lot of people very happy. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise Postgres Company
Robert Haas wrote: > On Wed, May 26, 2010 at 10:35 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Robert Haas <robertmhaas@gmail.com> writes: > >> It knows that queries beginning with "select" or "values" are select > >> commands, but it seems not to be clued in about "table" and "with". > > > > What we really ought to do IMO is throw out the entire current > > implementation of fetch_count. ?If libpq exposed access to the > > protocol-level fetch count, we could implement it without this > > cursor kluge. > > I suspect that would make a lot of people very happy. I have added the following TODO: Fix FETCH_COUNT to handle SELECT ... INTO and WITH queries * http://archives.postgresql.org/pgsql-hackers/2010-05/msg01565.php * http://archives.postgresql.org/pgsql-bugs/2010-05/msg00192.php -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com