\d type queries - why not views in system catalog?!?

Started by Joerg Hessdoerferalmost 23 years ago18 messages
#1Joerg Hessdoerfer
Joerg.Hessdoerfer@sea-gmbh.com

Hi!

I just came across a posting in this list, and a question arose from that
which I'm carrying for some time. PG has *some* views in the system catalog,
which make life easier, but some essential(?) things like 'list all tables in
DB' has to be done in a multi-table join with special attributes. What is the
rationale of that? Wouldn't it be easier (and more portable, see 7.3/7.2
system catalogs vs. psql) to have views for that? Do I miss a point here?

I'd be even willing to do some work here, if considered worthwhile...

Greetings,
Joerg
--
Leading SW developer - S.E.A GmbH
Mail: joerg.hessdoerfer@sea-gmbh.com
WWW: http://www.sea-gmbh.com

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Joerg Hessdoerfer (#1)
Re: \d type queries - why not views in system catalog?!?

Joerg Hessdoerfer <Joerg.Hessdoerfer@sea-gmbh.com> writes:

PG has *some* views in the system catalog, which make life easier, but
some essential(?) things like 'list all tables in DB' has to be done
in a multi-table join with special attributes. What is the rationale
of that? Wouldn't it be easier (and more portable, see 7.3/7.2 system
catalogs vs. psql) to have views for that?

Only to the extent that the views match what a particular front-end
actually wants to see.

Peter Eisentraut is currently working on adding the SQL-spec-mandated
"INFORMATION_SCHEMA" views; so as long as all you want to know is what's
in the spec, those should be your answer. But I do not foresee psql or
pg_dump ever switching over to INFORMATION_SCHEMA, because they want to
know about some things that are Postgres-specific.

regards, tom lane

#3Noname
greg@turnstep.com
In reply to: Joerg Hessdoerfer (#1)
Re: \d type queries - why not views in system catalog?!?

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
NotDashEscaped: You need GnuPG to verify this message

Wouldn't it be easier (and more portable, see 7.3/7.2 system catalogs vs.
psql) to have views for that? Do I miss a point here?

Putting the \d commands into views has been on the TODO list for a long time:
I think it is actually the only psql-related item left, until we change
the backend protocol to indicate transaction state. I don't think a view
would have helped with the psql 7.2/7.3 change: a lot more changed than
simply the underlying SQL.

Some of the the backslash commands are not amenable to putting inside a
view, as they actually compromise multiple SQL calls and some logic in
the C code, but a few could probably be made into views. Could whomever
added that particular TODO item expand on this?

--
Greg Sabino Mullane greg@turnstep.com
PGP Key: 0x14964AC8 200301131137

-----BEGIN PGP SIGNATURE-----
Comment: http://www.turnstep.com/pgp.html

iD8DBQE+IuuovJuQZxSWSsgRAgQXAKCdu0+CelZ1V2bwI/HoJHIz+a3DPACgix7u
pOcRXwHb+4NJLMeSpNaqzRM=
=0yFo
-----END PGP SIGNATURE-----

#4Rod Taylor
rbt@rbt.ca
In reply to: Noname (#3)
Re: \d type queries - why not views in system catalog?!?

On Mon, 2003-01-13 at 11:28, greg@turnstep.com wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
NotDashEscaped: You need GnuPG to verify this message

Wouldn't it be easier (and more portable, see 7.3/7.2 system catalogs vs.
psql) to have views for that? Do I miss a point here?

Putting the \d commands into views has been on the TODO list for a long time:
I think it is actually the only psql-related item left, until we change
the backend protocol to indicate transaction state. I don't think a view
would have helped with the psql 7.2/7.3 change: a lot more changed than
simply the underlying SQL.

It would be a wise idea to use the INFORMATION_SCHEMA where possible for
these, as that is pretty much guaranteed to be static in format.

--
Rod Taylor <rbt@rbt.ca>

PGP Key: http://www.rbt.ca/rbtpub.asc

#5Robert Treat
xzilla@users.sourceforge.net
In reply to: Noname (#3)
Re: \d type queries - why not views in system catalog?!?

On Mon, 2003-01-13 at 11:28, greg@turnstep.com wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
NotDashEscaped: You need GnuPG to verify this message

Wouldn't it be easier (and more portable, see 7.3/7.2 system catalogs vs.
psql) to have views for that? Do I miss a point here?

Putting the \d commands into views has been on the TODO list for a long time:
I think it is actually the only psql-related item left, until we change
the backend protocol to indicate transaction state. I don't think a view
would have helped with the psql 7.2/7.3 change: a lot more changed than
simply the underlying SQL.

