Gurjeet, do you have a patch to be applied for this? ---------------------------------------------------------------------------
Gurjeet Singh wrote: > On 5/30/07, Tom Lane <[EMAIL PROTECTED]> wrote: > > > > Bruce Momjian <[EMAIL PROTECTED]> writes: > > > Gurjeet Singh wrote: > > >> But I did not understand the haste to commit the patch within almost > > half an > > >> hour of proposing the second version of the patch!!! > > > > > It happens some times when a patch applier has gotten as far as they can > > > go with a patch and wants to move on, with the willingness to return to > > > the patch if there is any additional feedback. > > > > Er, it was quite a bit more than half an hour; about 17 hours in fact: > > http://archives.postgresql.org/pgsql-patches/2007-05/msg00421.php > > http://archives.postgresql.org/pgsql-committers/2007-05/msg00315.php > > > I was referring to these two: > > http://archives.postgresql.org/pgsql-patches/2007-05/msg00431.php and > http://archives.postgresql.org/pgsql-committers/2007-05/msg00315.php > > > In any case this patch was just a working-out of ideas I'd proposed more > > than a month previously, so I didn't expect it to be controversial. > > > > But as Bruce says, nothing is set in stone at this point. If you have > > suggestions for improvements, we can tweak the hooks pretty much any > > time up till 8.3 final. > > > This being a community effort, we would expect that. > > I also wished to propose to allow the plugin to completely replace (or > augment) the plan produced by the planner (by passing in a double-pointer of > the plan to the plugin); but I was wary that the idea might get rejected, > for being too radical an idea. > > In the last version of the planner plugin patch, the plugins were maintained > as a list, hence allowing for multiple post-planner-plugins to work one > after the other (the variable PPPList); much like the layered I/O driver > architecture of Windows' NTFS sans the guarantee of ordering between the > plugins. To this we may add the ability to pass on the result plan of one > plugin to the next, letting them improve the plan incrementally. Next, we > can add string identifiers like I/O drivers to guarantee the order in which > the plugins will be executed. But again, maybe we don't need multiple > planners working simultaneously ATM. > > As for the current patch,I had only a few cosmetic changes in mind: > > The comment above planner.c:planner() says '...hook variable that lets a > plugin get control before and after the standard planning ...'; but if we > look at the code, we are just replacing the call to standard_planner(); we > are not calling the plugin before and after standard_planner(). > > Also, another cosmetic change like reducing an 'if' as follows: > > Change: > PlannedStmt * > planner(Query *parse, int cursorOptions, ParamListInfo boundParams) > { > PlannedStmt *result; > > if (planner_hook) > result = (*planner_hook) (parse, cursorOptions, boundParams); > else > result = standard_planner(parse, cursorOptions, boundParams); > return result; > } > > To: > PlannedStmt * > planner(Query *parse, int cursorOptions, ParamListInfo boundParams) > { > planner_hook_type planner_func = planner_hook ? planner_hook : > standard_planner; > > return (*planner_func) (parse, cursorOptions, boundParams); > } > > The extra IFs only disorient a normal flow of logic. These two statements > aren't too complicated for readability. > > Best regards, > > PS: We can make the code more compact (at the cost of readability) like so: > > return (*(planner_hook ? planner_hook : standard_planner))(parse, > cursorOptions, boundParams); > -- > [EMAIL PROTECTED] > [EMAIL PROTECTED] gmail | hotmail | yahoo }.com > > 17?29'34.37"N 78?30'59.76"E - Hyderabad * > 18?32'57.25"N 73?56'25.42"E - Pune > > Sent from my BlackLaptop device -- Bruce Momjian <[EMAIL PROTECTED]> http://momjian.us EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. + ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to [EMAIL PROTECTED] so that your message can get through to the mailing list cleanly