psql's is_select_command is naive

Started by Robert Haasover 15 years ago5 messages
#1Robert Haas
robertmhaas@gmail.com

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

#2Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#1)
Re: psql's is_select_command is naive

* 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

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#1)
Re: psql's is_select_command is naive

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

#4Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#3)
Re: psql's is_select_command is naive

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

#5Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#4)
Re: psql's is_select_command is naive

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