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