Re: [HACKERS] Re: [INTERFACES] retrieving varchar size

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: [HACKERS] Re: [INTERFACES] retrieving varchar size
Дата
Msg-id 199804260326.XAA18519@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: [HACKERS] Re: [INTERFACES] retrieving varchar size  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
>
> Byron Nikolaidis <byronn@insightdist.com> writes:
> > Yes, it rings a bell alright, When you execute a multiple query
> > (denoted by semicolans) like "set geqo to 'off'; show datestyle;
> > select * from table", you get that multiple returns and MUST read
> > until you get the 'I'.  If you don't, your screwed the next time you
> > try and read anything cause all that stuff is still in the pipe.
>
> That seems pretty bogus.  What happens if you do
>     select * from table1; select * from table2
> ?  The way the code in libpq looks, I think the response from the
> first select would get lost entirely (probably even cause a memory
> leak).  It's not set up to handle receipt of more than one command
> response in any clean fashion.  We'd need to revise the application
> API to make that work right.

>
> Playing around with psql, it seems that you can't actually get psql
> to submit a multi-command line as a single query; it seems to break
> it up into separate queries.  Which is what libpq can cope with.

Yep, you figured it out.  (See earlier posting.)

I have now thought about the problem some more, and I think an even
better solution would be that if the backend receives multiple commands
in a single query, it just returns the first or last result.  There is
no mechanism in libpq to send a query and get multiple results back, so
why not just return one result.

No need to cound the number of queries sent, and no reason to send empty
queries to the backend looking for the last result.

If you want me to do this for the backend, let me know and I will do it.

First or last result?  What do we return now?

>
> I think we should either forbid multiple commands per PQexec call,
> or fix libpq to handle them properly (and hence be able to return
> a series of PGresults, not just one).
>
> > Question though, I didnt think my request would have caused a major
> > protocol change.  I though that the '-1' would simply be replaced by
> > the correct size?
>
> I assumed we'd want to add the restypmod as a new field in PGresult
> and in the protocol.  But I'm just a newbie.

restypmod may not be available at the time of returning the result, but
the TupleDesc is, and it has the proper atttypmod.

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

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

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: [HACKERS] Re: [INTERFACES] retrieving varchar size
Следующее
От: Bruce Momjian
Дата:
Сообщение: PG-version