]> granicus.if.org Git - postgresql/commitdiff
Simplify definition of pg_tables and pg_views views by making use of
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 21 Nov 2000 01:11:50 +0000 (01:11 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 21 Nov 2000 01:11:50 +0000 (01:11 +0000)
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.

src/bin/initdb/initdb.sh
src/test/regress/expected/rules.out

index 2358c61b5e7031f55c191035f878ff056894bd2d..33b0b423b11d207a59102f5ba1cd49c00b78c844 100644 (file)
@@ -24,7 +24,7 @@
 #
 # 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_viewdef(C.relname) AS definition \
         FROM pg_class C \
-        WHERE C.relhasrules \
-            AND        EXISTS ( \
-                SELECT rulename FROM pg_rewrite R \
-                    WHERE ev_class = C.oid AND ev_type = '1' \
-            )" \
+        WHERE C.relkind = 'v';" \
        | "$PGPATH"/postgres $PGSQL_OPT template1 > /dev/null || exit_nicely
 
+# XXX why does pg_tables include sequences?
+
 echo "CREATE VIEW pg_tables AS \
         SELECT \
             C.relname AS tablename, \
@@ -598,11 +596,7 @@ echo "CREATE VIEW pg_tables AS \
            C.relhasrules AS hasrules, \
            (C.reltriggers > 0) AS hastriggers \
         FROM pg_class C \
-        WHERE C.relkind IN ('r', 's') \
-            AND NOT EXISTS ( \
-                SELECT rulename FROM pg_rewrite \
-                    WHERE ev_class = C.oid AND ev_type = '1' \
-            )" \
+        WHERE C.relkind IN ('r', 's');" \
        | "$PGPATH"/postgres $PGSQL_OPT template1 > /dev/null || exit_nicely
 
 echo "CREATE VIEW pg_indexes AS \
@@ -611,8 +605,9 @@ echo "CREATE VIEW pg_indexes AS \
            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" \
+       WHERE C.relkind = 'r' AND I.relkind = 'i' \
+           AND C.oid = X.indrelid \
+            AND I.oid = X.indexrelid;" \
         | "$PGPATH"/postgres $PGSQL_OPT template1 > /dev/null || exit_nicely
 
 echo "Loading pg_description."
index 11e1539778c74d59fc1ab5d2e8b3588d0ea2bc02..673c6754689cd7a9bede33bd2385e4767c283a55 100644 (file)
@@ -1203,14 +1203,14 @@ drop table foo2;
 -- Check that ruleutils are working
 --
 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);
- 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_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_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_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)));