mirror of
https://github.com/postgres/postgres.git
synced 2025-11-04 20:11:56 +03:00
More cleanups of the include files
- centralizing to simplify the -I's required to compile
This commit is contained in:
299
src/include/nodes/nodes.h
Normal file
299
src/include/nodes/nodes.h
Normal file
@@ -0,0 +1,299 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* nodes.h--
|
||||
* Definitions for tagged nodes.
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: nodes.h,v 1.1 1996/08/28 01:57:37 scrappy Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef NODES_H
|
||||
#define NODES_H
|
||||
|
||||
#include "c.h"
|
||||
|
||||
/*
|
||||
* The first field of every node is NodeTag. Each node created (with makeNode)
|
||||
* will have one of the following tags as the value of its first field.
|
||||
*
|
||||
* Note that the number of the node tags are not contiguous. We left holes
|
||||
* here so that we can add more tags without changing the existing enum's.
|
||||
*/
|
||||
typedef enum NodeTag {
|
||||
T_Invalid = 0,
|
||||
|
||||
/*---------------------
|
||||
* TAGS FOR PLAN NODES (plannodes.h)
|
||||
*---------------------
|
||||
*/
|
||||
T_Plan = 10,
|
||||
T_Existential,
|
||||
T_Result,
|
||||
T_Append,
|
||||
T_Scan,
|
||||
T_SeqScan,
|
||||
T_IndexScan,
|
||||
T_Join,
|
||||
T_NestLoop,
|
||||
T_MergeJoin,
|
||||
T_HashJoin,
|
||||
T_Temp,
|
||||
T_Material,
|
||||
T_Sort,
|
||||
T_Agg,
|
||||
T_Unique,
|
||||
T_Hash,
|
||||
T_Choose,
|
||||
T_Tee,
|
||||
T_Group,
|
||||
|
||||
/*---------------------
|
||||
* TAGS FOR PRIMITIVE NODES (primnodes.h)
|
||||
*---------------------
|
||||
*/
|
||||
T_Resdom = 100,
|
||||
T_Fjoin,
|
||||
T_Expr,
|
||||
T_Var,
|
||||
T_Oper,
|
||||
T_Const,
|
||||
T_Param,
|
||||
T_Aggreg,
|
||||
T_Func,
|
||||
T_Array,
|
||||
T_ArrayRef,
|
||||
|
||||
/*---------------------
|
||||
* TAGS FOR INNER PLAN NODES (relation.h)
|
||||
*---------------------
|
||||
*/
|
||||
T_Rel = 200,
|
||||
T_Path,
|
||||
T_IndexPath,
|
||||
T_JoinPath,
|
||||
T_MergePath,
|
||||
T_HashPath,
|
||||
T_OrderKey,
|
||||
T_JoinKey,
|
||||
T_MergeOrder,
|
||||
T_CInfo,
|
||||
T_JoinMethod,
|
||||
T_HInfo,
|
||||
T_MInfo,
|
||||
T_JInfo,
|
||||
T_Iter,
|
||||
T_Stream,
|
||||
|
||||
/*---------------------
|
||||
* TAGS FOR EXECUTOR NODES (execnodes.h)
|
||||
*---------------------
|
||||
*/
|
||||
T_IndexInfo = 300,
|
||||
T_RelationInfo,
|
||||
T_TupleCount,
|
||||
T_TupleTableSlot,
|
||||
T_ExprContext,
|
||||
T_ProjectionInfo,
|
||||
T_JunkFilter,
|
||||
T_EState,
|
||||
T_BaseNode,
|
||||
T_CommonState,
|
||||
T_ResultState,
|
||||
T_AppendState,
|
||||
T_CommonScanState,
|
||||
T_ScanState,
|
||||
T_IndexScanState,
|
||||
T_JoinState,
|
||||
T_NestLoopState,
|
||||
T_MergeJoinState,
|
||||
T_HashJoinState,
|
||||
T_MaterialState,
|
||||
T_AggState,
|
||||
T_GroupState,
|
||||
T_SortState,
|
||||
T_UniqueState,
|
||||
T_HashState,
|
||||
T_TeeState,
|
||||
|
||||
/*---------------------
|
||||
* TAGS FOR MEMORY NODES (memnodes.h)
|
||||
*---------------------
|
||||
*/
|
||||
T_MemoryContext = 400,
|
||||
T_GlobalMemory,
|
||||
T_PortalMemoryContext,
|
||||
T_PortalVariableMemory,
|
||||
T_PortalHeapMemory,
|
||||
|
||||
/*---------------------
|
||||
* TAGS FOR VALUE NODES (pg_list.h)
|
||||
*---------------------
|
||||
*/
|
||||
T_Value = 500,
|
||||
T_List,
|
||||
T_Integer,
|
||||
T_Float,
|
||||
T_String,
|
||||
T_Null,
|
||||
|
||||
/*---------------------
|
||||
* TAGS FOR PARSE TREE NODES (parsenode.h)
|
||||
*---------------------
|
||||
*/
|
||||
T_Query = 600,
|
||||
T_AppendStmt,
|
||||
T_DeleteStmt,
|
||||
T_ReplaceStmt,
|
||||
T_CursorStmt,
|
||||
T_RetrieveStmt,
|
||||
T_AddAttrStmt,
|
||||
T_AggregateStmt,
|
||||
T_ChangeACLStmt,
|
||||
T_ClosePortalStmt,
|
||||
T_ClusterStmt,
|
||||
T_CopyStmt,
|
||||
T_CreateStmt,
|
||||
T_VersionStmt,
|
||||
T_DefineStmt,
|
||||
T_DestroyStmt,
|
||||
T_ExtendStmt,
|
||||
T_FetchStmt,
|
||||
T_IndexStmt,
|
||||
T_MoveStmt,
|
||||
T_ProcedureStmt,
|
||||
T_PurgeStmt,
|
||||
T_RecipeStmt,
|
||||
T_RemoveFuncStmt,
|
||||
T_RemoveOperStmt,
|
||||
T_RemoveStmt,
|
||||
T_RenameStmt,
|
||||
T_RuleStmt,
|
||||
T_NotifyStmt,
|
||||
T_ListenStmt,
|
||||
T_TransactionStmt,
|
||||
T_ViewStmt,
|
||||
T_LoadStmt,
|
||||
T_CreatedbStmt,
|
||||
T_DestroydbStmt,
|
||||
T_VacuumStmt,
|
||||
T_ExplainStmt,
|
||||
|
||||
T_A_Expr = 700,
|
||||
T_Attr,
|
||||
T_A_Const,
|
||||
T_ParamNo,
|
||||
T_Ident,
|
||||
T_FuncCall,
|
||||
T_A_Indices,
|
||||
T_ResTarget,
|
||||
T_ParamString,
|
||||
T_TimeRange,
|
||||
T_RelExpr,
|
||||
T_SortBy,
|
||||
T_RangeVar,
|
||||
T_TypeName,
|
||||
T_IndexElem,
|
||||
T_ColumnDef,
|
||||
T_DefElem,
|
||||
T_TargetEntry,
|
||||
T_RangeTblEntry,
|
||||
T_SortClause,
|
||||
T_GroupClause
|
||||
} NodeTag;
|
||||
|
||||
/*
|
||||
* The first field of a node of any type is gauranteed to be the NodeTag.
|
||||
* Hence the type of any node can be gotten by casting it to Node. Declaring
|
||||
* a variable to be of Node * (instead of void *) can also facilitate
|
||||
* debugging.
|
||||
*/
|
||||
typedef struct Node {
|
||||
NodeTag type;
|
||||
} Node;
|
||||
|
||||
#define nodeTag(_node_) ((Node*)_node_)->type
|
||||
|
||||
#define makeNode(_node_) (_node_*)newNode(sizeof(_node_),T_##_node_)
|
||||
#define NodeSetTag(n, t) ((Node *)n)->type = t
|
||||
|
||||
#define IsA(_node_,_tag_) (nodeTag(_node_) == T_##_tag_)
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
* IsA functions (no inheritence any more)
|
||||
* ----------------------------------------------------------------
|
||||
*/
|
||||
#define IsA_JoinPath(jp) \
|
||||
(nodeTag(jp)==T_JoinPath || nodeTag(jp)==T_MergePath || \
|
||||
nodeTag(jp)==T_HashPath)
|
||||
|
||||
#define IsA_Join(j) \
|
||||
(nodeTag(j)==T_Join || nodeTag(j)==T_NestLoop || \
|
||||
nodeTag(j)==T_MergeJoin || nodeTag(j)==T_HashJoin)
|
||||
|
||||
#define IsA_Temp(t) \
|
||||
(nodeTag(t)==T_Temp || nodeTag(t)==T_Material || nodeTag(t)==T_Sort || \
|
||||
nodeTag(t)==T_Unique)
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
* extern declarations follow
|
||||
* ----------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/*
|
||||
* nodes/nodes.c
|
||||
*/
|
||||
extern Node *newNode(Size size, NodeTag tag);
|
||||
|
||||
/*
|
||||
* nodes/{outfuncs.c,print.c}
|
||||
*/
|
||||
#define nodeDisplay print
|
||||
|
||||
extern char *nodeToString(void *obj);
|
||||
extern void print(void *obj);
|
||||
|
||||
/*
|
||||
* nodes/{readfuncs.c,read.c}
|
||||
*/
|
||||
extern void *stringToNode(char *str);
|
||||
|
||||
/*
|
||||
* nodes/copyfuncs.c
|
||||
*/
|
||||
extern void *copyObject(void *obj);
|
||||
|
||||
/*
|
||||
* nodes/equalfuncs.c
|
||||
*/
|
||||
extern bool equal(void *a, void *b);
|
||||
|
||||
|
||||
/* ----------------
|
||||
* I don't know why this is here. Most likely a hack..
|
||||
* -cim 6/3/90
|
||||
* ----------------
|
||||
*/
|
||||
typedef float Cost;
|
||||
|
||||
/*
|
||||
* CmdType -
|
||||
* enums for type of operation to aid debugging
|
||||
*
|
||||
* ??? could have put this in parsenodes.h but many files not in the
|
||||
* optimizer also need this...
|
||||
*/
|
||||
typedef enum CmdType {
|
||||
CMD_UNKNOWN,
|
||||
CMD_SELECT, /* select stmt (formerly retrieve) */
|
||||
CMD_UPDATE, /* update stmt (formerly replace) */
|
||||
CMD_INSERT, /* insert stmt (formerly append) */
|
||||
CMD_DELETE,
|
||||
CMD_NOTIFY,
|
||||
CMD_UTILITY /* cmds like create, destroy, copy, vacuum, etc. */
|
||||
} CmdType;
|
||||
|
||||
|
||||
#endif /* NODES_H */
|
||||
Reference in New Issue
Block a user