Re: [HACKERS] proposal psql \gdesc

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: [HACKERS] proposal psql \gdesc
Дата
Msg-id CAFj8pRBS6kNFspJr=u+eh9cPeeG30Rg5RLdiTHR7P2yNcvP7AA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [HACKERS] proposal psql \gdesc  (Fabien COELHO <coelho@cri.ensmp.fr>)
Ответы Re: [HACKERS] proposal psql \gdesc  (Fabien COELHO <coelho@cri.ensmp.fr>)
Список pgsql-hackers


2017-05-09 18:15 GMT+02:00 Fabien COELHO <coelho@cri.ensmp.fr>:

Hello Pavel,

Patch applies cleanly and compiles.

Idem for v2. "make check" ok. Tests look good.

I would suggest some rewording, maybe:

"Show the description of the result of the current query buffer without
actually executing it, by considering it a prepared statement."

done

Ok. If some native English speaker can clarify the sentence further, or imprive it anyway, thanks in advance!

  SELECT $1 AS unknown_type \gdesc

It is not unknown type - the default placeholder type is text

Indeed. I really meant something like:

  calvin=# SELECT $1 + $2 \gdesc
  ERROR:  operator is not unique: unknown + unknown
  ...

More comments:

I propose that the help message could be "describe result of query without executing it".

done 

I found an issue. \gdesk fails when the command does not return a result:

 calvin=# TRUNCATE pgbench_history \gdesc
 ERROR:  syntax error at or near ")"
 LINE 2:  (VALUES ) s (name, tp, tpm)

I guess the issue is that PQdescribePrepared returns an empty description, which is fine, but then the second query should be skipped, and some message should be output instead, like "no result" or whatever...

This need fixing, and a corresponding test should be added.

it is little bit worse. I cannot to distinguish between SELECT\gdesc and TRUNCATE xxx\gdesc . All are valid commands and produce empty result, so result of \gdesc command should be empty result too.

 postgres=# truncate table xx\gdesc
┌──────┬──────┐
│ Name │ Type │
╞══════╪══════╡
└──────┴──────┘
(0 rows)

postgres=# select \gdesc
┌──────┬──────┐
│ Name │ Type │
╞══════╪══════╡
└──────┴──────┘
(0 rows)


Also I would suggest to add a \g after the first test, which would execute the current buffer after its description, to show that the current buffer does indeed hold the query:

 calvin=# SELECT 1 as one, ... \gdesc \g
 -- one | int
 -- ...
 -- 1 | ...


done

Regards

Pavel
 
--
Fabien.

Вложения

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

Предыдущее
От: Erik Rijkers
Дата:
Сообщение: Re: [HACKERS] snapbuild woes
Следующее
От: Petr Jelinek
Дата:
Сообщение: Re: [HACKERS] logical replication deranged sender