Re: [SQL] Calculation dependencies in views - Mailing list pgsql-sql

From Jan Wieck
Subject Re: [SQL] Calculation dependencies in views
Date
Msg-id 3873DD6E.BBBF5813@debis.com
Whole thread Raw
In response to Calculation dependencies in views  (Rick Delaney <rick@consumercontact.com>)
Responses Re: [SQL] Calculation dependencies in views  (Tom Lane <tgl@sss.pgh.pa.us>)
List 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
causesthis "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
representationof 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
SELECTa, 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
needstwo 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@debis.com (Jan Wieck) #





pgsql-sql by date:

Previous
From: Rick Delaney
Date:
Subject: Re: [SQL] Calculation dependencies in views
Next
From: "Bron Till"
Date:
Subject: Autonumber column