Re: [HACKERS] explain.c: why trace PlanState and Plan trees separately?

2010-07-13 Thread Yeb Havinga

Tom Lane wrote:

The reason I'm on about this at the moment is that I think I see how to
get ruleutils to print PARAM_EXEC Params as the referenced expression
rather than $N ...
Wouldn't this obfuscate the plan more than printing subplan arguments at 
the call site?


regards,
Yeb Havinga


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] explain.c: why trace PlanState and Plan trees separately?

2010-07-13 Thread Tom Lane
Yeb Havinga yebhavi...@gmail.com writes:
 Tom Lane wrote:
 The reason I'm on about this at the moment is that I think I see how to
 get ruleutils to print PARAM_EXEC Params as the referenced expression
 rather than $N ...

 Wouldn't this obfuscate the plan more than printing subplan arguments at 
 the call site?

It would if subplans could have more than one call site, but they can't.

I do intend to force qualification of Vars that are printed as a result
of param expansion; for example consider a standard nestloop-with-
inner-indexscan plan:

NestLoop
Seq Scan on a
Index Scan on b
Index Cond: x = a.y

If y weren't qualified to show that it's not a variable of b, this could
be confusing.  But as long as we do that, it pretty much matches our
historical behavior.  Note that CVS HEAD is printing this case as

NestLoop
Seq Scan on a
Index Scan on b
Index Cond: x = $0

which is definitely not very helpful.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] explain.c: why trace PlanState and Plan trees separately?

2010-07-13 Thread Yeb Havinga

Tom Lane wrote:

Yeb Havinga yebhavi...@gmail.com writes:
  

Tom Lane wrote:


The reason I'm on about this at the moment is that I think I see how to
get ruleutils to print PARAM_EXEC Params as the referenced expression
rather than $N ...
  
Wouldn't this obfuscate the plan more than printing subplan arguments at 
the call site?



It would if subplans could have more than one call site, but they can't.

I do intend to force qualification of Vars that are printed as a result
of param expansion;
  
Will the new referenced expression printing also be used when printing 
subplans?


If yes, I do not have to submit the latest version of a patch I made for 
subplan argument printing (discussed earlier in this thread 
http://archives.postgresql.org/pgsql-hackers/2010-02/msg01602.php)


regards,
Yeb Havinga


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[HACKERS] explain.c: why trace PlanState and Plan trees separately?

2010-07-12 Thread Tom Lane
Currently, the recursion in ExplainNode() goes to some lengths to chase
down the PlanState and Plan trees independently.  This is a bit silly:
we could just chase the PlanState tree, and use each PlanState's plan
link when we needed to get to the matching Plan node.  I think this is a
holdover from long ago when the code worked only with Plan trees --- the
PlanState stuff was bolted on rather than replacing that logic entirely.
But there is no capacity for EXPLAINing a Plan tree without having
constructed a PlanState tree, and I don't foresee that we'd add one
(for one reason, EXPLAIN depends on ExecutorStart to perform permissions
checking for the referenced tables).  Any objections to getting rid of
the separate Plan argument?

The reason I'm on about this at the moment is that I think I see how to
get ruleutils to print PARAM_EXEC Params as the referenced expression
rather than $N ... but it depends on having the PlanState tree at hand.
So fixing that will destroy any last shred of credibility there might
be for EXPLAINing a Plan tree without PlanState.  In fact I'm thinking
I need to change deparse_context_for_plan() to take a PlanState not a
Plan.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers