Improving psql \ds
Hi,
I would like to work on psql \ds improvements. Here's my idea :
- in src/bin/psql/describe.c, add a new function :
listSequences(*pattern, verbose) wich will list sequences and remove
code related to sequences from listTables()
- in src/bin/psql/command.c, call listSequences() on \ds
- about listSequences() implementation :
- get list from pg_catalog.pg_class WHERE relkind = 'S'
- for each seq. name, get details using : SELECT * FROM <seqname>;
(is there an other way to do that ?)
About \ds behaviour, I think to add 2 columns :
- 'LastValue'
- 'Increment'
for \ds+ :
- all extras informations available from the sequence table.
BTW, why don't we get last_value value with
pg_catalog.pg_sequence_parameters(oid) ? I guess this is because
last_value is not a parameter... Perhaps, having a
pg_sequence_all(oid) or something like that, giving all informations
from the seq. table could be usefull.
Thought ?
Cheers,
Julien Tachoires <julmon@gmail.com> writes:
About \ds behaviour, I think to add 2 columns :
- 'LastValue'
- 'Increment'
That would make the command a great deal slower, since it would have to
access each sequence to get that info. I don't object to adding such
columns to \ds+, but I don't think it's a good idea to put them in the
basic command.
The other problem you're going to have here is that there is in fact no
such command as "\ds" (nor "\ds+"); rather, it's a special case of
\dtsvi. As such, putting any relkind-specific info into the result is
problematic. I think you're going to have to invent a different command
if you want there to be sequence-specific columns.
regards, tom lane
2012/10/8 Tom Lane <tgl@sss.pgh.pa.us>:
Julien Tachoires <julmon@gmail.com> writes:
About \ds behaviour, I think to add 2 columns :
- 'LastValue'
- 'Increment'That would make the command a great deal slower, since it would have to
access each sequence to get that info. I don't object to adding such
columns to \ds+, but I don't think it's a good idea to put them in the
basic command.
Ok.
The other problem you're going to have here is that there is in fact no
such command as "\ds" (nor "\ds+"); rather, it's a special case of
\dtsvi. As such, putting any relkind-specific info into the result is
problematic. I think you're going to have to invent a different command
if you want there to be sequence-specific columns.
Yes, that's why I plan to create a new function listSequences() and
call it from src/bin/psql/command.c :
+ /* \d* commands */
+ else if (cmd[0] == 'd')
+ {
...
+ case 's':
+ success = listSequences(pattern, show_verbose);
+ break;
Cheers,
On Mon, Oct 8, 2012 at 3:49 AM, Julien Tachoires <julmon@gmail.com> wrote:
2012/10/8 Tom Lane <tgl@sss.pgh.pa.us>:
Julien Tachoires <julmon@gmail.com> writes:
About \ds behaviour, I think to add 2 columns :
- 'LastValue'
- 'Increment'That would make the command a great deal slower, since it would have to
access each sequence to get that info. I don't object to adding such
columns to \ds+, but I don't think it's a good idea to put them in the
basic command.Ok.
The other problem you're going to have here is that there is in fact no
such command as "\ds" (nor "\ds+"); rather, it's a special case of
\dtsvi. As such, putting any relkind-specific info into the result is
problematic. I think you're going to have to invent a different command
if you want there to be sequence-specific columns.Yes, that's why I plan to create a new function listSequences() and call it from src/bin/psql/command.c : + /* \d* commands */ + else if (cmd[0] == 'd') + { ... + case 's': + success = listSequences(pattern, show_verbose); + break;
What happens if the user does this:
\dis
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
Julien Tachoires <julmon@gmail.com> writes:
2012/10/8 Tom Lane <tgl@sss.pgh.pa.us>:
The other problem you're going to have here is that there is in fact no
such command as "\ds" (nor "\ds+"); rather, it's a special case of
\dtsvi. As such, putting any relkind-specific info into the result is
problematic. I think you're going to have to invent a different command
if you want there to be sequence-specific columns.
Yes, that's why I plan to create a new function listSequences() and call it from src/bin/psql/command.c : + /* \d* commands */ + else if (cmd[0] == 'd') + { ... + case 's': + success = listSequences(pattern, show_verbose); + break;
No, that's not acceptable, because it will break cases such as "\dstv".
The \dxxx command namespace is already direly overloaded; I'm not sure
cramming more behaviors into it is a good idea anyway. Perhaps
something along the line of "\seqs" would be a usable substitute.
regards, tom lane
2012/10/8 Robert Haas <robertmhaas@gmail.com>:
On Mon, Oct 8, 2012 at 3:49 AM, Julien Tachoires <julmon@gmail.com> wrote:
2012/10/8 Tom Lane <tgl@sss.pgh.pa.us>:
Julien Tachoires <julmon@gmail.com> writes:
About \ds behaviour, I think to add 2 columns :
- 'LastValue'
- 'Increment'That would make the command a great deal slower, since it would have to
access each sequence to get that info. I don't object to adding such
columns to \ds+, but I don't think it's a good idea to put them in the
basic command.Ok.
The other problem you're going to have here is that there is in fact no
such command as "\ds" (nor "\ds+"); rather, it's a special case of
\dtsvi. As such, putting any relkind-specific info into the result is
problematic. I think you're going to have to invent a different command
if you want there to be sequence-specific columns.Yes, that's why I plan to create a new function listSequences() and call it from src/bin/psql/command.c : + /* \d* commands */ + else if (cmd[0] == 'd') + { ... + case 's': + success = listSequences(pattern, show_verbose); + break;What happens if the user does this:
\dis
hmm, you're right, this is not a good idea.
2012/10/8 Tom Lane <tgl@sss.pgh.pa.us>:
Julien Tachoires <julmon@gmail.com> writes:
2012/10/8 Tom Lane <tgl@sss.pgh.pa.us>:
The other problem you're going to have here is that there is in fact no
such command as "\ds" (nor "\ds+"); rather, it's a special case of
\dtsvi. As such, putting any relkind-specific info into the result is
problematic. I think you're going to have to invent a different command
if you want there to be sequence-specific columns.Yes, that's why I plan to create a new function listSequences() and call it from src/bin/psql/command.c : + /* \d* commands */ + else if (cmd[0] == 'd') + { ... + case 's': + success = listSequences(pattern, show_verbose); + break;No, that's not acceptable, because it will break cases such as "\dstv".
The \dxxx command namespace is already direly overloaded; I'm not sure
cramming more behaviors into it is a good idea anyway. Perhaps
something along the line of "\seqs" would be a usable substitute.
Ok. Does having both '\ds' and , let's call it '\seqs', won't be
source of confusion for the user ?
On 09/10/12 03:53, Robert Haas wrote:
On Mon, Oct 8, 2012 at 3:49 AM, Julien Tachoires <julmon@gmail.com> wrote:
2012/10/8 Tom Lane <tgl@sss.pgh.pa.us>:
Julien Tachoires <julmon@gmail.com> writes:
About \ds behaviour, I think to add 2 columns :
- 'LastValue'
- 'Increment'That would make the command a great deal slower, since it would have to
access each sequence to get that info. I don't object to adding such
columns to \ds+, but I don't think it's a good idea to put them in the
basic command.Ok.
The other problem you're going to have here is that there is in fact no
such command as "\ds" (nor "\ds+"); rather, it's a special case of
\dtsvi. As such, putting any relkind-specific info into the result is
problematic. I think you're going to have to invent a different command
if you want there to be sequence-specific columns.Yes, that's why I plan to create a new function listSequences() and call it from src/bin/psql/command.c : + /* \d* commands */ + else if (cmd[0] == 'd') + { ... + case 's': + success = listSequences(pattern, show_verbose); + break;What happens if the user does this:
\dis
Hmm...
'According' to Terry Prachett,that is probably short hand for telling
the backend to go to Hell = 'dis' is apparently another name for 'Hell'!
(In his book 'Truth', commander Vimes has a personal dis-organiser - as
the 'dis-organiser' is run by a demon from Hell.)
Now back to more appropriate comments...