FAQ
This might help, got it from a project run by Great Bridge Software, now defunct, to create an Oracle like data dictionary for PostGreSql:

CREATE VIEW all_objects
AS
SELECT UPPER(pg_get_userbyid (cls.relowner)) AS owner
,UPPER(cls.relname) AS object_name
,CASE WHEN cls.relkind = 'r' THEN CAST('TABLE' AS VARCHAR(18))
WHEN cls.relkind = 'i' THEN CAST('INDEX' AS VARCHAR(18))
WHEN cls.relkind = 'S' THEN CAST('SEQUENCE' AS VARCHAR(18))
WHEN cls.relkind = 's' THEN CAST('SPECIAL' AS VARCHAR(18))
WHEN cls.relkind = 't' THEN CAST('TOAST TABLE' AS VARCHAR(18))
END AS object_type
,CAST(NULL AS DATE) AS created
,CAST('VALID' AS VARCHAR(7)) AS status
FROM pg_class cls
WHERE (NOT cls.relhasrules
AND NOT EXISTS (SELECT rul.rulename
FROM pg_rewrite rul
WHERE ((rul.ev_class = cls.oid) AND (rul.ev_type = '1'::"char"))
)
)
UNION ALL
SELECT UPPER(pg_get_userbyid(cls.relowner)) AS owner
, UPPER(cls.relname) AS OBJECT_NAME
, CAST('VIEW' AS VARCHAR(18)) as object_type
, CAST(NULL AS DATE) AS created
, CAST('VALID' AS VARCHAR(7)) AS status
FROM pg_class cls
WHERE (cls.relhasrules
AND (EXISTS (SELECT rul.rulename
FROM pg_rewrite rul
WHERE ((rul.ev_class = cls.oid)
AND (rul.ev_type = '1'::"char")))))
UNION ALL
SELECT UPPER(pg_get_userbyid(p.proowner)) AS OWNER
, UPPER(p.proname) AS OBJECT_NAME
, CAST('FUNCTION' AS VARCHAR(18)) as object_type
, CAST(NULL AS DATE) AS created
, CAST('VALID' AS VARCHAR(7)) AS status
FROM pg_proc p
WHERE p.oid > 18655;

-----Original Message-----
From: pgsql-admin-owner@postgresql.org On Behalf Of Lyubomir Petrov
Sent: Wednesday, April 27, 2005 2:36 PM
To: Mario Soto Cordones
Cc: Alvaro Herrera; pgsql-admin@postgresql.org
Subject: Re: [ADMIN] catalog of postgres

Yeah, same here... Here is a test case where tables and views show up
with the same relkind... :)


$ psql test -c "create table table1(id int); create view view1 as select
* from table1;"
CREATE VIEW
$ psql test -c "select relname, relkind from pg_class where relname in
('table1', 'view1');" | sed -e 's/r$/v/'
relname | relkind
---------+---------
table1 | r
view1 | r
(2 rows)


But I believe this is a feature, not a bug. Look at this, it is
explained here
http://www.postgresql.org/docs/8.0/static/catalog-pg-class.html.

Regards,
Lyubomir Petrov



Mario Soto Cordones wrote:
OK but views and tables for example have the same one relkind

thank



2005/4/27, Alvaro Herrera <alvherre@dcc.uchile.cl>:

On Wed, Apr 27, 2005 at 02:02:09PM -0400, Mario Soto Cordones wrote:


with this query I obtain the schema name and the objects of this it , but
like I can know that they are, that is to say if they are tables,
views, functions, sequences, etc ????????
See pg_class.relkind.

--
Alvaro Herrera (<alvherre[@]dcc.uchile.cl>)
"El día que dejes de cambiar dejarás de vivir"



---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 6 of 8 | next ›
Discussion Overview
grouppgsql-admin @
categoriespostgresql
postedApr 27, '05 at 6:02p
activeApr 27, '05 at 8:41p
posts8
users5
websitepostgresql.org
irc#postgresql

People

Translate

site design / logo © 2022 Grokbase