From: | Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us> |
---|---|
To: | Vadim Mikheev <vadim(at)krs(dot)ru> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgreSQL(dot)org> |
Subject: | Re: [HACKERS] copyObject() ? again |
Date: | 1999-07-07 02:03:19 |
Message-ID: | 199907070203.WAA29819@candle.pha.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Just sending this over to you in case it is helpful in the future.
> Tom Lane wrote:
> >
> > More generally, however, I think that the very existence of the subPlan
> > list is a bug. It violates the notion that "pointer equality shouldn't
> > matter" because the subPlan list *must* contain pointers to the actual
> > member objects of a plan node's other substructure.
> >
> > Moreover the subPlan list isn't even buying us much --- it wouldn't be
> > that expensive to scan the substructure directly for plan-type nodes
> > when necessary, exactly as SS_pull_subplan does. Arguably this would
> > take less time than is expended on memory allocation to build the
> > explicit subPlan list. So I suggest getting rid of the subPlan list
> > entirely, rather than hacking on copyfuncs.
>
> First, I apologize for any inconveniences in my implementation
> of subselect. I agreed that current handling of subPlan lists
> is bad, but parent plan need in this list for some initializations
> and SUBPLAN_EXPR expressions inside parent plan also need in
> corresponding subPlan nodes (to execute them).
>
> Well, this could be good solution:
>
> 1. Implement TopPlan node (upmost plan, we told about this and
> seems that Jan wanted implement it).
> 2. Construct list of _all_ subPlan inside planner and
> put this list into TopPlan node.
> 3. Put into Plan->subPlan list of _indices_ of subPlans used
> in this Plan (indices in TopPlan->subPlan list).
> 4. Use indices in SUBPLAN_EXPR, istead of subPlan pointers.
> 5. Add to EState and ExprContext pointer to TopPlan->subPlan
> list (to enable index --> node conversion in
> ExecSubPlan() & ExecInitSubPlan()).
>
> Unfortunately, I missed this solution year ago -:(
> And more of that, I have no time to implement this now, sorry.
>
> > Plans also have an "initPlan" list that seems to have the same kind of
> > problem. I don't really understand the difference between initPlans
>
> No problems here. As you see this list is just copied in copyfuncs
> and this is ok.
>
> > and subPlans --- plannodes.h says
> > List *initPlan; /* Init Plan nodes (un-correlated expr
> > * subselects) */
> > List *subPlan; /* Other SubPlan nodes */
> > which doesn't convey a whole lot to my mind. Does anyone understand
> > why this distinction is made? Is it really necessary?
>
> Uncorrelated expression subqueries are processed differently
> from all other subqueries.
>
> Vadim
>
>
--
Bruce Momjian | http://www.op.net/~candle
maillist(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 1999-07-07 02:06:27 | Re: [GENERAL] inet and cidr type problems |
Previous Message | Bruce Momjian | 1999-07-07 01:51:40 | Re: [HACKERS] Oops, I seem to have changed UNION's behavior |