mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-30 13:51:23 +02:00
Simplify definition of pg_tables and pg_views views by making use of
new separate relkind for views (per some discussion back in September). I didn't force initdb, but rules regress test will show differences until you do one.
This commit is contained in:
parent
3030189b69
commit
fdbd6ca75e
@ -24,7 +24,7 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 1994, Regents of the University of California
|
# Copyright (c) 1994, Regents of the University of California
|
||||||
#
|
#
|
||||||
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.114 2000/11/14 18:37:45 tgl Exp $
|
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.115 2000/11/21 01:11:49 tgl Exp $
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -583,13 +583,11 @@ echo "CREATE VIEW pg_views AS \
|
|||||||
pg_get_userbyid(C.relowner) AS viewowner, \
|
pg_get_userbyid(C.relowner) AS viewowner, \
|
||||||
pg_get_viewdef(C.relname) AS definition \
|
pg_get_viewdef(C.relname) AS definition \
|
||||||
FROM pg_class C \
|
FROM pg_class C \
|
||||||
WHERE C.relhasrules \
|
WHERE C.relkind = 'v';" \
|
||||||
AND EXISTS ( \
|
|
||||||
SELECT rulename FROM pg_rewrite R \
|
|
||||||
WHERE ev_class = C.oid AND ev_type = '1' \
|
|
||||||
)" \
|
|
||||||
| "$PGPATH"/postgres $PGSQL_OPT template1 > /dev/null || exit_nicely
|
| "$PGPATH"/postgres $PGSQL_OPT template1 > /dev/null || exit_nicely
|
||||||
|
|
||||||
|
# XXX why does pg_tables include sequences?
|
||||||
|
|
||||||
echo "CREATE VIEW pg_tables AS \
|
echo "CREATE VIEW pg_tables AS \
|
||||||
SELECT \
|
SELECT \
|
||||||
C.relname AS tablename, \
|
C.relname AS tablename, \
|
||||||
@ -598,11 +596,7 @@ echo "CREATE VIEW pg_tables AS \
|
|||||||
C.relhasrules AS hasrules, \
|
C.relhasrules AS hasrules, \
|
||||||
(C.reltriggers > 0) AS hastriggers \
|
(C.reltriggers > 0) AS hastriggers \
|
||||||
FROM pg_class C \
|
FROM pg_class C \
|
||||||
WHERE C.relkind IN ('r', 's') \
|
WHERE C.relkind IN ('r', 's');" \
|
||||||
AND NOT EXISTS ( \
|
|
||||||
SELECT rulename FROM pg_rewrite \
|
|
||||||
WHERE ev_class = C.oid AND ev_type = '1' \
|
|
||||||
)" \
|
|
||||||
| "$PGPATH"/postgres $PGSQL_OPT template1 > /dev/null || exit_nicely
|
| "$PGPATH"/postgres $PGSQL_OPT template1 > /dev/null || exit_nicely
|
||||||
|
|
||||||
echo "CREATE VIEW pg_indexes AS \
|
echo "CREATE VIEW pg_indexes AS \
|
||||||
@ -611,8 +605,9 @@ echo "CREATE VIEW pg_indexes AS \
|
|||||||
I.relname AS indexname, \
|
I.relname AS indexname, \
|
||||||
pg_get_indexdef(X.indexrelid) AS indexdef \
|
pg_get_indexdef(X.indexrelid) AS indexdef \
|
||||||
FROM pg_index X, pg_class C, pg_class I \
|
FROM pg_index X, pg_class C, pg_class I \
|
||||||
WHERE C.oid = X.indrelid \
|
WHERE C.relkind = 'r' AND I.relkind = 'i' \
|
||||||
AND I.oid = X.indexrelid" \
|
AND C.oid = X.indrelid \
|
||||||
|
AND I.oid = X.indexrelid;" \
|
||||||
| "$PGPATH"/postgres $PGSQL_OPT template1 > /dev/null || exit_nicely
|
| "$PGPATH"/postgres $PGSQL_OPT template1 > /dev/null || exit_nicely
|
||||||
|
|
||||||
echo "Loading pg_description."
|
echo "Loading pg_description."
|
||||||
|
@ -1203,14 +1203,14 @@ drop table foo2;
|
|||||||
-- Check that ruleutils are working
|
-- Check that ruleutils are working
|
||||||
--
|
--
|
||||||
SELECT viewname, definition FROM pg_views ORDER BY viewname;
|
SELECT viewname, definition FROM pg_views ORDER BY viewname;
|
||||||
viewname | definition
|
viewname | definition
|
||||||
--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
iexit | SELECT ih.name, ih.thepath, interpt_pp(ih.thepath, r.thepath) AS exit FROM ihighway ih, ramp r WHERE (ih.thepath ## r.thepath);
|
iexit | SELECT ih.name, ih.thepath, interpt_pp(ih.thepath, r.thepath) AS exit FROM ihighway ih, ramp r WHERE (ih.thepath ## r.thepath);
|
||||||
pg_indexes | SELECT c.relname AS tablename, i.relname AS indexname, pg_get_indexdef(x.indexrelid) AS indexdef FROM pg_index x, pg_class c, pg_class i WHERE ((c.oid = x.indrelid) AND (i.oid = x.indexrelid));
|
pg_indexes | SELECT c.relname AS tablename, i.relname AS indexname, pg_get_indexdef(x.indexrelid) AS indexdef FROM pg_index x, pg_class c, pg_class i WHERE ((((c.relkind = 'r'::"char") AND (i.relkind = 'i'::"char")) AND (c.oid = x.indrelid)) AND (i.oid = x.indexrelid));
|
||||||
pg_rules | SELECT c.relname AS tablename, r.rulename, pg_get_ruledef(r.rulename) AS definition FROM pg_rewrite r, pg_class c WHERE ((r.rulename !~ '^_RET'::text) AND (c.oid = r.ev_class));
|
pg_rules | SELECT c.relname AS tablename, r.rulename, pg_get_ruledef(r.rulename) AS definition FROM pg_rewrite r, pg_class c WHERE ((r.rulename !~ '^_RET'::text) AND (c.oid = r.ev_class));
|
||||||
pg_tables | SELECT c.relname AS tablename, pg_get_userbyid(c.relowner) AS tableowner, c.relhasindex AS hasindexes, c.relhasrules AS hasrules, (c.reltriggers > 0) AS hastriggers FROM pg_class c WHERE (((c.relkind = 'r'::"char") OR (c.relkind = 's'::"char")) AND (NOT (EXISTS (SELECT pg_rewrite.rulename FROM pg_rewrite WHERE ((pg_rewrite.ev_class = c.oid) AND (pg_rewrite.ev_type = '1'::"char"))))));
|
pg_tables | SELECT c.relname AS tablename, pg_get_userbyid(c.relowner) AS tableowner, c.relhasindex AS hasindexes, c.relhasrules AS hasrules, (c.reltriggers > 0) AS hastriggers FROM pg_class c WHERE ((c.relkind = 'r'::"char") OR (c.relkind = 's'::"char"));
|
||||||
pg_user | SELECT pg_shadow.usename, pg_shadow.usesysid, pg_shadow.usecreatedb, pg_shadow.usetrace, pg_shadow.usesuper, pg_shadow.usecatupd, '********'::text AS passwd, pg_shadow.valuntil FROM pg_shadow;
|
pg_user | SELECT pg_shadow.usename, pg_shadow.usesysid, pg_shadow.usecreatedb, pg_shadow.usetrace, pg_shadow.usesuper, pg_shadow.usecatupd, '********'::text AS passwd, pg_shadow.valuntil FROM pg_shadow;
|
||||||
pg_views | SELECT c.relname AS viewname, pg_get_userbyid(c.relowner) AS viewowner, pg_get_viewdef(c.relname) AS definition FROM pg_class c WHERE (c.relhasrules AND (EXISTS (SELECT r.rulename FROM pg_rewrite r WHERE ((r.ev_class = c.oid) AND (r.ev_type = '1'::"char")))));
|
pg_views | SELECT c.relname AS viewname, pg_get_userbyid(c.relowner) AS viewowner, pg_get_viewdef(c.relname) AS definition FROM pg_class c WHERE (c.relkind = 'v'::"char");
|
||||||
rtest_v1 | SELECT rtest_t1.a, rtest_t1.b FROM rtest_t1;
|
rtest_v1 | SELECT rtest_t1.a, rtest_t1.b FROM rtest_t1;
|
||||||
rtest_vcomp | SELECT x.part, (x.size * y.factor) AS size_in_cm FROM rtest_comp x, rtest_unitfact y WHERE (x.unit = y.unit);
|
rtest_vcomp | SELECT x.part, (x.size * y.factor) AS size_in_cm FROM rtest_comp x, rtest_unitfact y WHERE (x.unit = y.unit);
|
||||||
rtest_vview1 | SELECT x.a, x.b FROM rtest_view1 x WHERE (0 < (SELECT count(*) AS count FROM rtest_view2 y WHERE (y.a = x.a)));
|
rtest_vview1 | SELECT x.a, x.b FROM rtest_view1 x WHERE (0 < (SELECT count(*) AS count FROM rtest_view2 y WHERE (y.a = x.a)));
|
||||||
|
Loading…
Reference in New Issue
Block a user