Re: feature request

Поиск
Список
Период
Сортировка
От Guillaume Lelarge
Тема Re: feature request
Дата
Msg-id 1314732652.2379.2.camel@localhost.localdomain
обсуждение исходный текст
Ответ на Re: feature request  (Dave Page <dpage@pgadmin.org>)
Ответы Re: feature request  (Dave Page <dpage@pgadmin.org>)
Список pgadmin-support
On Tue, 2011-08-30 at 19:29 +0100, Dave Page wrote:
> On Tue, Aug 30, 2011 at 6:15 PM, Guillaume Lelarge
> <guillaume@lelarge.info> wrote:
> >>
> >> libpq doesn't support multiple resultsets in a single query unfortunately.
> >>
> >
> > As a matter of fact, it does (see
> > http://pgolub.wordpress.com/2009/11/17/script-slicing-by-pgmdd/), and I
> > really want pgAdmin to use this. Still need to find a good UI and some
> > time to work on it :)
> 
> Err, no it doesn't. The blog you've referenced describes how PgMDD
> takes the PostgreSQL 8.3 parser and uses it to pre-parse scripts into
> individual statements on the client, which it then executes
> individually. That's similar to what's being asked for here, but has
> the rather nasty limitation of not understanding PG 8.4+'s grammar.
> 
> Libpq itself only supports a single resultset for multi-part
> statements. Even in 9.1, the docs say:
> 
> The command string can include multiple SQL commands (separated by
> semicolons). Multiple queries sent in a single PQexec call are
> processed in a single transaction, unless there are explicit
> BEGIN/COMMIT commands included in the query string to divide it into
> multiple transactions. Note however that the returned PGresult
> structure describes only the result of the last command executed from
> the string. Should one of the commands fail, processing of the string
> stops with it and the returned PGresult describes the error condition.
> 
> (http://www.postgresql.org/docs/9.1/static/libpq-exec.html#LIBPQ-EXEC-MAIN)
> 
> In other words, only the last resultset is accessible.
> 

You're right for PQexec. And wrong for PQsendQuery, which is the one we
use on the query tool.

And to quote the fine manual :)
(http://www.postgresql.org/docs/9.1/static/libpq-async.html#LIBPQ-PQSENDQUERY):
After successfully calling PQsendQuery, call PQgetResult one or more
times to obtain the results. PQsendQuery cannot be called again (on the
same connection) until PQgetResult has returned a null pointer,
indicating that the command is done. 


-- 
Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com



В списке pgadmin-support по дате отправления:

Предыдущее
От: "Strauch, Sheldon"
Дата:
Сообщение: pgAdmin3 quits unexpectedly on Mac OS/X
Следующее
От: Dave Page
Дата:
Сообщение: Re: feature request