Re: [SQL] Calculation dependencies in views

From: Jan Wieck <wieck(at)debis(dot)com>
To: Rick Delaney <rick(at)consumercontact(dot)com>
Cc: pgsql-sql(at)postgreSQL(dot)org
Subject: Re: [SQL] Calculation dependencies in views
Date: 2000-01-06 00:10:22
Message-ID: 3873DD6E.BBBF5813@debis.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Rick Delaney wrote:

> Jan Wieck wrote:
> >
> > As the author of "The Postgres Rule System" I say yes, except that it
> ^^^^^^^^^
> > requires some recursions in the rewriter. Thus, it will take a little
>
> Sorry to be stupid but with my terribly phrased question I can't tell if you mean
> "Yes, you are correct that you will still get 'rule plan string too big' errors
> with nested views" or "Yes, nested views will work fine as I described despite
> your erroneous interpretation of what you read (but you may have to fix the
> recursion limit as I already said)". :-)
>
> I'm 99% sure you mean the latter, now, after re-reading "The Postgres Rule
> System" and your first reply to me. I guess the only reason I'm not 100% sure is
> I don't understand where the 'rule plan string too big' limit comes from. Is it
> in the storage of the view/rule (related to the 8K limit on row size)? I guess
> that would make sense.

Stop (rereading) recursion now - you got it.

It's exactly the storage of rules (views are implemented via rewriting
rules) in combo with the 8K limit, that causes this "rule plan string too
big" error. Just the the view/rule creation utility does some extra check
for it.

Rules are stored as a special kind of printable querytree string. A
querytree is the systems internal representation of a query, and they are
really verbose and thus - well - huge (compared to what the user typed in).

Example 1:

CREATE VIEW v1 AS
SELECT a, a + b AS ab, a + b + c AS abc FROM t1;

Example 2:

CREATE VIEW v1_sub AS
SELECT a, c, a + b AS ab FROM t1;
CREATE VIEW v1 AS
SELECT a, ab, ab + c AS abc FROM v1_sub;

These two examples will result in exactly the same querytree after
rewriting, if you SELECT from v1. The second needs two passes in the
rewriter, but that's the only difference.

Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#========================================= wieck(at)debis(dot)com (Jan Wieck) #

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Bron Till 2000-01-06 00:40:17 Autonumber column
Previous Message Rick Delaney 2000-01-05 23:13:58 Re: [SQL] Calculation dependencies in views