Re: CommandStatus from insert returning when using a portal.

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: CommandStatus from insert returning when using a portal.
Дата
Msg-id CAKFQuwaMLO5XE9kp=tecD+FmLzeHy-s8f4OJogm3PvWu=dZQUA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: CommandStatus from insert returning when using a portal.  (Dave Cramer <davecramer@gmail.com>)
Ответы Re: CommandStatus from insert returning when using a portal.  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-hackers
On Fri, Jul 14, 2023 at 9:30 AM Dave Cramer <davecramer@gmail.com> wrote:
David, 

I will try to get a tcpdump file. Doing this in libpq seems challenging as I'm not aware of how to create a portal in psql.

Yeah, apparently psql does something special (like ignoring it...) with its FETCH_COUNT variable (set to 2 below as evidenced by the first query) for the insert returning case.  As documented since the command itself is not select or values the test in is_select_command returns false and the branch:

 else if (pset.fetch_count <= 0 || pset.gexec_flag ||
pset.crosstab_flag || !is_select_command(query))
{
/* Default fetch-it-all-and-print mode */

Is chosen.

Fixing that test in some manner and recompiling psql seems like it should be the easiest way to produce a core-only test case.

postgres=# select * from (Values (1),(2),(30000),(40000)) vals (v);
 v
---
 1
 2
 30000
 40000
(4 rows)

postgres=# \bind 5 6 70000 80000
postgres=# insert into ins values ($1),($2),($3),($4) returning id;
  id
-------
     5
     6
 70000
 80000
(4 rows)

INSERT 0 4

I was hoping to see the INSERT RETURNING query have a 4 width header instead of 7.

David J.

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

Предыдущее
От: Dave Cramer
Дата:
Сообщение: Re: CommandStatus from insert returning when using a portal.
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: CommandStatus from insert returning when using a portal.