------=_Part_19264_26967748.1212521953966
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
All paths of optimizer are just in function "standard_planner", which
mainly
calls "subquery_planner", which just takes the rewrited structure "Query"
as
the main parameter. But system provides another way if you wannt to write
your own optimizer, that is: define the global var "planner_hook" to your
own optimizer function (please refer to function "planner"). So this is
one
of the way prevents the system takes it own optimizer routine.
If you want to modify the plan returned by the optimizer, you can add some
code just in the function "planner", i.e., takes result as the param of
your
routine.
Any way, It is needed that you get very familiar with the structure of
"PlannedStmt".
**********************************************************************
2008/6/3 John Cieslewicz <johnc@[EMAIL PROTECTED]
>:
I completely understand that what I am proposing is somewhat mad and I
didn't expect it to be easy.
Basically, I'm doing some research on a new operator and would like to
start
testing it by inserting it into a very specific place in very specific
plans
without having to do too much work in plan generation or optimization. I
think that I could do this by writing some code to inspect a plan and swap
out the piece that I care about. I realize this is a hack, but at the
moment
it's just for research purposes. Though I have worked with the internals
of
other db systems, I'm still getting familiar with postgres. Could such a
piece of code be placed in the optimizer just before it returns an
optimized
plan or can a plan be modified after it is returned by the optimizer?
John Cieslewicz.
------=_Part_19264_26967748.1212521953966
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
All paths of optimizer are just in function "standard_planner",
which
mainly calls "subquery_planner", which just takes the rewrited
structure "Query" as the main parameter. But system provides
another
way if you wannt to write your own optimizer, that is: define the
global var "planner_hook" to your own optimizer function (please
refer
to function "planner"). So this is one of the way prevents the
system
takes it own optimizer routine. <br>
<br>If you want to modify the plan returned by the optimizer, you can
add some code just in the function "planner", i.e., takes result
as the
param of your routine.<br><br>Any way, It is needed that you get very
familiar with the structure of "PlannedStmt".<br>
<br><br>**********************************************************************<br>2008/6/3
John Cieslewicz <<a
href="mailto:johnc@[EMAIL PROTECTED]
">johnc@[EMAIL PROTECTED]
>>:<br>I
completely understand that what I am proposing is somewhat mad and I
didn't expect it to be easy.<br>
<br>
Basically, I'm doing some research on a new operator and would like to
start testing it by inserting it into a very specific place in very
specific plans without having to do too much work in plan generation or
optimization. I think that I could do this by writing some code to
inspect a plan and swap out the piece that I care about. I realize this
is a hack, but at the moment it's just for research purposes. Though I
have worked with the internals of other db systems, I'm still getting
familiar with postgres. Could such a piece of code be placed in the
optimizer just before it returns an optimized plan or can a plan be
modified after it is returned by the optimizer?<br><font color="#888888">
<br>
John Cieslewicz.</font><br>
------=_Part_19264_26967748.1212521953966--


|