> > > SELECT * FROM pg_rules WHERE pg_rules.oid = pg_class.oid crashes
> >
> > Will take a look at it.
> >
Please apply the patch at the end. Disables use of system
columns of views at all (not only oid, cmin etc. too).
pgsql=> select cmin from pg_rules;
ERROR: system column cmin not available - pg_rules is a view
pgsql=> select * from pg_rules where pg_rules.oid = pg_class.oid;
ERROR: system column oid not available - pg_rules is a view
pgsql=>
initdb and regression tests still O.K.
> > > handle oid's on views by either disallowing it or meaningful results
> > > CREATE INDEX i_test ON pg_class (upper(relname)) fails
Fixed by earlier applied patch.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#======================================== jwieck@debis.com (Jan Wieck) #
diff -cr src.orig/backend/rewrite/rewriteHandler.c src/backend/rewrite/rewriteHandler.c
*** src.orig/backend/rewrite/rewriteHandler.c Fri Oct 2 19:32:27 1998
--- src/backend/rewrite/rewriteHandler.c Fri Oct 2 19:43:15 1998
***************
*** 1777,1782 ****
--- 1777,1784 ----
var->varno == rt_index) {
Node *exp;
+ if (var->varattno < 0)
+ elog(ERROR, "system column %s not available - %s is a view", get_attname(rte->relid,
var->varattno),rte->relname);
exp = FindMatchingTLEntry(
tlist,
get_attname(rte->relid,