Re: [SQL] Calculation dependencies in views
От | Jan Wieck |
---|---|
Тема | Re: [SQL] Calculation dependencies in views |
Дата | |
Msg-id | 3873DD6E.BBBF5813@debis.com обсуждение исходный текст |
Ответ на | Calculation dependencies in views (Rick Delaney <rick@consumercontact.com>) |
Ответы |
Re: [SQL] Calculation dependencies in views
|
Список | 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 по дате отправления: