提交 dd29fc2f 编写于 作者: T Tom Lane

Fix another place broken by new List implementation :-(. Per example

from goranpop@nspoint.net.  I think this escaped notice because in
simple cases the list is NIL on entry.
上级 84dbd5a8
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/backend/optimizer/geqo/geqo_eval.c,v 1.71 2004/08/29 05:06:43 momjian Exp $ * $PostgreSQL: pgsql/src/backend/optimizer/geqo/geqo_eval.c,v 1.72 2004/12/15 21:13:34 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -80,12 +80,17 @@ geqo_eval(Gene *tour, int num_gene, GeqoEvalData *evaldata) ...@@ -80,12 +80,17 @@ geqo_eval(Gene *tour, int num_gene, GeqoEvalData *evaldata)
oldcxt = MemoryContextSwitchTo(mycontext); oldcxt = MemoryContextSwitchTo(mycontext);
/* /*
* preserve root->join_rel_list, which gimme_tree changes; without * gimme_tree will add entries to root->join_rel_list, which may or may
* this, it'll be pointing at recycled storage after the * not already contain some entries. The newly added entries will be
* MemoryContextDelete below. * recycled by the MemoryContextDelete below, so we must ensure that
* the list is restored to its former state before exiting. With the
* new List implementation, the easiest way is to make a duplicate list
* that gimme_tree can modify.
*/ */
savelist = evaldata->root->join_rel_list; savelist = evaldata->root->join_rel_list;
evaldata->root->join_rel_list = list_copy(savelist);
/* construct the best path for the given combination of relations */ /* construct the best path for the given combination of relations */
joinrel = gimme_tree(tour, num_gene, evaldata); joinrel = gimme_tree(tour, num_gene, evaldata);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册