Commit 61aa8258 authored by Bruce Momjian's avatar Bruce Momjian

Optimizer rename.

parent 6724a507
...@@ -406,7 +406,7 @@ SET TIME ZONE { '<REPLACEABLE CLASS="PARAMETER">timezone</REPLACEABLE>' | LOCAL ...@@ -406,7 +406,7 @@ SET TIME ZONE { '<REPLACEABLE CLASS="PARAMETER">timezone</REPLACEABLE>' | LOCAL
</para> </para>
<para> <para>
This algorithm is on by default, which used GEQO for This algorithm is on by default, which used GEQO for
statements of six or more tables and indexes. statements of six or more tables.
(See the chapter on GEQO in the Programmer's Guide (See the chapter on GEQO in the Programmer's Guide
for more information). for more information).
</para> </para>
...@@ -677,7 +677,7 @@ SET TIME ZONE { '<REPLACEABLE CLASS="PARAMETER">timezone</REPLACEABLE>' | LOCAL ...@@ -677,7 +677,7 @@ SET TIME ZONE { '<REPLACEABLE CLASS="PARAMETER">timezone</REPLACEABLE>' | LOCAL
SET DATESTYLE TO 'ISO'; SET DATESTYLE TO 'ISO';
</programlisting> </programlisting>
<programlisting> <programlisting>
--Enable GEQO for queries with 4 or more tables and indexes --Enable GEQO for queries with 4 or more tables
-- --
SET GEQO ON=4; SET GEQO ON=4;
</programlisting> </programlisting>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* *
* Copyright (c) 1994, Regents of the University of California * Copyright (c) 1994, Regents of the University of California
* *
* $Id: geqo_eval.c,v 1.29 1999/02/13 23:16:07 momjian Exp $ * $Id: geqo_eval.c,v 1.30 1999/02/14 04:56:45 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -135,7 +135,7 @@ gimme_tree(Query *root, Gene *tour, int rel_count, int num_gene, RelOptInfo *out ...@@ -135,7 +135,7 @@ gimme_tree(Query *root, Gene *tour, int rel_count, int num_gene, RelOptInfo *out
} }
/* process new_rel->pathlist */ /* process new_rel->pathlist */
find_all_join_paths(root, new_rels); update_rels_pathlist_for_joins(root, new_rels);
/* prune new_rels */ /* prune new_rels */
/* MAU: is this necessary? */ /* MAU: is this necessary? */
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.31 1999/02/13 23:16:14 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.32 1999/02/14 04:56:46 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -43,7 +43,7 @@ bool _use_geqo_ = false; ...@@ -43,7 +43,7 @@ bool _use_geqo_ = false;
int32 _use_geqo_rels_ = GEQO_RELS; int32 _use_geqo_rels_ = GEQO_RELS;
static void find_rel_paths(Query *root, List *rels); static void find_base_rel_paths(Query *root, List *rels);
static List *find_join_paths(Query *root, List *outer_rels, int levels_needed); static List *find_join_paths(Query *root, List *outer_rels, int levels_needed);
#ifdef OPTIMIZER_DEBUG #ifdef OPTIMIZER_DEBUG
...@@ -71,10 +71,7 @@ find_paths(Query *root, List *rels) ...@@ -71,10 +71,7 @@ find_paths(Query *root, List *rels)
if (levels_needed <= 0) if (levels_needed <= 0)
return NIL; return NIL;
/* find_base_rel_paths(root, rels);
* Find the base relation paths.
*/
find_rel_paths(root, rels);
if (levels_needed <= 1) if (levels_needed <= 1)
{ {
...@@ -96,7 +93,7 @@ find_paths(Query *root, List *rels) ...@@ -96,7 +93,7 @@ find_paths(Query *root, List *rels)
} }
/* /*
* find_rel_paths * find_base_rel_paths
* Finds all paths available for scanning each relation entry in * Finds all paths available for scanning each relation entry in
* 'rels'. Sequential scan and any available indices are considered * 'rels'. Sequential scan and any available indices are considered
* if possible(indices are not considered for lower nesting levels). * if possible(indices are not considered for lower nesting levels).
...@@ -105,7 +102,7 @@ find_paths(Query *root, List *rels) ...@@ -105,7 +102,7 @@ find_paths(Query *root, List *rels)
* MODIFIES: rels * MODIFIES: rels
*/ */
static void static void
find_rel_paths(Query *root, List *rels) find_base_rel_paths(Query *root, List *rels)
{ {
List *temp; List *temp;
...@@ -154,7 +151,7 @@ find_rel_paths(Query *root, List *rels) ...@@ -154,7 +151,7 @@ find_rel_paths(Query *root, List *rels)
* finding ways to join relations(both original and derived) together. * finding ways to join relations(both original and derived) together.
* *
* 'outer_rels' is the current list of relations for which join paths * 'outer_rels' is the current list of relations for which join paths
* are to be found, i.e., he current list of relations that * are to be found, i.e., the current list of relations that
* have already been derived. * have already been derived.
* 'levels_needed' is the number of iterations needed * 'levels_needed' is the number of iterations needed
* *
...@@ -172,20 +169,8 @@ find_join_paths(Query *root, List *outer_rels, int levels_needed) ...@@ -172,20 +169,8 @@ find_join_paths(Query *root, List *outer_rels, int levels_needed)
* genetic query optimizer entry point * * genetic query optimizer entry point *
* <utesch@aut.tu-freiberg.de> * * <utesch@aut.tu-freiberg.de> *
*******************************************/ *******************************************/
{ if ((_use_geqo_) && length(root->base_relation_list_) >= _use_geqo_rels_)
List *temp; return lcons(geqo(root), NIL); /* returns *one* Rel, so lcons it */
int paths_to_consider = 0;
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 * * rest will be deprecated in case of GEQO *
...@@ -199,11 +184,11 @@ find_join_paths(Query *root, List *outer_rels, int levels_needed) ...@@ -199,11 +184,11 @@ find_join_paths(Query *root, List *outer_rels, int levels_needed)
* modify 'new_rels' accordingly, then eliminate redundant join * modify 'new_rels' accordingly, then eliminate redundant join
* relations. * relations.
*/ */
new_rels = find_join_rels(root, outer_rels); new_rels = make_new_rels_by_joins(root, outer_rels);
find_all_join_paths(root, new_rels); update_rels_pathlist_for_joins(root, new_rels);
prune_joinrels(new_rels); merge_rels_with_same_relids(new_rels);
#if 0 #if 0
/* /*
...@@ -232,11 +217,11 @@ find_join_paths(Query *root, List *outer_rels, int levels_needed) ...@@ -232,11 +217,11 @@ find_join_paths(Query *root, List *outer_rels, int levels_needed)
foreach(x, new_rels) foreach(x, new_rels)
{ {
rel = (RelOptInfo *) lfirst(x); rel = (RelOptInfo *) lfirst(x);
if (rel->size <= 0) if (rel->size <= 0)
rel->size = compute_rel_size(rel); rel->size = compute_rel_size(rel);
rel->width = compute_rel_width(rel); rel->width = compute_rel_width(rel);
/* #define OPTIMIZER_DEBUG */
#ifdef OPTIMIZER_DEBUG #ifdef OPTIMIZER_DEBUG
printf("levels left: %d\n", levels_needed); printf("levels left: %d\n", levels_needed);
debug_print_rel(root, rel); debug_print_rel(root, rel);
...@@ -259,6 +244,7 @@ find_join_paths(Query *root, List *outer_rels, int levels_needed) ...@@ -259,6 +244,7 @@ find_join_paths(Query *root, List *outer_rels, int levels_needed)
} }
else else
root->join_rel_list = new_rels; root->join_rel_list = new_rels;
if (!BushyPlanFlag) if (!BushyPlanFlag)
outer_rels = new_rels; outer_rels = new_rels;
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.23 1999/02/13 23:16:18 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.24 1999/02/14 04:56:46 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -42,7 +42,7 @@ static List *hash_inner_and_outer(RelOptInfo *joinrel, RelOptInfo *outerrel, Rel ...@@ -42,7 +42,7 @@ static List *hash_inner_and_outer(RelOptInfo *joinrel, RelOptInfo *outerrel, Rel
List *hashinfo_list); List *hashinfo_list);
/* /*
* find_all_join_paths * update_rels_pathlist_for_joins
* Creates all possible ways to process joins for each of the join * Creates all possible ways to process joins for each of the join
* relations in the list 'joinrels.' Each unique path will be included * relations in the list 'joinrels.' Each unique path will be included
* in the join relation's 'pathlist' field. * in the join relation's 'pathlist' field.
...@@ -62,16 +62,17 @@ static List *hash_inner_and_outer(RelOptInfo *joinrel, RelOptInfo *outerrel, Rel ...@@ -62,16 +62,17 @@ static List *hash_inner_and_outer(RelOptInfo *joinrel, RelOptInfo *outerrel, Rel
* It does a destructive modification. * It does a destructive modification.
*/ */
void void
find_all_join_paths(Query *root, List *joinrels) update_rels_pathlist_for_joins(Query *root, List *joinrels)
{ {
List *mergeinfo_list = NIL; List *mergeinfo_list = NIL;
List *hashinfo_list = NIL; List *hashinfo_list = NIL;
List *temp_list = NIL; List *temp_list = NIL;
List *path = NIL; List *path = NIL;
List *j;
while (joinrels != NIL) foreach(j, joinrels)
{ {
RelOptInfo *joinrel = (RelOptInfo *) lfirst(joinrels); RelOptInfo *joinrel = (RelOptInfo *) lfirst(j);
List *innerrelids; List *innerrelids;
List *outerrelids; List *outerrelids;
RelOptInfo *innerrel; RelOptInfo *innerrel;
...@@ -174,8 +175,6 @@ find_all_join_paths(Query *root, List *joinrels) ...@@ -174,8 +175,6 @@ find_all_join_paths(Query *root, List *joinrels)
* since the base level * since the base level
*/ */
} }
joinrels = lnext(joinrels);
} }
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.20 1999/02/13 23:16:18 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.21 1999/02/14 04:56:47 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -44,7 +44,7 @@ static void set_joinrel_size(RelOptInfo *joinrel, RelOptInfo *outer_rel, RelOptI ...@@ -44,7 +44,7 @@ static void set_joinrel_size(RelOptInfo *joinrel, RelOptInfo *outer_rel, RelOptI
JoinInfo * jinfo); JoinInfo * jinfo);
/* /*
* find_join_rels * make_new_rels_by_joins
* Find all possible joins for each of the outer join relations in * Find all possible joins for each of the outer join relations in
* 'outer_rels'. A rel node is created for each possible join relation, * 'outer_rels'. A rel node is created for each possible join relation,
* and the resulting list of nodes is returned. If at all possible, only * and the resulting list of nodes is returned. If at all possible, only
...@@ -57,7 +57,7 @@ static void set_joinrel_size(RelOptInfo *joinrel, RelOptInfo *outer_rel, RelOptI ...@@ -57,7 +57,7 @@ static void set_joinrel_size(RelOptInfo *joinrel, RelOptInfo *outer_rel, RelOptI
* Returns a list of rel nodes corresponding to the new join relations. * Returns a list of rel nodes corresponding to the new join relations.
*/ */
List * List *
find_join_rels(Query *root, List *outer_rels) make_new_rels_by_joins(Query *root, List *outer_rels)
{ {
List *joins = NIL; List *joins = NIL;
List *join_list = NIL; List *join_list = NIL;
...@@ -69,6 +69,10 @@ find_join_rels(Query *root, List *outer_rels) ...@@ -69,6 +69,10 @@ find_join_rels(Query *root, List *outer_rels)
if (!(joins = find_clause_joins(root, outer_rel, outer_rel->joininfo))) if (!(joins = find_clause_joins(root, outer_rel, outer_rel->joininfo)))
{ {
/*
* Oops, we have a relation that is not joined to any other
* relation. Cartesian product time.
*/
if (BushyPlanFlag) if (BushyPlanFlag)
joins = find_clauseless_joins(outer_rel, outer_rels); joins = find_clauseless_joins(outer_rel, outer_rels);
else else
...@@ -124,7 +128,8 @@ find_clause_joins(Query *root, RelOptInfo *outer_rel, List *joininfo_list) ...@@ -124,7 +128,8 @@ find_clause_joins(Query *root, RelOptInfo *outer_rel, List *joininfo_list)
{ {
if (rel != NULL) if (rel != NULL)
join_list = lappend(join_list, rel); join_list = lappend(join_list, rel);
rel = init_join_rel(get_base_rel(root, lfirsti(other_rels)), rel = init_join_rel(get_base_rel(root,
lfirsti(other_rels)),
outer_rel, outer_rel,
joininfo); joininfo);
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/prune.c,v 1.31 1999/02/13 23:16:23 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/prune.c,v 1.32 1999/02/14 04:56:47 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -24,10 +24,10 @@ ...@@ -24,10 +24,10 @@
#include "utils/elog.h" #include "utils/elog.h"
static List *prune_joinrel(RelOptInfo *rel, List *other_rels); static List *merge_rel_with_same_relids(RelOptInfo *rel, List *other_rels);
/* /*
* prune_joinrels * merge_rels_with_same_relids
* Removes any redundant relation entries from a list of rel nodes * Removes any redundant relation entries from a list of rel nodes
* 'rel_list'. Obviously, the first relation can't be a duplicate. * 'rel_list'. Obviously, the first relation can't be a duplicate.
* *
...@@ -35,7 +35,7 @@ static List *prune_joinrel(RelOptInfo *rel, List *other_rels); ...@@ -35,7 +35,7 @@ static List *prune_joinrel(RelOptInfo *rel, List *other_rels);
* *
*/ */
void void
prune_joinrels(List *rel_list) merge_rels_with_same_relids(List *rel_list)
{ {
List *i; List *i;
...@@ -44,11 +44,11 @@ prune_joinrels(List *rel_list) ...@@ -44,11 +44,11 @@ prune_joinrels(List *rel_list)
* deleted * deleted
*/ */
foreach(i, rel_list) foreach(i, rel_list)
lnext(i) = prune_joinrel((RelOptInfo *) lfirst(i), lnext(i)); lnext(i) = merge_rel_with_same_relids((RelOptInfo *) lfirst(i), lnext(i));
} }
/* /*
* prune_joinrel * merge_rel_with_same_relids
* Prunes those relations from 'other_rels' that are redundant with * Prunes those relations from 'other_rels' that are redundant with
* 'rel'. A relation is redundant if it is built up of the same * 'rel'. A relation is redundant if it is built up of the same
* relations as 'rel'. Paths for the redundant relation are merged into * relations as 'rel'. Paths for the redundant relation are merged into
...@@ -59,7 +59,7 @@ prune_joinrels(List *rel_list) ...@@ -59,7 +59,7 @@ prune_joinrels(List *rel_list)
* *
*/ */
static List * static List *
prune_joinrel(RelOptInfo *rel, List *other_rels) merge_rel_with_same_relids(RelOptInfo *rel, List *other_rels)
{ {
List *i = NIL; List *i = NIL;
List *result = NIL; List *result = NIL;
...@@ -126,7 +126,7 @@ merge_joinrels(List *rel_list1, List *rel_list2) ...@@ -126,7 +126,7 @@ merge_joinrels(List *rel_list1, List *rel_list2)
{ {
RelOptInfo *rel = (RelOptInfo *) lfirst(xrel); RelOptInfo *rel = (RelOptInfo *) lfirst(xrel);
rel_list2 = prune_joinrel(rel, rel_list2); rel_list2 = merge_rel_with_same_relids(rel, rel_list2);
} }
return append(rel_list1, rel_list2); return append(rel_list1, rel_list2);
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/initsplan.c,v 1.23 1999/02/13 23:16:29 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/initsplan.c,v 1.24 1999/02/14 04:56:50 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -303,16 +303,16 @@ add_vars_to_targetlist(Query *root, List *vars, List *join_relids) ...@@ -303,16 +303,16 @@ add_vars_to_targetlist(Query *root, List *vars, List *join_relids)
*****************************************************************************/ *****************************************************************************/
/* /*
* init_join_info * set_joininfo_mergeable_hashable
* Set the MergeJoinable or HashJoinable field for every joininfo node * Set the MergeJoinable or HashJoinable field for every joininfo node
* (within a rel node) and the MergeJoinOrder or HashJoinOp field for * (within a rel node) and the mergejoinorder or hashjoinop field for
* each restrictinfo node(within a joininfo node) for all relations in a * each restrictinfo node(within a joininfo node) for all relations in a
* query. * query.
* *
* Returns nothing. * Returns nothing.
*/ */
void void
init_join_info(List *rel_list) set_joininfo_mergeable_hashable(List *rel_list)
{ {
List *x, List *x,
*y, *y,
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.31 1999/02/13 23:16:30 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.32 1999/02/14 04:56:50 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -257,12 +257,7 @@ subplanner(Query *root, ...@@ -257,12 +257,7 @@ subplanner(Query *root,
add_restrict_and_join_to_rels(root, qual); add_restrict_and_join_to_rels(root, qual);
add_missing_vars_to_tlist(root, flat_tlist); add_missing_vars_to_tlist(root, flat_tlist);
/* set_joininfo_mergeable_hashable(root->base_rel_list);
* Find all possible scan and join paths. Mark all the clauses and
* relations that can be processed using special join methods, then do
* the exhaustive path search.
*/
init_join_info(root->base_rel_list);
final_rel_list = find_paths(root, root->base_rel_list); final_rel_list = find_paths(root, root->base_rel_list);
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* Copyright (c) 1994, Regents of the University of California * Copyright (c) 1994, Regents of the University of California
* *
* $Id: paths.h,v 1.15 1999/02/13 23:21:50 momjian Exp $ * $Id: paths.h,v 1.16 1999/02/14 04:56:55 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -35,7 +35,7 @@ extern List *find_index_paths(Query *root, RelOptInfo *rel, List *indices, ...@@ -35,7 +35,7 @@ extern List *find_index_paths(Query *root, RelOptInfo *rel, List *indices,
* joinpath.h * joinpath.h
* routines to create join paths * routines to create join paths
*/ */
extern void find_all_join_paths(Query *root, List *joinrels); extern void update_rels_pathlist_for_joins(Query *root, List *joinrels);
/* /*
...@@ -77,14 +77,14 @@ extern MergeInfo *match_order_mergeinfo(PathOrder *ordering, ...@@ -77,14 +77,14 @@ extern MergeInfo *match_order_mergeinfo(PathOrder *ordering,
* joinrels.h * joinrels.h
* routines to determine which relations to join * routines to determine which relations to join
*/ */
extern List *find_join_rels(Query *root, List *outer_rels); extern List *make_new_rels_by_joins(Query *root, List *outer_rels);
extern void add_new_joininfos(Query *root, List *joinrels, List *outerrels); extern void add_new_joininfos(Query *root, List *joinrels, List *outerrels);
extern List *final_join_rels(List *join_rel_list); extern List *final_join_rels(List *join_rel_list);
/* /*
* prototypes for path/prune.c * prototypes for path/prune.c
*/ */
extern void prune_joinrels(List *rel_list); extern void merge_rels_with_same_relids(List *rel_list);
extern void rels_set_cheapest(List *rel_list); extern void rels_set_cheapest(List *rel_list);
extern List *merge_joinrels(List *rel_list1, List *rel_list2); extern List *merge_joinrels(List *rel_list1, List *rel_list2);
extern List *prune_oldrels(List *old_rels); extern List *prune_oldrels(List *old_rels);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* *
* Copyright (c) 1994, Regents of the University of California * Copyright (c) 1994, Regents of the University of California
* *
* $Id: planmain.h,v 1.21 1999/02/13 23:21:50 momjian Exp $ * $Id: planmain.h,v 1.22 1999/02/14 04:56:58 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -43,7 +43,7 @@ extern Unique *make_unique(List *tlist, Plan *lefttree, char *uniqueAttr); ...@@ -43,7 +43,7 @@ extern Unique *make_unique(List *tlist, Plan *lefttree, char *uniqueAttr);
*/ */
extern void make_var_only_tlist(Query *root, List *tlist); extern void make_var_only_tlist(Query *root, List *tlist);
extern void add_restrict_and_join_to_rels(Query *root, List *clauses); extern void add_restrict_and_join_to_rels(Query *root, List *clauses);
extern void init_join_info(List *rel_list); extern void set_joininfo_mergeable_hashable(List *rel_list);
extern void add_missing_vars_to_tlist(Query *root, List *tlist); extern void add_missing_vars_to_tlist(Query *root, List *tlist);
/* /*
......
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
* *
* version.h.in-- * version.h.in
* this file contains the interface to version.c. * this file contains the interface to version.c.
* Also some parameters. * Also some parameters.
* *
* $Header: /cvsroot/pgsql/src/include/Attic/version.h.in,v 1.4 1998/12/25 02:20:11 momjian Exp $ * $Header: /cvsroot/pgsql/src/include/Attic/version.h.in,v 1.5 1999/02/14 04:56:54 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
......
.\" This is -*-nroff-*- .\" This is -*-nroff-*-
.\" XXX standard disclaimer belongs here.... .\" XXX standard disclaimer belongs here....
.\" $Header: /cvsroot/pgsql/src/man/Attic/set.l,v 1.13 1999/02/02 20:30:18 momjian Exp $ .\" $Header: /cvsroot/pgsql/src/man/Attic/set.l,v 1.14 1999/02/14 04:57:02 momjian Exp $
.TH SET SQL 05/14/97 PostgreSQL PostgreSQL .TH SET SQL 05/14/97 PostgreSQL PostgreSQL
.SH NAME .SH NAME
set - set run-time parameters for session set - set run-time parameters for session
...@@ -44,7 +44,7 @@ determines the output format for the date and time data types. ...@@ -44,7 +44,7 @@ determines the output format for the date and time data types.
.IR GEQO .IR GEQO
enables or disables the genetic optimizer algorithm. This algorithm is enables or disables the genetic optimizer algorithm. This algorithm is
.IR on .IR on
by default, which used GEQO for statements of six or more tables and indexes. by default, which used GEQO for statements of six or more tables.
Set the Set the
.IR Programmer's Guide .IR Programmer's Guide
for more information. for more information.
...@@ -101,7 +101,7 @@ set DateStyle to 'SQL,European' ...@@ -101,7 +101,7 @@ set DateStyle to 'SQL,European'
.PP .PP
.nf .nf
-- --
--Use GEQO for statements with 4 or more tables and indexes --Use GEQO for statements with 4 or more tables
-- --
set GEQO to 'on=4' set GEQO to 'on=4'
-- --
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment