</para>
<para>
This algorithm is on by default, which used GEQO for
- statements of six or more tables.
+ statements of six or more tables and indexes.
(See the chapter on GEQO in the Programmer's Guide
for more information).
</para>
--
SET DATESTYLE TO 'ISO';
</programlisting>
+ <programlisting>
+ --Enable GEQO for queries with 4 or more tables and indexes
+ --
+ SET GEQO ON=4;
+ </programlisting>
<programlisting>
--Set GEQO to default:
--
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.23 1998/09/01 04:29:27 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.24 1999/02/02 20:30:05 momjian Exp $
*
*-------------------------------------------------------------------------
*/
if (levels_needed <= 1)
{
-
/*
* Unsorted single relation, no more processing is required.
*/
}
else
{
-
/*
* this means that joins or sorts are required. set selectivities
* of clauses that have not been set by an index.
rel_index_scan_list = find_index_paths(root,
rel,
- find_relation_indices(root, rel),
+ find_relation_indices(root, rel),
rel->clauseinfo,
rel->joininfo);
* genetic query optimizer entry point *
* <utesch@aut.tu-freiberg.de> *
*******************************************/
+ {
+ List *temp;
+ int paths_to_consider = 0;
- if ((_use_geqo_) && length(root->base_rel_list) >= _use_geqo_rels_)
- return lcons(geqo(root), NIL); /* returns *one* RelOptInfo, so
- * lcons it */
+ foreach(temp, outer_rels)
+ {
+ RelOptInfo *rel = (RelOptInfo *) lfirst(temp);
+ paths_to_consider += length(rel->pathlist);
+ }
+ if ((_use_geqo_) && paths_to_consider >= _use_geqo_rels_)
+ /* returns _one_ RelOptInfo, so lcons it */
+ return lcons(geqo(root), NIL);
+ }
+
/*******************************************
* rest will be deprecated in case of GEQO *
*******************************************/
while (--levels_needed)
{
-
/*
* Determine all possible pairs of relations to be joined at this
* level. Determine paths for joining these relation pairs and
prune_joinrels(new_rels);
#if 0
-
/*
* * for each expensive predicate in each path in each distinct
* rel, * consider doing pullup -- JMH
if (BushyPlanFlag)
{
-
/*
* prune rels that have been completely incorporated into new
* join rels
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.66 1999/02/02 03:44:34 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.67 1999/02/02 20:30:07 momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
least->val.val.str = match_least;
most->val.type = T_String;
most->val.val.str = match_most;
+#ifdef USE_LOCALE
+ result = makeA_Expr(AND, NULL,
+ makeA_Expr(OP, "~", lexpr, rexpr),
+ makeA_Expr(OP, ">=", lexpr, (Node *)least));
+#else
result = makeA_Expr(AND, NULL,
makeA_Expr(OP, "~", lexpr, rexpr),
makeA_Expr(AND, NULL,
makeA_Expr(OP, ">=", lexpr, (Node *)least),
makeA_Expr(OP, "<=", lexpr, (Node *)most)));
+#endif
}
}
}
least->val.val.str = match_least;
most->val.type = T_String;
most->val.val.str = match_most;
+#ifdef USE_LOCALE
+ result = makeA_Expr(AND, NULL,
+ makeA_Expr(OP, "~~", lexpr, rexpr),
+ makeA_Expr(OP, ">=", lexpr, (Node *)least));
+#else
result = makeA_Expr(AND, NULL,
makeA_Expr(OP, "~~", lexpr, rexpr),
makeA_Expr(AND, NULL,
makeA_Expr(OP, ">=", lexpr, (Node *)least),
makeA_Expr(OP, "<=", lexpr, (Node *)most)));
+#endif
}
}
}
.\" This is -*-nroff-*-
.\" XXX standard disclaimer belongs here....
-.\" $Header: /cvsroot/pgsql/src/man/Attic/set.l,v 1.12 1999/02/02 03:45:33 momjian Exp $
+.\" $Header: /cvsroot/pgsql/src/man/Attic/set.l,v 1.13 1999/02/02 20:30:18 momjian Exp $
.TH SET SQL 05/14/97 PostgreSQL PostgreSQL
.SH NAME
set - set run-time parameters for session
.IR GEQO
enables or disables the genetic optimizer algorithm. This algorithm is
.IR on
-by default, which used GEQO for statements of six or more tables.
+by default, which used GEQO for statements of six or more tables and indexes.
Set the
.IR Programmer's Guide
for more information.
.PP
.nf
--
---Use GEQO for statements with 4 or more tables
+--Use GEQO for statements with 4 or more tables and indexes
--
set GEQO to 'on=4'
--