Re: Number of updated rows with LibPQ
От | Dominique Devienne |
---|---|
Тема | Re: Number of updated rows with LibPQ |
Дата | |
Msg-id | CAFCRh-8b8RGAUYifOje2zSwUCrK02da-jGtj-=vhFjJn1yWQcg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Number of updated rows with LibPQ (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Number of updated rows with LibPQ
Re: Number of updated rows with LibPQ |
Список | pgsql-general |
On Wed, Oct 5, 2022 at 8:17 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Laurenz Albe <laurenz.albe@cybertec.at> writes: > > On Wed, 2022-10-05 at 16:38 +0200, Dominique Devienne wrote: > > Yes, you have to use PQcmdTuples(), and you have to convert the string to an integer. > > But don't worry: the result will *not* be "INSERT 0 5", it will be just "5" Thanks. What's the leading 0 though, then? I guessed it might be the number of rows returned, but it isn't, see below: postgres=# create table foo (id serial primary key, v int); CREATE TABLE postgres=# insert into foo (v) values (1), (2) returning id; id ---- 1 2 (2 rows) INSERT 0 2 > Yeah, just applying atoi() or atol() to the result should be enough. Thanks too. Since I'm in C++, I used <charconv> instead, and discovered it can be empty something, not 0. I guess atoi() would have hidden that distinction, and worked anyway (returning 0). In the same topic, I've noticed an INSERT returns PGRES_COMMAND_OK, while an INSERT-RETURNING returns PGRES_TUPLES_OK. So there's no way to use the status to distinguish a SELECT from anything else? A RETURNING clause makes any statement supporting it an hybrid of a command and a query, but then how does one know the exact "kind" of the statement? E.g. So how does psql show INSERT in either cases? By parsing the SQL itself, client-side? Or is there a libpq API on PGresult that would allow to get the type of statement the result is from? Thanks, --DD
В списке pgsql-general по дате отправления: