1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-10 17:42:29 +03:00

Allow index use with OR clauses.

This commit is contained in:
Bruce Momjian
1998-08-01 22:12:13 +00:00
parent 0668aa8817
commit 0a2e5cdfc9
9 changed files with 289 additions and 318 deletions

View File

@@ -1,4 +1,4 @@
/*-------------------------------------------------------------------------
/*-------------------------------------------------------------------------
*
* copyfuncs.c--
* Copy functions for Postgres tree nodes.
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.44 1998/07/18 04:22:25 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.45 1998/08/01 22:12:05 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -990,16 +990,16 @@ _copyArrayRef(ArrayRef *from)
*/
/* ----------------
* _copyRel
* _copyRelOptInfo
* ----------------
*/
/*
** when you change this, also make sure to fix up xfunc_copyRel in
** when you change this, also make sure to fix up xfunc_copyRelOptInfo in
** planner/path/xfunc.c accordingly!!!
** -- JMH, 8/2/93
*/
static RelOptInfo *
_copyRel(RelOptInfo *from)
_copyRelOptInfo(RelOptInfo *from)
{
RelOptInfo *newnode = makeNode(RelOptInfo);
int i,
@@ -1735,7 +1735,7 @@ copyObject(void *from)
* RELATION NODES
*/
case T_RelOptInfo:
retval = _copyRel(from);
retval = _copyRelOptInfo(from);
break;
case T_Path:
retval = _copyPath(from);

View File

@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.16 1998/02/26 04:32:07 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.17 1998/08/01 22:12:07 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -302,6 +302,19 @@ _equalCInfo(CInfo *a, CInfo *b)
(b->indexids)));
}
/*
* RelOptInfo is a subclass of Node.
*/
static bool
_equalRelOptInfo(RelOptInfo *a, RelOptInfo *b)
{
Assert(IsA(a, RelOptInfo));
Assert(IsA(b, RelOptInfo));
return (equal((a->relids),
(b->relids)));
}
static bool
_equalJoinMethod(JoinMethod *a, JoinMethod *b)
{
@@ -663,6 +676,9 @@ equal(void *a, void *b)
case T_CInfo:
retval = _equalCInfo(a, b);
break;
case T_RelOptInfo:
retval = _equalRelOptInfo(a, b);
break;
case T_JoinMethod:
retval = _equalJoinMethod(a, b);
break;

View File

@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.41 1998/07/18 04:22:26 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.42 1998/08/01 22:12:08 momjian Exp $
*
* NOTES
* Every (plan) node in POSTGRES has an associated "out" routine which
@@ -990,7 +990,7 @@ _outEState(StringInfo str, EState *node)
* Stuff from relation.h
*/
static void
_outRel(StringInfo str, RelOptInfo *node)
_outRelOptInfo(StringInfo str, RelOptInfo *node)
{
char buf[500];
@@ -1788,7 +1788,7 @@ _outNode(StringInfo str, void *obj)
_outEState(str, obj);
break;
case T_RelOptInfo:
_outRel(str, obj);
_outRelOptInfo(str, obj);
break;
case T_TargetEntry:
_outTargetEntry(str, obj);

View File

@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.33 1998/07/18 04:22:26 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.34 1998/08/01 22:12:09 momjian Exp $
*
* NOTES
* Most of the read functions for plan nodes are tested. (In fact, they
@@ -1218,11 +1218,11 @@ _readEState()
*/
/* ----------------
* _readRel
* _readRelOptInfo
* ----------------
*/
static RelOptInfo *
_readRel()
_readRelOptInfo()
{
RelOptInfo *local_node;
char *token;
@@ -1991,7 +1991,7 @@ parsePlanString(void)
else if (!strncmp(token, "ESTATE", length))
return_value = _readEState();
else if (!strncmp(token, "RELOPTINFO", length))
return_value = _readRel();
return_value = _readRelOptInfo();
else if (!strncmp(token, "TARGETENTRY", length))
return_value = _readTargetEntry();
else if (!strncmp(token, "RTE", length))