Thread: \dv and other lists SQL are unnecessarily complicated

\dv and other lists SQL are unnecessarily complicated

From
Bug Finder
Date:
Hello

Please forgive me if this has been discussed before.

\dv and other lists SQL are unnecessarily complicated.

They all seem to be based on the \d SQL

\dv currently uses

SELECT c.relname as "Name",
  CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i'
THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as
"Type",
  u.usename as "Owner"
FROM pg_class c LEFT JOIN pg_user u ON c.relowner = u.usesysid
WHERE c.relkind IN ('v','')
  AND c.relname !~ '^pg_'
ORDER BY 1;

when

SELECT c.relname as "Name", 'view' as "Owner"
FROM pg_class c LEFT JOIN pg_user u ON c.relowner = u.usesysid
WHERE c.relkind IN ('v','')
  AND c.relname !~ '^pg_'
ORDER BY 1;

does the same thing

Is there a reason for this? Was it a cut'n'paste frenzy? not that there
is anything wrong with that - whatever gets it done.

Cheers,

Neil

Re: \dv and other lists SQL are unnecessarily complicated

From
Martijn van Oosterhout
Date:
On Thu, Apr 18, 2002 at 11:44:42PM +0100, Bug Finder wrote:
> Hello
>
> Please forgive me if this has been discussed before.
>
> \dv and other lists SQL are unnecessarily complicated.
>
> They all seem to be based on the \d SQL
>
> \dv currently uses

[snip]

IIRC (you should check the source), instead of having one query for each
type of \d command, there is the one query you gave with the 'c.relkind IN'
parameterised.

Yes, it makes the queries more complicated than might otherwise be
necessary, but it cleans up the source code enourmously.

> Is there a reason for this? Was it a cut'n'paste frenzy? not that there
> is anything wrong with that - whatever gets it done.

That's the point, doing it this way avoid doing any cutting and pasting at
all.

HTH,
--
Martijn van Oosterhout <kleptog@svana.org>   http://svana.org/kleptog/
> Ignorance continues to thrive when intelligent people choose to do
> nothing.  Speaking out against censorship and ignorance is the imperative
> of all intelligent people.