Обсуждение: psql's is_select_command is naive

Поиск
Список
Период
Сортировка

psql's is_select_command is naive

От
Robert Haas
Дата:
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


Re: psql's is_select_command is naive

От
Stephen Frost
Дата:
* 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

Re: psql's is_select_command is naive

От
Tom Lane
Дата:
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


Re: psql's is_select_command is naive

От
Robert Haas
Дата:
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


Re: psql's is_select_command is naive

От
Bruce Momjian
Дата:
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