/* * makefuncs.c * creator functions for primitive nodes. The functions here are for * the most frequently created nodes. * * Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.14 1999/05/12 15:01:34 wieck Exp $ * * NOTES * Creator functions in POSTGRES 4.2 are generated automatically. Most of * them are rarely used. Now we don't generate them any more. If you want * one, you have to write it yourself. * * HISTORY * AUTHOR DATE MAJOR EVENT * Andrew Yu Oct 20, 1994 file creation */ #include "postgres.h" #include "nodes/pg_list.h" #include "nodes/primnodes.h" #include "nodes/parsenodes.h" #include "nodes/makefuncs.h" /* * makeOper - * creates an Oper node */ Oper * makeOper(Oid opno, Oid opid, Oid opresulttype, int opsize, FunctionCachePtr op_fcache) { Oper *oper = makeNode(Oper); oper->opno = opno; oper->opid = opid; oper->opresulttype = opresulttype; oper->opsize = opsize; oper->op_fcache = op_fcache; return oper; } /* * makeVar - * creates a Var node * */ Var * makeVar(Index varno, AttrNumber varattno, Oid vartype, int32 vartypmod, Index varlevelsup, Index varnoold, AttrNumber varoattno) { Var *var = makeNode(Var); var->varno = varno; var->varattno = varattno; var->vartype = vartype; var->vartypmod = vartypmod; var->varlevelsup = varlevelsup; var->varnoold = varnoold; var->varoattno = varoattno; return var; } /* * makeTargetEntry - * creates a TargetEntry node(contains a Resdom) */ TargetEntry * makeTargetEntry(Resdom *resdom, Node *expr) { TargetEntry *rt = makeNode(TargetEntry); rt->resdom = resdom; rt->expr = expr; return rt; } /* * makeResdom - * creates a Resdom (Result Domain) node */ Resdom * makeResdom(AttrNumber resno, Oid restype, int32 restypmod, char *resname, Index reskey, Oid reskeyop, int resjunk) { Resdom *resdom = makeNode(Resdom); resdom->resno = resno; resdom->restype = restype; resdom->restypmod = restypmod; resdom->resname = resname; resdom->reskey = reskey; resdom->reskeyop = reskeyop; resdom->resgroupref = 0; resdom->resjunk = resjunk; return resdom; } /* * makeConst - * creates a Const node */ Const * makeConst(Oid consttype, int constlen, Datum constvalue, bool constisnull, bool constbyval, bool constisset, bool constiscast) { Const *cnst = makeNode(Const); cnst->consttype = consttype; cnst->constlen = constlen; cnst->constvalue = constvalue; cnst->constisnull = constisnull; cnst->constbyval = constbyval; cnst->constisset = constisset; cnst->constiscast = constiscast; return cnst; }