Remove Existential, and ifdef out generate_fjoin. Neither did anything.
This commit is contained in:
parent
4469eb63a3
commit
6a45941f2f
|
@ -14,7 +14,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/executor/execTuples.c,v 1.12 1997/11/26 01:10:54 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/executor/execTuples.c,v 1.13 1997/12/18 12:53:42 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -888,8 +888,6 @@ NodeGetResultTupleSlot(Plan *node)
|
||||||
* the node's inner or outer subplan easily without having
|
* the node's inner or outer subplan easily without having
|
||||||
* to inspect the subplan.. -cim 10/16/89
|
* to inspect the subplan.. -cim 10/16/89
|
||||||
*
|
*
|
||||||
* Assume that for existential nodes, we get the targetlist out
|
|
||||||
* of the right node's targetlist
|
|
||||||
* ----------------------------------------------------------------
|
* ----------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.19 1997/12/18 05:58:40 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.20 1997/12/18 12:53:48 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -108,24 +108,6 @@ _copyPlan(Plan *from)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ----------------
|
|
||||||
* _copyExistential
|
|
||||||
* ----------------
|
|
||||||
*/
|
|
||||||
static Existential *
|
|
||||||
_copyExistential(Existential *from)
|
|
||||||
{
|
|
||||||
Existential *newnode = makeNode(Existential);
|
|
||||||
|
|
||||||
/* ----------------
|
|
||||||
* copy node superclass fields
|
|
||||||
* ----------------
|
|
||||||
*/
|
|
||||||
CopyPlanFields(from, newnode);
|
|
||||||
|
|
||||||
return newnode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
* _copyResult
|
* _copyResult
|
||||||
* ----------------
|
* ----------------
|
||||||
|
@ -1623,9 +1605,6 @@ copyObject(void *from)
|
||||||
case T_Plan:
|
case T_Plan:
|
||||||
retval = _copyPlan(from);
|
retval = _copyPlan(from);
|
||||||
break;
|
break;
|
||||||
case T_Existential:
|
|
||||||
retval = _copyExistential(from);
|
|
||||||
break;
|
|
||||||
case T_Result:
|
case T_Result:
|
||||||
retval = _copyResult(from);
|
retval = _copyResult(from);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.11 1997/12/04 23:20:32 thomas Exp $
|
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.12 1997/12/18 12:53:51 momjian Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* Every (plan) node in POSTGRES has an associated "out" routine which
|
* Every (plan) node in POSTGRES has an associated "out" routine which
|
||||||
|
@ -258,21 +258,6 @@ _outResult(StringInfo str, Result *node)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Existential is a subclass of Plan.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
_outExistential(StringInfo str, Existential *node)
|
|
||||||
{
|
|
||||||
char buf[500];
|
|
||||||
|
|
||||||
sprintf(buf, "EXISTENTIAL");
|
|
||||||
appendStringInfo(str, buf);
|
|
||||||
_outPlanInfo(str, (Plan *) node);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Append is a subclass of Plan.
|
* Append is a subclass of Plan.
|
||||||
*/
|
*/
|
||||||
|
@ -1641,9 +1626,6 @@ _outNode(StringInfo str, void *obj)
|
||||||
case T_Result:
|
case T_Result:
|
||||||
_outResult(str, obj);
|
_outResult(str, obj);
|
||||||
break;
|
break;
|
||||||
case T_Existential:
|
|
||||||
_outExistential(str, obj);
|
|
||||||
break;
|
|
||||||
case T_Append:
|
case T_Append:
|
||||||
_outAppend(str, obj);
|
_outAppend(str, obj);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/nodes/print.c,v 1.11 1997/11/25 21:59:44 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/nodes/print.c,v 1.12 1997/12/18 12:53:56 momjian Exp $
|
||||||
*
|
*
|
||||||
* HISTORY
|
* HISTORY
|
||||||
* AUTHOR DATE MAJOR EVENT
|
* AUTHOR DATE MAJOR EVENT
|
||||||
|
@ -304,9 +304,6 @@ plannode_type(Plan *p)
|
||||||
case T_Plan:
|
case T_Plan:
|
||||||
return "PLAN";
|
return "PLAN";
|
||||||
break;
|
break;
|
||||||
case T_Existential:
|
|
||||||
return "EXISTENTIAL";
|
|
||||||
break;
|
|
||||||
case T_Result:
|
case T_Result:
|
||||||
return "RESULT";
|
return "RESULT";
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.10 1997/10/25 01:09:30 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.11 1997/12/18 12:53:59 momjian Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* Most of the read functions for plan nodes are tested. (In fact, they
|
* Most of the read functions for plan nodes are tested. (In fact, they
|
||||||
|
@ -217,24 +217,6 @@ _readResult()
|
||||||
return (local_node);
|
return (local_node);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------
|
|
||||||
* _readExistential
|
|
||||||
*
|
|
||||||
* Existential nodes are only used by the planner.
|
|
||||||
* ----------------
|
|
||||||
*/
|
|
||||||
static Existential *
|
|
||||||
_readExistential()
|
|
||||||
{
|
|
||||||
Existential *local_node;
|
|
||||||
|
|
||||||
local_node = makeNode(Existential);
|
|
||||||
|
|
||||||
_getPlan((Plan *) local_node);
|
|
||||||
|
|
||||||
return (local_node);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
* _readAppend
|
* _readAppend
|
||||||
*
|
*
|
||||||
|
@ -1884,10 +1866,6 @@ parsePlanString(void)
|
||||||
{
|
{
|
||||||
return_value = _readResult();
|
return_value = _readResult();
|
||||||
}
|
}
|
||||||
else if (!strncmp(token, "EXISTENTIAL", 11))
|
|
||||||
{
|
|
||||||
return_value = _readExistential();
|
|
||||||
}
|
|
||||||
else if (!strncmp(token, "APPEND", 6))
|
else if (!strncmp(token, "APPEND", 6))
|
||||||
{
|
{
|
||||||
return_value = _readAppend();
|
return_value = _readAppend();
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.19 1997/12/18 12:30:43 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.20 1997/12/18 12:54:04 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -1175,10 +1175,10 @@ make_unique(List *tlist, Plan *lefttree, char *uniqueAttr)
|
||||||
return (node);
|
return (node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef NOT_USED
|
||||||
List *
|
List *
|
||||||
generate_fjoin(List *tlist)
|
generate_fjoin(List *tlist)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
List tlistP;
|
List tlistP;
|
||||||
List newTlist = NIL;
|
List newTlist = NIL;
|
||||||
List fjoinList = NIL;
|
List fjoinList = NIL;
|
||||||
|
@ -1227,6 +1227,7 @@ generate_fjoin(List *tlist)
|
||||||
newTlist = lappend(newTlist, tempList);
|
newTlist = lappend(newTlist, tempList);
|
||||||
}
|
}
|
||||||
return newTlist;
|
return newTlist;
|
||||||
#endif
|
|
||||||
return tlist; /* do nothing for now - ay 10/94 */
|
return tlist; /* do nothing for now - ay 10/94 */
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.10 1997/12/18 12:30:44 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.11 1997/12/18 12:54:09 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -259,7 +259,9 @@ query_planner(Query *root,
|
||||||
* Destructively modify the query plan's targetlist to add fjoin lists
|
* Destructively modify the query plan's targetlist to add fjoin lists
|
||||||
* to flatten functions that return sets of base types
|
* to flatten functions that return sets of base types
|
||||||
*/
|
*/
|
||||||
|
#ifdef NOT_USED
|
||||||
subplan->targetlist = generate_fjoin(subplan->targetlist);
|
subplan->targetlist = generate_fjoin(subplan->targetlist);
|
||||||
|
#endif
|
||||||
|
|
||||||
return (subplan);
|
return (subplan);
|
||||||
}
|
}
|
||||||
|
@ -360,7 +362,9 @@ make_result(List *tlist,
|
||||||
Result *node = makeNode(Result);
|
Result *node = makeNode(Result);
|
||||||
Plan *plan = &node->plan;
|
Plan *plan = &node->plan;
|
||||||
|
|
||||||
|
#ifdef NOT_USED
|
||||||
tlist = generate_fjoin(tlist);
|
tlist = generate_fjoin(tlist);
|
||||||
|
#endif
|
||||||
plan->cost = (subplan ? subplan->cost : 0);
|
plan->cost = (subplan ? subplan->cost : 0);
|
||||||
plan->state = (EState *) NULL;
|
plan->state = (EState *) NULL;
|
||||||
plan->targetlist = tlist;
|
plan->targetlist = tlist;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planner.c,v 1.11 1997/11/25 21:59:59 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planner.c,v 1.12 1997/12/18 12:54:11 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -48,7 +48,6 @@
|
||||||
|
|
||||||
static Plan *make_sortplan(List *tlist, List *sortcls, Plan *plannode);
|
static Plan *make_sortplan(List *tlist, List *sortcls, Plan *plannode);
|
||||||
static Plan *init_query_planner(Query *parse);
|
static Plan *init_query_planner(Query *parse);
|
||||||
static Existential *make_existential(Plan *left, Plan *right);
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
|
@ -184,8 +183,7 @@ make_sortplan(List *tlist, List *sortcls, Plan *plannode)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* init-query-planner--
|
* init-query-planner--
|
||||||
* Deals with all non-union preprocessing, including existential
|
* Deals with all non-union preprocessing,and CNFifying the qualifications.
|
||||||
* qualifications and CNFifying the qualifications.
|
|
||||||
*
|
*
|
||||||
* Returns a query plan.
|
* Returns a query plan.
|
||||||
* MODIFIES: tlist,qual
|
* MODIFIES: tlist,qual
|
||||||
|
@ -195,8 +193,6 @@ static Plan *
|
||||||
init_query_planner(Query *root)
|
init_query_planner(Query *root)
|
||||||
{
|
{
|
||||||
List *primary_qual;
|
List *primary_qual;
|
||||||
List *existential_qual;
|
|
||||||
Existential *exist_plan;
|
|
||||||
List *tlist = root->targetList;
|
List *tlist = root->targetList;
|
||||||
|
|
||||||
tlist = preprocess_targetlist(tlist,
|
tlist = preprocess_targetlist(tlist,
|
||||||
|
@ -204,51 +200,12 @@ init_query_planner(Query *root)
|
||||||
root->resultRelation,
|
root->resultRelation,
|
||||||
root->rtable);
|
root->rtable);
|
||||||
|
|
||||||
primary_qual =
|
primary_qual = cnfify((Expr *) root->qual, true);
|
||||||
preprocess_qualification((Expr *) root->qual,
|
|
||||||
tlist,
|
|
||||||
&existential_qual);
|
|
||||||
|
|
||||||
if (existential_qual == NULL)
|
return (query_planner(root,
|
||||||
{
|
root->commandType,
|
||||||
return (query_planner(root,
|
tlist,
|
||||||
root->commandType,
|
primary_qual));
|
||||||
tlist,
|
|
||||||
primary_qual));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int temp = root->commandType;
|
|
||||||
Plan *existential_plan;
|
|
||||||
|
|
||||||
root->commandType = CMD_SELECT;
|
|
||||||
existential_plan = query_planner(root,
|
|
||||||
temp,
|
|
||||||
NIL,
|
|
||||||
existential_qual);
|
|
||||||
|
|
||||||
exist_plan = make_existential(existential_plan,
|
|
||||||
query_planner(root,
|
|
||||||
root->commandType,
|
|
||||||
tlist,
|
|
||||||
primary_qual));
|
|
||||||
return ((Plan *) exist_plan);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* make_existential--
|
|
||||||
* Instantiates an existential plan node and fills in
|
|
||||||
* the left and right subtree slots.
|
|
||||||
*/
|
|
||||||
static Existential *
|
|
||||||
make_existential(Plan *left, Plan *right)
|
|
||||||
{
|
|
||||||
Existential *node = makeNode(Existential);
|
|
||||||
|
|
||||||
node->lefttree = left;
|
|
||||||
node->righttree = left;
|
|
||||||
return (node);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepqual.c,v 1.6 1997/09/08 21:45:31 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepqual.c,v 1.7 1997/12/18 12:54:15 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -36,42 +36,6 @@ static List *qualcleanup(Expr *qual);
|
||||||
static List *remove_ands(Expr *qual);
|
static List *remove_ands(Expr *qual);
|
||||||
static List *remove_duplicates(List *list);
|
static List *remove_duplicates(List *list);
|
||||||
|
|
||||||
/*
|
|
||||||
* preprocess-qualification--
|
|
||||||
* Driver routine for modifying the parse tree qualification.
|
|
||||||
*
|
|
||||||
* Returns the new base qualification and the existential qualification
|
|
||||||
* in existentialQualPtr.
|
|
||||||
*
|
|
||||||
* XXX right now, update_clauses() does nothing so
|
|
||||||
* preprocess-qualification simply converts the qual in conjunctive
|
|
||||||
* normal form (see cnfify() below )
|
|
||||||
*/
|
|
||||||
List *
|
|
||||||
preprocess_qualification(Expr *qual, List *tlist, List **existentialQualPtr)
|
|
||||||
{
|
|
||||||
List *cnf_qual = cnfify(qual, true);
|
|
||||||
|
|
||||||
/*
|
|
||||||
List *existential_qual =
|
|
||||||
update_clauses(intCons(_query_result_relation_,
|
|
||||||
update_relations(tlist)),
|
|
||||||
cnf_qual,
|
|
||||||
_query_command_type_);
|
|
||||||
if (existential_qual) {
|
|
||||||
*existentialQualPtr = existential_qual;
|
|
||||||
return set_difference(cnf_qual, existential_qual);
|
|
||||||
} else {
|
|
||||||
*existentialQualPtr = NIL;
|
|
||||||
return cnf_qual;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/* update_clauses() is not working right now */
|
|
||||||
*existentialQualPtr = NIL;
|
|
||||||
return cnf_qual;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* CNF CONVERSION ROUTINES
|
* CNF CONVERSION ROUTINES
|
||||||
|
@ -607,27 +571,6 @@ remove_ands(Expr *qual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*
|
|
||||||
* EXISTENTIAL QUALIFICATIONS
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* update-relations--
|
|
||||||
* Returns the range table indices (i.e., varnos) for all relations which
|
|
||||||
* are referenced in the target list.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifdef NOT_USED
|
|
||||||
static List *
|
|
||||||
update_relations(List *tlist)
|
|
||||||
{
|
|
||||||
return (NIL);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: nodes.h,v 1.19 1997/12/04 23:43:59 thomas Exp $
|
* $Id: nodes.h,v 1.20 1997/12/18 12:54:36 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -29,7 +29,6 @@ typedef enum NodeTag
|
||||||
*---------------------
|
*---------------------
|
||||||
*/
|
*/
|
||||||
T_Plan = 10,
|
T_Plan = 10,
|
||||||
T_Existential,
|
|
||||||
T_Result,
|
T_Result,
|
||||||
T_Append,
|
T_Append,
|
||||||
T_Scan,
|
T_Scan,
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: plannodes.h,v 1.10 1997/09/08 21:52:53 momjian Exp $
|
* $Id: plannodes.h,v 1.11 1997/12/18 12:54:37 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -23,7 +23,6 @@
|
||||||
*
|
*
|
||||||
* control nodes
|
* control nodes
|
||||||
*
|
*
|
||||||
* Existential ExistentialState exstate;
|
|
||||||
* Result ResultState resstate;
|
* Result ResultState resstate;
|
||||||
* Append AppendState unionstate;
|
* Append AppendState unionstate;
|
||||||
*
|
*
|
||||||
|
@ -100,12 +99,6 @@ typedef struct Plan
|
||||||
when passed around generically in the executor */
|
when passed around generically in the executor */
|
||||||
|
|
||||||
|
|
||||||
/* ----------------
|
|
||||||
* existential node
|
|
||||||
* ----------------
|
|
||||||
*/
|
|
||||||
typedef Plan Existential;
|
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
* result node -
|
* result node -
|
||||||
* returns tuples from outer plan that satisfy the qualifications
|
* returns tuples from outer plan that satisfy the qualifications
|
||||||
|
|
|
@ -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.7 1997/12/18 12:21:02 momjian Exp $
|
* $Id: planmain.h,v 1.8 1997/12/18 12:54:41 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -37,8 +37,6 @@ extern Agg *make_agg(List *tlist, int nagg, Aggreg **aggs, Plan *lefttree);
|
||||||
extern Group *make_group(List *tlist, bool tuplePerGroup, int ngrp,
|
extern Group *make_group(List *tlist, bool tuplePerGroup, int ngrp,
|
||||||
AttrNumber *grpColIdx, Sort *lefttree);
|
AttrNumber *grpColIdx, Sort *lefttree);
|
||||||
extern Unique *make_unique(List *tlist, Plan *lefttree, char *uniqueAttr);
|
extern Unique *make_unique(List *tlist, Plan *lefttree, char *uniqueAttr);
|
||||||
extern List *generate_fjoin(List *tlist);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* prototypes for plan/initsplan.c
|
* prototypes for plan/initsplan.c
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: prep.h,v 1.7 1997/11/21 18:12:33 momjian Exp $
|
* $Id: prep.h,v 1.8 1997/12/18 12:54:45 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -19,9 +19,6 @@
|
||||||
/*
|
/*
|
||||||
* prototypes for prepqual.h
|
* prototypes for prepqual.h
|
||||||
*/
|
*/
|
||||||
extern List *
|
|
||||||
preprocess_qualification(Expr *qual, List *tlist,
|
|
||||||
List **existentialQualPtr);
|
|
||||||
extern List *cnfify(Expr *qual, bool removeAndFlag);
|
extern List *cnfify(Expr *qual, bool removeAndFlag);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue