mirror of
https://github.com/postgres/postgres.git
synced 2025-06-14 18:42:34 +03:00
Enable bushy and right-hand queries by default.
This commit is contained in:
@ -413,64 +413,12 @@ SET TIME ZONE { '<REPLACEABLE CLASS="PARAMETER">timezone</REPLACEABLE>' | LOCAL
|
|||||||
<para>
|
<para>
|
||||||
The frontend may be initialized by setting PGGEQO
|
The frontend may be initialized by setting PGGEQO
|
||||||
environment variable.
|
environment variable.
|
||||||
|
|
||||||
<variablelist>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>
|
|
||||||
R_PLANS
|
|
||||||
</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Determines whether right-hand plan evaluation is allowed:
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>
|
|
||||||
On
|
|
||||||
</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
enables right-hand evaluation of plans.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>
|
|
||||||
Off
|
|
||||||
</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
disables right-hand evaluation of plans.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>
|
|
||||||
DEFAULT
|
|
||||||
</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Equivalent to specifying <command>SET R_PLANS='off'</command>.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
It may be useful when joining big relations with
|
It may be useful when joining big relations with
|
||||||
small ones. This algorithm is off by default.
|
small ones. This algorithm is off by default.
|
||||||
It's not used by GEQO anyway.
|
It's not used by GEQO anyway.
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The frontend may be initialized by setting the PGRPLANS
|
|
||||||
environment variable.
|
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>
|
||||||
@ -527,7 +475,7 @@ SET TIME ZONE { '<REPLACEABLE CLASS="PARAMETER">timezone</REPLACEABLE>' | LOCAL
|
|||||||
It's not used by GEQO anyway.
|
It's not used by GEQO anyway.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The frontend may be initialized by setting the PGRPLANS
|
The frontend may be initialized by setting the PGKSQO
|
||||||
environment variable.
|
environment variable.
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
@ -686,11 +634,6 @@ SET TIME ZONE { '<REPLACEABLE CLASS="PARAMETER">timezone</REPLACEABLE>' | LOCAL
|
|||||||
--
|
--
|
||||||
SET GEQO = DEFAULT;
|
SET GEQO = DEFAULT;
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<programlisting>
|
|
||||||
--Turn on right-hand evaluation of plans:
|
|
||||||
--
|
|
||||||
SET R_PLANS TO 'on';
|
|
||||||
</programlisting>
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
--set the timezone for Berkeley, California:
|
--set the timezone for Berkeley, California:
|
||||||
SET TIME ZONE 'PST8PDT';
|
SET TIME ZONE 'PST8PDT';
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* Routines for handling of 'SET var TO',
|
* Routines for handling of 'SET var TO',
|
||||||
* 'SHOW var' and 'RESET var' statements.
|
* 'SHOW var' and 'RESET var' statements.
|
||||||
*
|
*
|
||||||
* $Id: variable.c,v 1.18 1998/12/18 09:10:20 vadim Exp $
|
* $Id: variable.c,v 1.19 1999/02/18 06:00:44 momjian Exp $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -36,9 +36,6 @@ static bool parse_cost_heap(const char *);
|
|||||||
static bool show_cost_index(void);
|
static bool show_cost_index(void);
|
||||||
static bool reset_cost_index(void);
|
static bool reset_cost_index(void);
|
||||||
static bool parse_cost_index(const char *);
|
static bool parse_cost_index(const char *);
|
||||||
static bool show_r_plans(void);
|
|
||||||
static bool reset_r_plans(void);
|
|
||||||
static bool parse_r_plans(const char *);
|
|
||||||
static bool reset_geqo(void);
|
static bool reset_geqo(void);
|
||||||
static bool show_geqo(void);
|
static bool show_geqo(void);
|
||||||
static bool parse_geqo(const char *);
|
static bool parse_geqo(const char *);
|
||||||
@ -58,7 +55,6 @@ extern Cost _cpu_page_wight_;
|
|||||||
extern Cost _cpu_index_page_wight_;
|
extern Cost _cpu_index_page_wight_;
|
||||||
extern bool _use_geqo_;
|
extern bool _use_geqo_;
|
||||||
extern int32 _use_geqo_rels_;
|
extern int32 _use_geqo_rels_;
|
||||||
extern bool _use_right_sided_plans_;
|
|
||||||
extern bool _use_keyset_query_optimizer;
|
extern bool _use_keyset_query_optimizer;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -242,53 +238,6 @@ reset_geqo(void)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
* R_PLANS
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static bool
|
|
||||||
parse_r_plans(const char *value)
|
|
||||||
{
|
|
||||||
if (value == NULL)
|
|
||||||
{
|
|
||||||
reset_r_plans();
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcasecmp(value, "on") == 0)
|
|
||||||
_use_right_sided_plans_ = true;
|
|
||||||
else if (strcasecmp(value, "off") == 0)
|
|
||||||
_use_right_sided_plans_ = false;
|
|
||||||
else
|
|
||||||
elog(ERROR, "Bad value for Right-sided Plans (%s)", value);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool
|
|
||||||
show_r_plans()
|
|
||||||
{
|
|
||||||
|
|
||||||
if (_use_right_sided_plans_)
|
|
||||||
elog(NOTICE, "Right-sided Plans are ON");
|
|
||||||
else
|
|
||||||
elog(NOTICE, "Right-sided Plans are OFF");
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool
|
|
||||||
reset_r_plans()
|
|
||||||
{
|
|
||||||
|
|
||||||
#ifdef USE_RIGHT_SIDED_PLANS
|
|
||||||
_use_right_sided_plans_ = true;
|
|
||||||
#else
|
|
||||||
_use_right_sided_plans_ = false;
|
|
||||||
#endif
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* COST_HEAP
|
* COST_HEAP
|
||||||
@ -659,9 +608,6 @@ struct VariableParsers
|
|||||||
{
|
{
|
||||||
"geqo", parse_geqo, show_geqo, reset_geqo
|
"geqo", parse_geqo, show_geqo, reset_geqo
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"r_plans", parse_r_plans, show_r_plans, reset_r_plans
|
|
||||||
},
|
|
||||||
#ifdef MULTIBYTE
|
#ifdef MULTIBYTE
|
||||||
{
|
{
|
||||||
"client_encoding", parse_client_encoding, show_client_encoding, reset_client_encoding
|
"client_encoding", parse_client_encoding, show_client_encoding, reset_client_encoding
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.29 1999/02/18 05:26:19 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.30 1999/02/18 06:00:46 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -23,14 +23,6 @@
|
|||||||
#include "optimizer/joininfo.h"
|
#include "optimizer/joininfo.h"
|
||||||
#include "optimizer/pathnode.h"
|
#include "optimizer/pathnode.h"
|
||||||
|
|
||||||
#ifdef USE_RIGHT_SIDED_PLANS
|
|
||||||
bool _use_right_sided_plans_ = true;
|
|
||||||
|
|
||||||
#else
|
|
||||||
bool _use_right_sided_plans_ = false;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static List *new_joininfo_list(List *joininfo_list, Relids join_relids);
|
static List *new_joininfo_list(List *joininfo_list, Relids join_relids);
|
||||||
static bool nonoverlap_sets(List *s1, List *s2);
|
static bool nonoverlap_sets(List *s1, List *s2);
|
||||||
static bool is_subset(List *s1, List *s2);
|
static bool is_subset(List *s1, List *s2);
|
||||||
@ -122,8 +114,7 @@ make_rels_by_clause_joins(Query *root, RelOptInfo *old_rel,
|
|||||||
join_list = lappend(join_list, joined_rel);
|
join_list = lappend(join_list, joined_rel);
|
||||||
|
|
||||||
/* Right-sided plan */
|
/* Right-sided plan */
|
||||||
if (_use_right_sided_plans_ &&
|
if (length(old_rel->relids) > 1)
|
||||||
length(old_rel->relids) > 1)
|
|
||||||
{
|
{
|
||||||
joined_rel = make_join_rel(
|
joined_rel = make_join_rel(
|
||||||
get_base_rel(root, lfirsti(unjoined_relids)),
|
get_base_rel(root, lfirsti(unjoined_relids)),
|
||||||
@ -133,7 +124,7 @@ make_rels_by_clause_joins(Query *root, RelOptInfo *old_rel,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BushyPlanFlag && only_relids == NIL) /* no bushy from geqo */
|
if (only_relids == NIL) /* no bushy from geqo */
|
||||||
{
|
{
|
||||||
List *r;
|
List *r;
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.102 1999/02/18 05:26:24 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.103 1999/02/18 06:00:49 momjian Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* this is the "main" module of the postgres backend and
|
* this is the "main" module of the postgres backend and
|
||||||
@ -907,7 +907,7 @@ usage(char *progname)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Usage: %s [options] [dbname]\n", progname);
|
"Usage: %s [options] [dbname]\n", progname);
|
||||||
#ifdef USE_ASSERT_CHECKING
|
#ifdef USE_ASSERT_CHECKING
|
||||||
fprintf(stderr, " A: enable/disable assert checking\n");
|
fprintf(stderr, "\t-A enable/disable assert checking\n");
|
||||||
#endif
|
#endif
|
||||||
fprintf(stderr, "\t-B buffers\tset number of buffers in buffer pool\n");
|
fprintf(stderr, "\t-B buffers\tset number of buffers in buffer pool\n");
|
||||||
fprintf(stderr, "\t-C \t\tsupress version info\n");
|
fprintf(stderr, "\t-C \t\tsupress version info\n");
|
||||||
@ -1017,7 +1017,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
|
|||||||
optind = 1; /* reset after postmaster usage */
|
optind = 1; /* reset after postmaster usage */
|
||||||
|
|
||||||
while ((flag = getopt(argc, argv,
|
while ((flag = getopt(argc, argv,
|
||||||
"A:B:bCD:d:Eef:iK:Lm:MNo:P:pQS:st:v:x:FW:"))
|
"A:B:CD:d:Eef:iK:Lm:MNo:P:pQS:st:v:x:FW:"))
|
||||||
!= EOF)
|
!= EOF)
|
||||||
switch (flag)
|
switch (flag)
|
||||||
{
|
{
|
||||||
@ -1522,7 +1522,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
|
|||||||
if (!IsUnderPostmaster)
|
if (!IsUnderPostmaster)
|
||||||
{
|
{
|
||||||
puts("\nPOSTGRES backend interactive interface ");
|
puts("\nPOSTGRES backend interactive interface ");
|
||||||
puts("$Revision: 1.102 $ $Date: 1999/02/18 05:26:24 $\n");
|
puts("$Revision: 1.103 $ $Date: 1999/02/18 06:00:49 $\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.92 1999/02/13 23:22:40 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.93 1999/02/18 06:01:00 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -136,9 +136,6 @@ static struct EnvironmentOptions
|
|||||||
{
|
{
|
||||||
"PGCOSTINDEX", "cost_index"
|
"PGCOSTINDEX", "cost_index"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"PGRPLANS", "r_plans"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"PGGEQO", "geqo"
|
"PGGEQO", "geqo"
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" 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.14 1999/02/14 04:57:02 momjian Exp $
|
.\" $Header: /cvsroot/pgsql/src/man/Attic/set.l,v 1.15 1999/02/18 06:01:11 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
|
||||||
@ -60,24 +60,6 @@ for more information.
|
|||||||
on=10 - use for statements with 10 or more tables
|
on=10 - use for statements with 10 or more tables
|
||||||
off - do not use the genetic optimizer
|
off - do not use the genetic optimizer
|
||||||
.fi
|
.fi
|
||||||
.PP
|
|
||||||
.IR R_PLANS
|
|
||||||
enables or disables right-hand evaluation of plans. It may be useful
|
|
||||||
when joining big relations with small ones. This algorithm is
|
|
||||||
.IR off
|
|
||||||
by default. It's not used by GEQO anyway.
|
|
||||||
|
|
||||||
.if n .ta 5 +15 +40
|
|
||||||
.if t .ta 0.5i +1.5i +3.0i
|
|
||||||
.in 0
|
|
||||||
.nf
|
|
||||||
.ce 1
|
|
||||||
\fBR_PLANS Values\fR
|
|
||||||
|
|
||||||
on - turn right-hand plan evaluation 'on'
|
|
||||||
off - do not use right-hand plan evaluation
|
|
||||||
.fi
|
|
||||||
|
|
||||||
.PP
|
.PP
|
||||||
.IR QUERY_LIMIT
|
.IR QUERY_LIMIT
|
||||||
restricts the number of rows returned by a query.
|
restricts the number of rows returned by a query.
|
||||||
|
Reference in New Issue
Block a user