Some of the the backslash commands are not amenable to putting inside a
view, as they actually compromise multiple SQL calls and some logic in
the C code, but a few could probably be made into views. Could whomever
added that particular TODO item expand on this?

One idea I've always thought would be nice would be to make full fledged
C functions out of the \ commands and ship them with the database. This
way the \ commands could just be alias to "select myfunc()". This would
help out all of us who write GUI interfaces since we would have standard
functions we could call upon, and would also help with backward
compatibility since \dv could always call select list_views(), which
would already be included with each server. One of the reasons that this
was not feasible in the past was that we needed functions that could
return multiple rows and columns easily. Now that we have that in 7.3,
it might be worth revisiting.

Robert Treat

#6Greg Copeland
greg@CopelandConsulting.Net
In reply to: Robert Treat (#5)
Re: \d type queries - why not views in system catalog?!?

Oh!

That's an excellent idea. Seemingly addresses the issue and has
value-add. I'm not aware of any gotchas here. Is there something that
is being overlooked?

Greg

On Mon, 2003-01-13 at 14:50, Robert Treat wrote:

On Mon, 2003-01-13 at 11:28, greg@turnstep.com wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
NotDashEscaped: You need GnuPG to verify this message

Wouldn't it be easier (and more portable, see 7.3/7.2 system catalogs vs.
psql) to have views for that? Do I miss a point here?

Putting the \d commands into views has been on the TODO list for a long time:
I think it is actually the only psql-related item left, until we change
the backend protocol to indicate transaction state. I don't think a view
would have helped with the psql 7.2/7.3 change: a lot more changed than
simply the underlying SQL.

Some of the the backslash commands are not amenable to putting inside a
view, as they actually compromise multiple SQL calls and some logic in
the C code, but a few could probably be made into views. Could whomever
added that particular TODO item expand on this?

One idea I've always thought would be nice would be to make full fledged
C functions out of the \ commands and ship them with the database. This
way the \ commands could just be alias to "select myfunc()". This would
help out all of us who write GUI interfaces since we would have standard
functions we could call upon, and would also help with backward
compatibility since \dv could always call select list_views(), which
would already be included with each server. One of the reasons that this
was not feasible in the past was that we needed functions that could
return multiple rows and columns easily. Now that we have that in 7.3,
it might be worth revisiting.

Robert Treat

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

--
Greg Copeland <greg@copelandconsulting.net>
Copeland Computer Consulting

#7Dave Page
dpage@vale-housing.co.uk
In reply to: Greg Copeland (#6)
Re: \d type queries - why not views in system catalog?!?

-----Original Message-----
From: Greg Copeland [mailto:greg@CopelandConsulting.Net]
Sent: 13 January 2003 20:56
To: Robert Treat
Cc: greg@turnstep.com; PostgresSQL Hackers Mailing List
Subject: Re: [HACKERS] \d type queries - why not views in
system catalog?!?

Oh!

That's an excellent idea. Seemingly addresses the issue and
has value-add. I'm not aware of any gotchas here. Is there
something that is being overlooked?

Why use functions instead of views? Most UIs will want to format the
output as they see fit so a recordset would be the appropriate output.
Yes, a function could do this, but surely views would be simpler to
implement and maintain.

Regards, Dave.

#8Greg Copeland
greg@CopelandConsulting.Net
In reply to: Dave Page (#7)
Re: \d type queries - why not views in system catalog?!?

Views or C-functions, I think the idea is excellent. It's the concept
that I really like.

Greg

On Mon, 2003-01-13 at 15:00, Dave Page wrote:

-----Original Message-----
From: Greg Copeland [mailto:greg@CopelandConsulting.Net]
Sent: 13 January 2003 20:56
To: Robert Treat
Cc: greg@turnstep.com; PostgresSQL Hackers Mailing List
Subject: Re: [HACKERS] \d type queries - why not views in
system catalog?!?

Oh!

That's an excellent idea. Seemingly addresses the issue and
has value-add. I'm not aware of any gotchas here. Is there
something that is being overlooked?

Why use functions instead of views? Most UIs will want to format the
output as they see fit so a recordset would be the appropriate output.
Yes, a function could do this, but surely views would be simpler to
implement and maintain.

Regards, Dave.

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

--
Greg Copeland <greg@copelandconsulting.net>
Copeland Computer Consulting

#9Robert Treat
xzilla@users.sourceforge.net
In reply to: Greg Copeland (#8)
Re: \d type queries - why not views in system catalog?!?

You have to do it in functions because some of the \ commands use
multiple queries and logic inside the C code.

Robert Treat

Show quoted text

On Mon, 2003-01-13 at 16:42, Greg Copeland wrote:

Views or C-functions, I think the idea is excellent. It's the concept
that I really like.

Greg

On Mon, 2003-01-13 at 15:00, Dave Page wrote:

-----Original Message-----
From: Greg Copeland [mailto:greg@CopelandConsulting.Net]
Sent: 13 January 2003 20:56
To: Robert Treat
Cc: greg@turnstep.com; PostgresSQL Hackers Mailing List
Subject: Re: [HACKERS] \d type queries - why not views in
system catalog?!?

Oh!

That's an excellent idea. Seemingly addresses the issue and
has value-add. I'm not aware of any gotchas here. Is there
something that is being overlooked?

Why use functions instead of views? Most UIs will want to format the
output as they see fit so a recordset would be the appropriate output.
Yes, a function could do this, but surely views would be simpler to
implement and maintain.

Regards, Dave.

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

--
Greg Copeland <greg@copelandconsulting.net>
Copeland Computer Consulting

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

#10Hannu Krosing
hannu@tm.ee
In reply to: Robert Treat (#5)
Re: \d type queries - why not views in system catalog?!?

Robert Treat kirjutas T, 14.01.2003 kell 01:50:

One of the reasons that this
was not feasible in the past was that we needed functions that could
return multiple rows and columns easily. Now that we have that in 7.3,
it might be worth revisiting.

Also, we have schemas now, so it would be easier to avoid name clashes.

--
Hannu Krosing <hannu@tm.ee>

#11Peter Eisentraut
peter_e@gmx.net
In reply to: Robert Treat (#5)
Re: \d type queries - why not views in system catalog?!?

Robert Treat writes:

One idea I've always thought would be nice would be to make full fledged
C functions out of the \ commands and ship them with the database.

The psql meta-commands are not a nicely designed set of queries that one
would encapsulate into a public library interface. They are created for
interactive use, representing precomposed views of the database that are
thought to be useful. If the ideas of usefulness change, then the
commands might change.

If you want to create a set of views or functions for noninteractive use
by client applications, then you need to step back and create maximally
decomposed views of the database that can be combined in all possible
ways. The SQL information schema is such a set, but the information is
perhaps too limited for some applications. (But I urge you too look
first.) But any other set would have to be designed on similar
principles.

--
Peter Eisentraut peter_e@gmx.net

#12Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#11)
Re: \d type queries - why not views in system catalog?!?

Peter Eisentraut <peter_e@gmx.net> writes:

Robert Treat writes:

One idea I've always thought would be nice would be to make full fledged
C functions out of the \ commands and ship them with the database.

The psql meta-commands are not a nicely designed set of queries that one
would encapsulate into a public library interface. They are created for
interactive use, representing precomposed views of the database that are
thought to be useful. If the ideas of usefulness change, then the
commands might change.

I think that the proposal is to take describe.c more or less
lock-stock-and-barrel out of psql and put it in the backend instead.
It doesn't matter whether the views are orthogonal or useful for
non-interactive purposes; they're defined to do whatever we think
psql should show.

The question is whether this gives us a useful amount of decoupling of
psql from the backend version. Certainly the describe.c code is the
stuff most subject to breakage across versions, but there are a lot of
other aspects of psql that could still break. One fairly obvious
example of backend-dependent psql code that won't be helped this way is
the tab completion code.

While I don't have any strong objection to moving the guts of these
queries to the backend, I can't get real excited about it either;
I suspect that psql will still be pretty version-dependent.

regards, tom lane

#13Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Tom Lane (#12)
Re: \d type queries - why not views in system catalog?!?

What should we do with the TODO item? Add question mark? Remove?

---------------------------------------------------------------------------

Tom Lane wrote:

Peter Eisentraut <peter_e@gmx.net> writes:

Robert Treat writes:

One idea I've always thought would be nice would be to make full fledged
C functions out of the \ commands and ship them with the database.

The psql meta-commands are not a nicely designed set of queries that one
would encapsulate into a public library interface. They are created for
interactive use, representing precomposed views of the database that are
thought to be useful. If the ideas of usefulness change, then the
commands might change.

I think that the proposal is to take describe.c more or less
lock-stock-and-barrel out of psql and put it in the backend instead.
It doesn't matter whether the views are orthogonal or useful for
non-interactive purposes; they're defined to do whatever we think
psql should show.

The question is whether this gives us a useful amount of decoupling of
psql from the backend version. Certainly the describe.c code is the
stuff most subject to breakage across versions, but there are a lot of
other aspects of psql that could still break. One fairly obvious
example of backend-dependent psql code that won't be helped this way is
the tab completion code.

While I don't have any strong objection to moving the guts of these
queries to the backend, I can't get real excited about it either;
I suspect that psql will still be pretty version-dependent.

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#14Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Robert Treat (#9)
Re: \d type queries - why not views in system catalog?!?

What about querying the information_schema?

Chris

Show quoted text

-----Original Message-----
From: pgsql-hackers-owner@postgresql.org
[mailto:pgsql-hackers-owner@postgresql.org]On Behalf Of Robert Treat
Sent: Tuesday, 14 January 2003 6:01 AM
To: Greg Copeland
Cc: Dave Page; greg@turnstep.com; PostgresSQL Hackers Mailing List
Subject: Re: [HACKERS] \d type queries - why not views in system
catalog?!?

You have to do it in functions because some of the \ commands use
multiple queries and logic inside the C code.

Robert Treat

On Mon, 2003-01-13 at 16:42, Greg Copeland wrote:

Views or C-functions, I think the idea is excellent. It's the concept
that I really like.

Greg

On Mon, 2003-01-13 at 15:00, Dave Page wrote:

-----Original Message-----
From: Greg Copeland [mailto:greg@CopelandConsulting.Net]
Sent: 13 January 2003 20:56
To: Robert Treat
Cc: greg@turnstep.com; PostgresSQL Hackers Mailing List
Subject: Re: [HACKERS] \d type queries - why not views in
system catalog?!?

Oh!

That's an excellent idea. Seemingly addresses the issue and
has value-add. I'm not aware of any gotchas here. Is there
something that is being overlooked?

Why use functions instead of views? Most UIs will want to format the
output as they see fit so a recordset would be the appropriate output.
Yes, a function could do this, but surely views would be simpler to
implement and maintain.

Regards, Dave.

---------------------------(end of

broadcast)---------------------------

TIP 4: Don't 'kill -9' the postmaster

--
Greg Copeland <greg@copelandconsulting.net>
Copeland Computer Consulting

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

#15Dave Page
dpage@vale-housing.co.uk
In reply to: Christopher Kings-Lynne (#14)
Re: \d type queries - why not views in system catalog?!?

-----Original Message-----
From: Robert Treat [mailto:xzilla@users.sourceforge.net]
Sent: 13 January 2003 22:01
To: Greg Copeland
Cc: Dave Page; greg@turnstep.com; PostgresSQLHackers Mailing List
Subject: Re: [HACKERS] \d type queries - why not views in
system catalog?!?

You have to do it in functions because some of the \ commands
use multiple queries and logic inside the C code.

pgAdmin lists far more comprehensive data the psql and does it from
single queries 95% of the time. I'm sure someone more expert in SQL than
me could get pretty much all the other 5% sorted...

Regards, Dave.

#16Hannu Krosing
hannu@tm.ee
In reply to: Christopher Kings-Lynne (#14)
Re: \d type queries - why not views in system catalog?!?

On Tue, 2003-01-14 at 01:39, Christopher Kings-Lynne wrote:

What about querying the information_schema?

Will information_schema be strictly SQL99 or will it also have
PostgreSQL specific views/fields ?

--
Hannu Krosing <hannu@tm.ee>

#17Tom Lane
tgl@sss.pgh.pa.us
In reply to: Hannu Krosing (#16)
Re: \d type queries - why not views in system catalog?!?

Hannu Krosing <hannu@tm.ee> writes:

Will information_schema be strictly SQL99 or will it also have
PostgreSQL specific views/fields ?

If it's not strictly conformant to the spec, I see no value in it at
all. We already have plenty of ability to query the catalogs via
non-standard queries.

regards, tom lane

#18Hannu Krosing
hannu@tm.ee
In reply to: Tom Lane (#17)
Re: \d type queries - why not views in system catalog?!?

On Tue, 2003-01-14 at 15:47, Tom Lane wrote:

Hannu Krosing <hannu@tm.ee> writes:

Will information_schema be strictly SQL99 or will it also have
PostgreSQL specific views/fields ?

If it's not strictly conformant to the spec, I see no value in it at
all.

I mean that it could have at least extra *views* for postgresql specific
things. It could also have extra *fields* on standard views, but that
might break some apps. I see no way how having extra views can break
apps.

We already have plenty of ability to query the catalogs via

non-standard queries.

But would it not be nice to have some standard ones, so that each and
every DB management app does not need to invent its own ?

I agree that this could be done as a project at gborg rather than in
information_schema, but it would still be good to have one standard
place for examples at least. And the only way to keep the examples
up-to-date is by using them in live projects.

--
Hannu Krosing <hannu@tm.ee>