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:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user