*
* makefuncs.h
* prototypes for the creator functions (for primitive nodes)
*
*
* Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/include/nodes/makefuncs.h
*
* -------------------------------------------------------------------------
*/
#ifndef MAKEFUNC_H
#define MAKEFUNC_H
#ifndef FRONTEND_PARSER
#include "nodes/parsenodes.h"
#include "nodes/execnodes.h"
#else
#include "datatypes.h"
#include "nodes/primnodes.h"
#include "nodes/value.h"
#include "catalog/pg_attribute.h"
#include "access/tupdesc.h"
#include "nodes/parsenodes_common.h"
#endif
extern Const *makeConst(Oid consttype, int32 consttypmod, Oid constcollid, int constlen, Datum constvalue,
bool constisnull, bool constbyval, Cursor_Data *cur = NULL);
#ifndef FRONTEND_PARSER
extern Var* makeVar(Index varno, AttrNumber varattno, Oid vartype, int32 vartypmod, Oid varcollid, Index varlevelsup);
extern Var* makeVarFromTargetEntry(Index varno, TargetEntry* tle);
extern Var* makeWholeRowVar(RangeTblEntry* rte, Index varno, Index varlevelsup, bool allowScalar);
extern TargetEntry* makeTargetEntry(Expr* expr, AttrNumber resno, char* resname, bool resjunk);
extern TargetEntry* flatCopyTargetEntry(TargetEntry* src_tle);
extern FromExpr* makeFromExpr(List* fromlist, Node* quals);
extern ColumnRef* makeColumnRef(char* relname, char* colname, int location);
extern Const* makeMaxConst(Oid consttype, int32 consttypmod, Oid constcollid);
extern Node* makeNullAConst(int location);
extern Const* makeNullConst(Oid consttype, int32 consttypmod, Oid constcollid);
extern Node* makeBoolConst(bool value, bool isnull);
extern Expr* makeBoolExpr(BoolExprType boolop, List* args, int location);
extern Alias* makeAlias(const char* aliasname, List* colnames);
extern RelabelType* makeRelabelType(Expr* arg, Oid rtype, int32 rtypmod, Oid rcollid, CoercionForm rformat);
extern TypeName* makeTypeNameFromOid(Oid typeOid, int32 typmod, TypeDependExtend* dependExtend = NULL);
extern FuncExpr* makeFuncExpr(
Oid funcid, Oid rettype, List* args, Oid funccollid, Oid inputcollid, CoercionForm fformat);
extern NullTest* makeNullTest(NullTestType type, Expr* expr);
extern Expr* makeBoolExprTreeNode(BoolExprType boolop, List* args);
extern HashFilter* makeHashFilter(List* arg, List* typeOidlist, List* nodelist);
extern Node* makeTidConst(ItemPointer item);
extern FuncCall* makeFuncCall(List* funcname, List* args, int location);
extern Param* makeParam(
ParamKind paramkind, int paramid, Oid paramtype, int32 paramtypmod, Oid paramcollid, int location);
extern IndexInfo* makeIndexInfo(int numattrs, List *expressions, List *predicates,
bool unique, bool isready, bool concurrent);
#endif
extern A_Expr *makeA_Expr(A_Expr_Kind kind, List *name, Node *lexpr, Node *rexpr, int location);
extern A_Expr *makeSimpleA_Expr(A_Expr_Kind kind, char *name, Node *lexpr, Node *rexpr, int location);
extern RangeVar *makeRangeVar(char *schemaname, char *relname, int location);
extern TypeName *makeTypeName(char *typnam);
extern TypeName *makeTypeNameFromNameList(List *names);
extern DefElem *makeDefElem(char *name, Node *arg);
extern DefElem *MakeDefElemWithLoc(char *name, Node *arg, int begin_loc, int end_loc);
extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg, DefElemAction defaction);
extern GroupingSet *makeGroupingSet(GroupingSetKind kind, List *content, int location);
#endif