PostgreSQL Source Code  git master
nodes.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * nodes.h
4  * Definitions for tagged nodes.
5  *
6  *
7  * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * src/include/nodes/nodes.h
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef NODES_H
15 #define NODES_H
16 
17 /*
18  * The first field of every node is NodeTag. Each node created (with makeNode)
19  * will have one of the following tags as the value of its first field.
20  *
21  * Note that inserting or deleting node types changes the numbers of other
22  * node types later in the list. This is no problem during development, since
23  * the node numbers are never stored on disk. But don't do it in a released
24  * branch, because that would represent an ABI break for extensions.
25  */
26 typedef enum NodeTag
27 {
28  T_Invalid = 0,
29 
30  /*
31  * TAGS FOR EXECUTOR NODES (execnodes.h)
32  */
41 
42  /*
43  * TAGS FOR PLAN NODES (plannodes.h)
44  */
90  /* these aren't subclasses of Plan: */
98 
99  /*
100  * TAGS FOR PLAN STATE NODES (execnodes.h)
101  *
102  * These should correspond one-to-one with Plan node types.
103  */
149 
150  /*
151  * TAGS FOR PRIMITIVE NODES (primnodes.h)
152  */
204 
205  /*
206  * TAGS FOR EXPRESSION STATE NODES (execnodes.h)
207  *
208  * ExprState represents the evaluation state for a whole expression tree.
209  * Most Expr-based plan nodes do not have a corresponding expression state
210  * node, they're fully handled within execExpr* - but sometimes the state
211  * needs to be shared with other parts of the executor, as for example
212  * with SubPlanState, which nodeSubplan.c has to modify.
213  */
219 
220  /*
221  * TAGS FOR PLANNER NODES (pathnodes.h)
222  */
265  /* these aren't subclasses of Path: */
282 
283  /*
284  * TAGS FOR MEMORY NODES (memnodes.h)
285  */
289 
290  /*
291  * TAGS FOR VALUE NODES (value.h)
292  */
297 
298  /*
299  * TAGS FOR LIST NODES (pg_list.h)
300  */
304 
305  /*
306  * TAGS FOR EXTENSIBLE NODES (extensible.h)
307  */
309 
310  /*
311  * TAGS FOR STATEMENT NODES (mostly in parsenodes.h)
312  */
431 
432  /*
433  * TAGS FOR PARSE TREE NODES (parsenodes.h)
434  */
492 
493  /*
494  * TAGS FOR REPLICATION GRAMMAR PARSE NODES (replnodes.h)
495  */
504 
505  /*
506  * TAGS FOR RANDOM OTHER STUFF
507  *
508  * These are objects that aren't part of parse/plan/execute node tree
509  * structures, but we give them NodeTags anyway for identification
510  * purposes (usually because they are involved in APIs where we want to
511  * pass multiple object types through the same pointer).
512  */
513  T_TriggerData, /* in commands/trigger.h */
514  T_EventTriggerData, /* in commands/event_trigger.h */
515  T_ReturnSetInfo, /* in nodes/execnodes.h */
516  T_WindowObjectData, /* private in nodeWindowAgg.c */
517  T_TIDBitmap, /* in nodes/tidbitmap.h */
518  T_InlineCodeBlock, /* in nodes/parsenodes.h */
519  T_FdwRoutine, /* in foreign/fdwapi.h */
520  T_IndexAmRoutine, /* in access/amapi.h */
521  T_TableAmRoutine, /* in access/tableam.h */
522  T_TsmRoutine, /* in access/tsmapi.h */
523  T_ForeignKeyCacheInfo, /* in utils/rel.h */
524  T_CallContext, /* in nodes/parsenodes.h */
525  T_SupportRequestSimplify, /* in nodes/supportnodes.h */
526  T_SupportRequestSelectivity, /* in nodes/supportnodes.h */
527  T_SupportRequestCost, /* in nodes/supportnodes.h */
528  T_SupportRequestRows, /* in nodes/supportnodes.h */
529  T_SupportRequestIndexCondition /* in nodes/supportnodes.h */
531 
532 /*
533  * The first field of a node of any type is guaranteed to be the NodeTag.
534  * Hence the type of any node can be gotten by casting it to Node. Declaring
535  * a variable to be of Node * (instead of void *) can also facilitate
536  * debugging.
537  */
538 typedef struct Node
539 {
542 
543 #define nodeTag(nodeptr) (((const Node*)(nodeptr))->type)
544 
545 /*
546  * newNode -
547  * create a new node of the specified size and tag the node with the
548  * specified tag.
549  *
550  * !WARNING!: Avoid using newNode directly. You should be using the
551  * macro makeNode. eg. to create a Query node, use makeNode(Query)
552  *
553  * Note: the size argument should always be a compile-time constant, so the
554  * apparent risk of multiple evaluation doesn't matter in practice.
555  */
556 #ifdef __GNUC__
557 
558 /* With GCC, we can use a compound statement within an expression */
559 #define newNode(size, tag) \
560 ({ Node *_result; \
561  AssertMacro((size) >= sizeof(Node)); /* need the tag, at least */ \
562  _result = (Node *) palloc0fast(size); \
563  _result->type = (tag); \
564  _result; \
565 })
566 #else
567 
568 /*
569  * There is no way to dereference the palloc'ed pointer to assign the
570  * tag, and also return the pointer itself, so we need a holder variable.
571  * Fortunately, this macro isn't recursive so we just define
572  * a global variable for this purpose.
573  */
575 
576 #define newNode(size, tag) \
577 ( \
578  AssertMacro((size) >= sizeof(Node)), /* need the tag, at least */ \
579  newNodeMacroHolder = (Node *) palloc0fast(size), \
580  newNodeMacroHolder->type = (tag), \
581  newNodeMacroHolder \
582 )
583 #endif /* __GNUC__ */
584 
585 
586 #define makeNode(_type_) ((_type_ *) newNode(sizeof(_type_),T_##_type_))
587 #define NodeSetTag(nodeptr,t) (((Node*)(nodeptr))->type = (t))
588 
589 #define IsA(nodeptr,_type_) (nodeTag(nodeptr) == T_##_type_)
590 
591 /*
592  * castNode(type, ptr) casts ptr to "type *", and if assertions are enabled,
593  * verifies that the node has the appropriate type (using its nodeTag()).
594  *
595  * Use an inline function when assertions are enabled, to avoid multiple
596  * evaluations of the ptr argument (which could e.g. be a function call).
597  */
598 #ifdef USE_ASSERT_CHECKING
599 static inline Node *
600 castNodeImpl(NodeTag type, void *ptr)
601 {
602  Assert(ptr == NULL || nodeTag(ptr) == type);
603  return (Node *) ptr;
604 }
605 #define castNode(_type_, nodeptr) ((_type_ *) castNodeImpl(T_##_type_, nodeptr))
606 #else
607 #define castNode(_type_, nodeptr) ((_type_ *) (nodeptr))
608 #endif /* USE_ASSERT_CHECKING */
609 
610 
611 /* ----------------------------------------------------------------
612  * extern declarations follow
613  * ----------------------------------------------------------------
614  */
615 
616 /*
617  * nodes/{outfuncs.c,print.c}
618  */
619 struct Bitmapset; /* not to include bitmapset.h here */
620 struct StringInfoData; /* not to include stringinfo.h here */
621 
622 extern void outNode(struct StringInfoData *str, const void *obj);
623 extern void outToken(struct StringInfoData *str, const char *s);
624 extern void outBitmapset(struct StringInfoData *str,
625  const struct Bitmapset *bms);
626 extern void outDatum(struct StringInfoData *str, uintptr_t value,
627  int typlen, bool typbyval);
628 extern char *nodeToString(const void *obj);
629 extern char *bmsToString(const struct Bitmapset *bms);
630 
631 /*
632  * nodes/{readfuncs.c,read.c}
633  */
634 extern void *stringToNode(const char *str);
635 #ifdef WRITE_READ_PARSE_PLAN_TREES
636 extern void *stringToNodeWithLocations(const char *str);
637 #endif
638 extern struct Bitmapset *readBitmapset(void);
639 extern uintptr_t readDatum(bool typbyval);
640 extern bool *readBoolCols(int numCols);
641 extern int *readIntCols(int numCols);
642 extern Oid *readOidCols(int numCols);
643 extern int16 *readAttrNumberCols(int numCols);
644 
645 /*
646  * nodes/copyfuncs.c
647  */
648 extern void *copyObjectImpl(const void *obj);
649 
650 /* cast result back to argument type, if supported by compiler */
651 #ifdef HAVE_TYPEOF
652 #define copyObject(obj) ((typeof(obj)) copyObjectImpl(obj))
653 #else
654 #define copyObject(obj) copyObjectImpl(obj)
655 #endif
656 
657 /*
658  * nodes/equalfuncs.c
659  */
660 extern bool equal(const void *a, const void *b);
661 
662 
663 /*
664  * Typedefs for identifying qualifier selectivities and plan costs as such.
665  * These are just plain "double"s, but declaring a variable as Selectivity
666  * or Cost makes the intent more obvious.
667  *
668  * These could have gone into plannodes.h or some such, but many files
669  * depend on them...
670  */
671 typedef double Selectivity; /* fraction of tuples a qualifier will pass */
672 typedef double Cost; /* execution cost (in page-access units) */
673 typedef double Cardinality; /* (estimated) number of rows or other integer count */
674 
675 
676 /*
677  * CmdType -
678  * enums for type of operation represented by a Query or PlannedStmt
679  *
680  * This is needed in both parsenodes.h and plannodes.h, so put it here...
681  */
682 typedef enum CmdType
683 {
685  CMD_SELECT, /* select stmt */
686  CMD_UPDATE, /* update stmt */
687  CMD_INSERT, /* insert stmt */
689  CMD_UTILITY, /* cmds like create, destroy, copy, vacuum,
690  * etc. */
691  CMD_NOTHING /* dummy command for instead nothing rules
692  * with qual */
694 
695 
696 /*
697  * JoinType -
698  * enums for types of relation joins
699  *
700  * JoinType determines the exact semantics of joining two relations using
701  * a matching qualification. For example, it tells what to do with a tuple
702  * that has no match in the other relation.
703  *
704  * This is needed in both parsenodes.h and plannodes.h, so put it here...
705  */
706 typedef enum JoinType
707 {
708  /*
709  * The canonical kinds of joins according to the SQL JOIN syntax. Only
710  * these codes can appear in parser output (e.g., JoinExpr nodes).
711  */
712  JOIN_INNER, /* matching tuple pairs only */
713  JOIN_LEFT, /* pairs + unmatched LHS tuples */
714  JOIN_FULL, /* pairs + unmatched LHS + unmatched RHS */
715  JOIN_RIGHT, /* pairs + unmatched RHS tuples */
716 
717  /*
718  * Semijoins and anti-semijoins (as defined in relational theory) do not
719  * appear in the SQL JOIN syntax, but there are standard idioms for
720  * representing them (e.g., using EXISTS). The planner recognizes these
721  * cases and converts them to joins. So the planner and executor must
722  * support these codes. NOTE: in JOIN_SEMI output, it is unspecified
723  * which matching RHS row is joined to. In JOIN_ANTI output, the row is
724  * guaranteed to be null-extended.
725  */
726  JOIN_SEMI, /* 1 copy of each LHS row that has match(es) */
727  JOIN_ANTI, /* 1 copy of each LHS row that has no match */
728 
729  /*
730  * These codes are used internally in the planner, but are not supported
731  * by the executor (nor, indeed, by most of the planner).
732  */
733  JOIN_UNIQUE_OUTER, /* LHS path must be made unique */
734  JOIN_UNIQUE_INNER /* RHS path must be made unique */
735 
736  /*
737  * We might need additional join types someday.
738  */
740 
741 /*
742  * OUTER joins are those for which pushed-down quals must behave differently
743  * from the join's own quals. This is in fact everything except INNER and
744  * SEMI joins. However, this macro must also exclude the JOIN_UNIQUE symbols
745  * since those are temporary proxies for what will eventually be an INNER
746  * join.
747  *
748  * Note: semijoins are a hybrid case, but we choose to treat them as not
749  * being outer joins. This is okay principally because the SQL syntax makes
750  * it impossible to have a pushed-down qual that refers to the inner relation
751  * of a semijoin; so there is no strong need to distinguish join quals from
752  * pushed-down quals. This is convenient because for almost all purposes,
753  * quals attached to a semijoin can be treated the same as innerjoin quals.
754  */
755 #define IS_OUTER_JOIN(jointype) \
756  (((1 << (jointype)) & \
757  ((1 << JOIN_LEFT) | \
758  (1 << JOIN_FULL) | \
759  (1 << JOIN_RIGHT) | \
760  (1 << JOIN_ANTI))) != 0)
761 
762 /*
763  * AggStrategy -
764  * overall execution strategies for Agg plan nodes
765  *
766  * This is needed in both pathnodes.h and plannodes.h, so put it here...
767  */
768 typedef enum AggStrategy
769 {
770  AGG_PLAIN, /* simple agg across all input rows */
771  AGG_SORTED, /* grouped agg, input must be sorted */
772  AGG_HASHED, /* grouped agg, use internal hashtable */
773  AGG_MIXED /* grouped agg, hash and sort both used */
775 
776 /*
777  * AggSplit -
778  * splitting (partial aggregation) modes for Agg plan nodes
779  *
780  * This is needed in both pathnodes.h and plannodes.h, so put it here...
781  */
782 
783 /* Primitive options supported by nodeAgg.c: */
784 #define AGGSPLITOP_COMBINE 0x01 /* substitute combinefn for transfn */
785 #define AGGSPLITOP_SKIPFINAL 0x02 /* skip finalfn, return state as-is */
786 #define AGGSPLITOP_SERIALIZE 0x04 /* apply serialfn to output */
787 #define AGGSPLITOP_DESERIALIZE 0x08 /* apply deserialfn to input */
788 
789 /* Supported operating modes (i.e., useful combinations of these options): */
790 typedef enum AggSplit
791 {
792  /* Basic, non-split aggregation: */
794  /* Initial phase of partial aggregation, with serialization: */
796  /* Final phase of partial aggregation, with deserialization: */
799 
800 /* Test whether an AggSplit value selects each primitive option: */
801 #define DO_AGGSPLIT_COMBINE(as) (((as) & AGGSPLITOP_COMBINE) != 0)
802 #define DO_AGGSPLIT_SKIPFINAL(as) (((as) & AGGSPLITOP_SKIPFINAL) != 0)
803 #define DO_AGGSPLIT_SERIALIZE(as) (((as) & AGGSPLITOP_SERIALIZE) != 0)
804 #define DO_AGGSPLIT_DESERIALIZE(as) (((as) & AGGSPLITOP_DESERIALIZE) != 0)
805 
806 /*
807  * SetOpCmd and SetOpStrategy -
808  * overall semantics and execution strategies for SetOp plan nodes
809  *
810  * This is needed in both pathnodes.h and plannodes.h, so put it here...
811  */
812 typedef enum SetOpCmd
813 {
819 
820 typedef enum SetOpStrategy
821 {
822  SETOP_SORTED, /* input must be sorted */
823  SETOP_HASHED /* use internal hashtable */
825 
826 /*
827  * OnConflictAction -
828  * "ON CONFLICT" clause type of query
829  *
830  * This is needed in both parsenodes.h and plannodes.h, so put it here...
831  */
832 typedef enum OnConflictAction
833 {
834  ONCONFLICT_NONE, /* No "ON CONFLICT" clause */
835  ONCONFLICT_NOTHING, /* ON CONFLICT ... DO NOTHING */
836  ONCONFLICT_UPDATE /* ON CONFLICT ... DO UPDATE */
838 
839 /*
840  * LimitOption -
841  * LIMIT option of query
842  *
843  * This is needed in both parsenodes.h and plannodes.h, so put it here...
844  */
845 typedef enum LimitOption
846 {
847  LIMIT_OPTION_COUNT, /* FETCH FIRST... ONLY */
848  LIMIT_OPTION_WITH_TIES, /* FETCH FIRST... WITH TIES */
849  LIMIT_OPTION_DEFAULT, /* No limit present */
851 
852 #endif /* NODES_H */
#define PGDLLIMPORT
Definition: c.h:1318
signed short int16
Definition: c.h:428
static struct @142 value
int b
Definition: isn.c:70
int a
Definition: isn.c:69
Assert(fmt[strlen(fmt) - 1] !='\n')
SetOpCmd
Definition: nodes.h:813
@ SETOPCMD_EXCEPT
Definition: nodes.h:816
@ SETOPCMD_EXCEPT_ALL
Definition: nodes.h:817
@ SETOPCMD_INTERSECT_ALL
Definition: nodes.h:815
@ SETOPCMD_INTERSECT
Definition: nodes.h:814
SetOpStrategy
Definition: nodes.h:821
@ SETOP_HASHED
Definition: nodes.h:823
@ SETOP_SORTED
Definition: nodes.h:822
double Cost
Definition: nodes.h:672
void outToken(struct StringInfoData *str, const char *s)
#define nodeTag(nodeptr)
Definition: nodes.h:543
struct Node Node
void outDatum(struct StringInfoData *str, uintptr_t value, int typlen, bool typbyval)
int * readIntCols(int numCols)
Definition: readfuncs.c:3101
#define AGGSPLITOP_DESERIALIZE
Definition: nodes.h:787
#define AGGSPLITOP_SKIPFINAL
Definition: nodes.h:785
OnConflictAction
Definition: nodes.h:833
@ ONCONFLICT_NONE
Definition: nodes.h:834
@ ONCONFLICT_UPDATE
Definition: nodes.h:836
@ ONCONFLICT_NOTHING
Definition: nodes.h:835
#define AGGSPLITOP_SERIALIZE
Definition: nodes.h:786
PGDLLIMPORT Node * newNodeMacroHolder
Definition: nodes.c:31
struct Bitmapset * readBitmapset(void)
Definition: readfuncs.c:238
void outBitmapset(struct StringInfoData *str, const struct Bitmapset *bms)
double Cardinality
Definition: nodes.h:673
void * copyObjectImpl(const void *obj)
Definition: copyfuncs.c:4994
CmdType
Definition: nodes.h:683
@ CMD_UTILITY
Definition: nodes.h:689
@ CMD_INSERT
Definition: nodes.h:687
@ CMD_DELETE
Definition: nodes.h:688
@ CMD_UNKNOWN
Definition: nodes.h:684
@ CMD_UPDATE
Definition: nodes.h:686
@ CMD_SELECT
Definition: nodes.h:685
@ CMD_NOTHING
Definition: nodes.h:691
bool equal(const void *a, const void *b)
Definition: equalfuncs.c:3161
AggStrategy
Definition: nodes.h:769
@ AGG_SORTED
Definition: nodes.h:771
@ AGG_HASHED
Definition: nodes.h:772
@ AGG_MIXED
Definition: nodes.h:773
@ AGG_PLAIN
Definition: nodes.h:770
char * bmsToString(const struct Bitmapset *bms)
NodeTag
Definition: nodes.h:27
@ T_LockingClause
Definition: nodes.h:473
@ T_Unique
Definition: nodes.h:83
@ T_HashJoinState
Definition: nodes.h:134
@ T_BitString
Definition: nodes.h:296
@ T_SupportRequestCost
Definition: nodes.h:527
@ T_RangeTblEntry
Definition: nodes.h:461
@ T_TIDBitmap
Definition: nodes.h:517
@ T_FieldStore
Definition: nodes.h:174
@ T_AlterPublicationStmt
Definition: nodes.h:423
@ T_AlternativeSubPlan
Definition: nodes.h:172
@ T_PartitionCmd
Definition: nodes.h:488
@ T_CoalesceExpr
Definition: nodes.h:186
@ T_CreateSchemaStmt
Definition: nodes.h:370
@ T_PathKey
Definition: nodes.h:268
@ T_PartitionPruneInfo
Definition: nodes.h:93
@ T_ModifyTablePath
Definition: nodes.h:263
@ T_RuleStmt
Definition: nodes.h:343
@ T_ExtensibleNode
Definition: nodes.h:308
@ T_SortPath
Definition: nodes.h:252
@ T_NamedTuplestoreScan
Definition: nodes.h:68
@ T_CreateRoleStmt
Definition: nodes.h:363
@ T_RangeVar
Definition: nodes.h:154
@ T_DoStmt
Definition: nodes.h:341
@ T_RangeTableFunc
Definition: nodes.h:453
@ T_Constraint
Definition: nodes.h:459
@ T_CreateStmt
Definition: nodes.h:332
@ T_WorkTableScanState
Definition: nodes.h:128
@ T_RangeFunction
Definition: nodes.h:451
@ T_OnConflictSetState
Definition: nodes.h:37
@ T_SubqueryScanPath
Definition: nodes.h:236
@ T_LoadStmt
Definition: nodes.h:349
@ T_GroupResultPath
Definition: nodes.h:244
@ T_CreateTrigStmt
Definition: nodes.h:361
@ T_XmlSerialize
Definition: nodes.h:475
@ T_MergeAppendState
Definition: nodes.h:109
@ T_DefElem
Definition: nodes.h:460
@ T_WithCheckOption
Definition: nodes.h:464
@ T_DomainConstraintState
Definition: nodes.h:218
@ T_ReindexStmt
Definition: nodes.h:368
@ T_SupportRequestSelectivity
Definition: nodes.h:526
@ T_AlterEnumStmt
Definition: nodes.h:395
@ T_List
Definition: nodes.h:301
@ T_ColumnDef
Definition: nodes.h:456
@ T_ExecuteStmt
Definition: nodes.h:380
@ T_PlannerParamItem
Definition: nodes.h:278
@ T_HashPath
Definition: nodes.h:241
@ T_CTESearchClause
Definition: nodes.h:479
@ T_IndexOnlyScanState
Definition: nodes.h:117
@ T_IndexOptInfo
Definition: nodes.h:226
@ T_OnConflictExpr
Definition: nodes.h:202
@ T_FdwRoutine
Definition: nodes.h:519
@ T_SubLink
Definition: nodes.h:170
@ T_RangeTblRef
Definition: nodes.h:199
@ T_SeqScanState
Definition: nodes.h:114
@ T_InferenceElem
Definition: nodes.h:197
@ T_ValuesScanState
Definition: nodes.h:125
@ T_CreateFdwStmt
Definition: nodes.h:398
@ T_RenameStmt
Definition: nodes.h:342
@ T_CreateEventTrigStmt
Definition: nodes.h:413
@ T_SortGroupClause
Definition: nodes.h:465
@ T_GroupPath
Definition: nodes.h:254
@ T_CoerceToDomainValue
Definition: nodes.h:193
@ T_ObjectWithArgs
Definition: nodes.h:468
@ T_DiscardStmt
Definition: nodes.h:360
@ T_WindowFunc
Definition: nodes.h:161
@ T_CustomScanState
Definition: nodes.h:130
@ T_ImportForeignSchemaStmt
Definition: nodes.h:409
@ T_FieldSelect
Definition: nodes.h:173
@ T_VacuumStmt
Definition: nodes.h:353
@ T_InlineCodeBlock
Definition: nodes.h:518
@ T_ArrayExpr
Definition: nodes.h:183
@ T_IdentifySystemCmd
Definition: nodes.h:496
@ T_TableFunc
Definition: nodes.h:155
@ T_TidRangeScan
Definition: nodes.h:62
@ T_AlterOperatorStmt
Definition: nodes.h:388
@ T_TableFuncScan
Definition: nodes.h:66
@ T_HashState
Definition: nodes.h:145
@ T_CollateExpr
Definition: nodes.h:179
@ T_CallContext
Definition: nodes.h:524
@ T_ReturnStmt
Definition: nodes.h:320
@ T_CreateTableSpaceStmt
Definition: nodes.h:383
@ T_DropRoleStmt
Definition: nodes.h:365
@ T_AlterTableSpaceOptionsStmt
Definition: nodes.h:405
@ T_PartitionElem
Definition: nodes.h:484
@ T_BoolExpr
Definition: nodes.h:169
@ T_MinMaxAggPath
Definition: nodes.h:258
@ T_AlterCollationStmt
Definition: nodes.h:428
@ T_RelOptInfo
Definition: nodes.h:225
@ T_AccessPriv
Definition: nodes.h:469
@ T_OpExpr
Definition: nodes.h:165
@ T_SupportRequestRows
Definition: nodes.h:528
@ T_CreateStatsStmt
Definition: nodes.h:427
@ T_CreateFunctionStmt
Definition: nodes.h:339
@ T_FunctionScan
Definition: nodes.h:64
@ T_TypeName
Definition: nodes.h:455
@ T_AlterDatabaseStmt
Definition: nodes.h:371
@ T_CreateSubscriptionStmt
Definition: nodes.h:424
@ T_PublicationObjSpec
Definition: nodes.h:490
@ T_SpecialJoinInfo
Definition: nodes.h:273
@ T_AlterRoleStmt
Definition: nodes.h:364
@ T_ExprContext
Definition: nodes.h:34
@ T_PathTarget
Definition: nodes.h:269
@ T_JoinExpr
Definition: nodes.h:200
@ T_ScalarArrayOpExpr
Definition: nodes.h:168
@ T_NestPath
Definition: nodes.h:239
@ T_CaseExpr
Definition: nodes.h:180
@ T_RelabelType
Definition: nodes.h:175
@ T_TupleTableSlot
Definition: nodes.h:40
@ T_CreatePublicationStmt
Definition: nodes.h:422
@ T_PlaceHolderInfo
Definition: nodes.h:276
@ T_PublicationTable
Definition: nodes.h:491
@ T_DeleteStmt
Definition: nodes.h:317
@ T_XmlExpr
Definition: nodes.h:189
@ T_CreateForeignTableStmt
Definition: nodes.h:408
@ T_ForeignKeyOptInfo
Definition: nodes.h:227
@ T_TidRangeScanState
Definition: nodes.h:121
@ T_GroupState
Definition: nodes.h:139
@ T_GroupingSet
Definition: nodes.h:466
@ T_AlterObjectDependsStmt
Definition: nodes.h:385
@ T_BitmapOr
Definition: nodes.h:53
@ T_CustomPath
Definition: nodes.h:238
@ T_CreateRangeStmt
Definition: nodes.h:394
@ T_Scan
Definition: nodes.h:54
@ T_CreateConversionStmt
Definition: nodes.h:374
@ T_Material
Definition: nodes.h:76
@ T_ExprState
Definition: nodes.h:214
@ T_ClusterStmt
Definition: nodes.h:330
@ T_SampleScanState
Definition: nodes.h:115
@ T_RawStmt
Definition: nodes.h:313
@ T_WindowObjectData
Definition: nodes.h:516
@ T_SupportRequestSimplify
Definition: nodes.h:525
@ T_DropOwnedStmt
Definition: nodes.h:390
@ T_IndexOnlyScan
Definition: nodes.h:58
@ T_FunctionParameter
Definition: nodes.h:472
@ T_TableSampleClause
Definition: nodes.h:463
@ T_Append
Definition: nodes.h:49
@ T_DropUserMappingStmt
Definition: nodes.h:404
@ T_SetOperationStmt
Definition: nodes.h:325
@ T_RestrictInfo
Definition: nodes.h:270
@ T_LockStmt
Definition: nodes.h:366
@ T_Gather
Definition: nodes.h:84
@ T_ListenStmt
Definition: nodes.h:345
@ T_BitmapIndexScan
Definition: nodes.h:59
@ T_Alias
Definition: nodes.h:153
@ T_ResTarget
Definition: nodes.h:444
@ T_SortState
Definition: nodes.h:137
@ T_PrepareStmt
Definition: nodes.h:379
@ T_MinMaxAggInfo
Definition: nodes.h:277
@ T_ReassignOwnedStmt
Definition: nodes.h:391
@ T_PartitionedRelPruneInfo
Definition: nodes.h:94
@ T_ConvertRowtypeExpr
Definition: nodes.h:178
@ T_RowIdentityVarInfo
Definition: nodes.h:275
@ T_AlterTypeStmt
Definition: nodes.h:389
@ T_BaseBackupCmd
Definition: nodes.h:497
@ T_IncrementalSortPath
Definition: nodes.h:253
@ T_CreateOpClassItem
Definition: nodes.h:470
@ T_RecursiveUnion
Definition: nodes.h:51
@ T_UpdateStmt
Definition: nodes.h:318
@ T_CommonTableExpr
Definition: nodes.h:481
@ T_IncrementalSortState
Definition: nodes.h:138
@ T_SubqueryScanState
Definition: nodes.h:122
@ T_TidPath
Definition: nodes.h:234
@ T_VariableShowStmt
Definition: nodes.h:359
@ T_TruncateStmt
Definition: nodes.h:335
@ T_PlanInvalItem
Definition: nodes.h:97
@ T_ExplainStmt
Definition: nodes.h:354
@ T_WindowClause
Definition: nodes.h:467
@ T_SetExprState
Definition: nodes.h:216
@ T_LockRows
Definition: nodes.h:88
@ T_CheckPointStmt
Definition: nodes.h:369
@ T_MultiAssignRef
Definition: nodes.h:445
@ T_EventTriggerData
Definition: nodes.h:514
@ T_DropdbStmt
Definition: nodes.h:352
@ T_StatsElem
Definition: nodes.h:458
@ T_Hash
Definition: nodes.h:86
@ T_ResultRelInfo
Definition: nodes.h:38
@ T_NotifyStmt
Definition: nodes.h:344
@ T_TidScan
Definition: nodes.h:61
@ T_ProjectionInfo
Definition: nodes.h:35
@ T_CteScanState
Definition: nodes.h:126
@ T_ResultState
Definition: nodes.h:105
@ T_AggPath
Definition: nodes.h:256
@ T_BitmapHeapScanState
Definition: nodes.h:119
@ T_Limit
Definition: nodes.h:89
@ T_Plan
Definition: nodes.h:45
@ T_CreateSeqStmt
Definition: nodes.h:356
@ T_PlanRowMark
Definition: nodes.h:92
@ T_A_Indices
Definition: nodes.h:441
@ T_StatisticExtInfo
Definition: nodes.h:281
@ T_MemoizePath
Definition: nodes.h:246
@ T_AlterForeignServerStmt
Definition: nodes.h:401
@ T_RecursiveUnionState
Definition: nodes.h:110
@ T_MaterialState
Definition: nodes.h:135
@ T_CreateEnumStmt
Definition: nodes.h:393
@ T_AppendState
Definition: nodes.h:108
@ T_GatherMergePath
Definition: nodes.h:249
@ T_Query
Definition: nodes.h:314
@ T_A_ArrayExpr
Definition: nodes.h:443
@ T_SetOpPath
Definition: nodes.h:260
@ T_UnlistenStmt
Definition: nodes.h:346
@ T_FromExpr
Definition: nodes.h:201
@ T_Memoize
Definition: nodes.h:77
@ T_TidRangePath
Definition: nodes.h:235
@ T_TriggerTransition
Definition: nodes.h:483
@ T_TransactionStmt
Definition: nodes.h:347
@ T_LockRowsState
Definition: nodes.h:147
@ T_ParamPathInfo
Definition: nodes.h:228
@ T_AlterExtensionContentsStmt
Definition: nodes.h:412
@ T_AlterFdwStmt
Definition: nodes.h:399
@ T_Sort
Definition: nodes.h:78
@ T_NamedTuplestoreScanState
Definition: nodes.h:127
@ T_BitmapAndPath
Definition: nodes.h:232
@ T_RowExpr
Definition: nodes.h:184
@ T_TargetEntry
Definition: nodes.h:198
@ T_AlterStatsStmt
Definition: nodes.h:430
@ T_AlterEventTrigStmt
Definition: nodes.h:414
@ T_ProjectionPath
Definition: nodes.h:250
@ T_PlannerInfo
Definition: nodes.h:223
@ T_AlterOpFamilyStmt
Definition: nodes.h:378
@ T_DropStmt
Definition: nodes.h:334
@ T_FuncCall
Definition: nodes.h:439
@ T_CreateTransformStmt
Definition: nodes.h:420
@ T_SubPlanState
Definition: nodes.h:217
@ T_Float
Definition: nodes.h:294
@ T_AlterTableCmd
Definition: nodes.h:323
@ T_SeqScan
Definition: nodes.h:55
@ T_ArrayCoerceExpr
Definition: nodes.h:177
@ T_A_Const
Definition: nodes.h:438
@ T_TidScanState
Definition: nodes.h:120
@ T_IndexInfo
Definition: nodes.h:33
@ T_ModifyTableState
Definition: nodes.h:107
@ T_AggState
Definition: nodes.h:140
@ T_String
Definition: nodes.h:295
@ T_ProjectSetState
Definition: nodes.h:106
@ T_AlterSeqStmt
Definition: nodes.h:357
@ T_GatherState
Definition: nodes.h:143
@ T_JunkFilter
Definition: nodes.h:36
@ T_BitmapOrState
Definition: nodes.h:112
@ T_WindowAgg
Definition: nodes.h:82
@ T_FunctionScanState
Definition: nodes.h:123
@ T_CTECycleClause
Definition: nodes.h:480
@ T_MinMaxExpr
Definition: nodes.h:187
@ T_MaterialPath
Definition: nodes.h:245
@ T_A_Expr
Definition: nodes.h:435
@ T_AlterFunctionStmt
Definition: nodes.h:340
@ T_SetOpState
Definition: nodes.h:146
@ T_InferClause
Definition: nodes.h:477
@ T_TriggerData
Definition: nodes.h:513
@ T_A_Indirection
Definition: nodes.h:442
@ T_RecursiveUnionPath
Definition: nodes.h:261
@ T_ForeignPath
Definition: nodes.h:237
@ T_ForeignKeyCacheInfo
Definition: nodes.h:523
@ T_CurrentOfExpr
Definition: nodes.h:195
@ T_IndexStmt
Definition: nodes.h:338
@ T_ProjectSet
Definition: nodes.h:47
@ T_AlterObjectSchemaStmt
Definition: nodes.h:386
@ T_CreatePolicyStmt
Definition: nodes.h:418
@ T_ReturnSetInfo
Definition: nodes.h:515
@ T_AlterPolicyStmt
Definition: nodes.h:419
@ T_MergeJoin
Definition: nodes.h:74
@ T_UniqueState
Definition: nodes.h:142
@ T_SampleScan
Definition: nodes.h:56
@ T_SortBy
Definition: nodes.h:448
@ T_MergeAppendPath
Definition: nodes.h:243
@ T_ValuesScan
Definition: nodes.h:65
@ T_AllocSetContext
Definition: nodes.h:286
@ T_Aggref
Definition: nodes.h:159
@ T_GroupingSetsPath
Definition: nodes.h:257
@ T_DropTableSpaceStmt
Definition: nodes.h:384
@ T_BooleanTest
Definition: nodes.h:191
@ T_BitmapAnd
Definition: nodes.h:52
@ T_ReadReplicationSlotCmd
Definition: nodes.h:500
@ T_ParamRef
Definition: nodes.h:437
@ T_MemoizeState
Definition: nodes.h:136
@ T_MergeAppend
Definition: nodes.h:50
@ T_CompositeTypeStmt
Definition: nodes.h:392
@ T_OidList
Definition: nodes.h:303
@ T_MergeJoinState
Definition: nodes.h:133
@ T_DropReplicationSlotCmd
Definition: nodes.h:499
@ T_Integer
Definition: nodes.h:293
@ T_BitmapHeapPath
Definition: nodes.h:231
@ T_CallStmt
Definition: nodes.h:429
@ T_CreateDomainStmt
Definition: nodes.h:350
@ T_AlterTSConfigurationStmt
Definition: nodes.h:397
@ T_PlanState
Definition: nodes.h:104
@ T_Agg
Definition: nodes.h:81
@ T_GrantRoleStmt
Definition: nodes.h:327
@ T_A_Star
Definition: nodes.h:440
@ T_RangeTblFunction
Definition: nodes.h:462
@ T_CreateForeignServerStmt
Definition: nodes.h:400
@ T_UpperUniquePath
Definition: nodes.h:255
@ T_RowMarkClause
Definition: nodes.h:474
@ T_InsertStmt
Definition: nodes.h:316
@ T_WithClause
Definition: nodes.h:476
@ T_CreateTableAsStmt
Definition: nodes.h:355
@ T_IntList
Definition: nodes.h:302
@ T_VacuumRelation
Definition: nodes.h:489
@ T_BitmapAndState
Definition: nodes.h:111
@ T_DeclareCursorStmt
Definition: nodes.h:382
@ T_AppendRelInfo
Definition: nodes.h:274
@ T_DefineStmt
Definition: nodes.h:333
@ T_CreateOpFamilyStmt
Definition: nodes.h:377
@ T_FetchStmt
Definition: nodes.h:337
@ T_CreatePLangStmt
Definition: nodes.h:362
@ T_CteScan
Definition: nodes.h:67
@ T_DeallocateStmt
Definition: nodes.h:381
@ T_RollupData
Definition: nodes.h:279
@ T_CopyStmt
Definition: nodes.h:331
@ T_WindowFuncExprState
Definition: nodes.h:215
@ T_WindowAggState
Definition: nodes.h:141
@ T_SubPlan
Definition: nodes.h:171
@ T_NestLoop
Definition: nodes.h:73
@ T_SQLValueFunction
Definition: nodes.h:188
@ T_LockRowsPath
Definition: nodes.h:262
@ T_UniquePath
Definition: nodes.h:247
@ T_NamedArgExpr
Definition: nodes.h:164
@ T_DropSubscriptionStmt
Definition: nodes.h:426
@ T_ReplicaIdentityStmt
Definition: nodes.h:416
@ T_PLAssignStmt
Definition: nodes.h:321
@ T_IncrementalSort
Definition: nodes.h:79
@ T_CustomScan
Definition: nodes.h:71
@ T_Const
Definition: nodes.h:157
@ T_Group
Definition: nodes.h:80
@ T_NestLoopParam
Definition: nodes.h:91
@ T_ModifyTable
Definition: nodes.h:48
@ T_AlterExtensionStmt
Definition: nodes.h:411
@ T_CreateUserMappingStmt
Definition: nodes.h:402
@ T_AlterTSDictionaryStmt
Definition: nodes.h:396
@ T_WindowAggPath
Definition: nodes.h:259
@ T_LimitPath
Definition: nodes.h:264
@ T_GatherMerge
Definition: nodes.h:85
@ T_TimeLineHistoryCmd
Definition: nodes.h:502
@ T_CoerceViaIO
Definition: nodes.h:176
@ T_AlterUserMappingStmt
Definition: nodes.h:403
@ T_AlterOwnerStmt
Definition: nodes.h:387
@ T_PartitionRangeDatum
Definition: nodes.h:487
@ T_SlabContext
Definition: nodes.h:287
@ T_ScanState
Definition: nodes.h:113
@ T_AlterSystemStmt
Definition: nodes.h:417
@ T_NextValueExpr
Definition: nodes.h:196
@ T_TsmRoutine
Definition: nodes.h:522
@ T_PartitionBoundSpec
Definition: nodes.h:486
@ T_CreateAmStmt
Definition: nodes.h:421
@ T_NestLoopState
Definition: nodes.h:132
@ T_Param
Definition: nodes.h:158
@ T_TableFuncScanState
Definition: nodes.h:124
@ T_AlterDomainStmt
Definition: nodes.h:324
@ T_CoerceToDomain
Definition: nodes.h:192
@ T_WindowDef
Definition: nodes.h:449
@ T_GroupingFunc
Definition: nodes.h:160
@ T_ConstraintsSetStmt
Definition: nodes.h:367
@ T_BitmapIndexScanState
Definition: nodes.h:118
@ T_SelectStmt
Definition: nodes.h:319
@ T_SubqueryScan
Definition: nodes.h:63
@ T_AlterDatabaseSetStmt
Definition: nodes.h:372
@ T_IndexScanState
Definition: nodes.h:116
@ T_DistinctExpr
Definition: nodes.h:166
@ T_PartitionSpec
Definition: nodes.h:485
@ T_CollateClause
Definition: nodes.h:447
@ T_MergePath
Definition: nodes.h:240
@ T_SetOp
Definition: nodes.h:87
@ T_CreateExtensionStmt
Definition: nodes.h:410
@ T_CreateCastStmt
Definition: nodes.h:375
@ T_RangeTableSample
Definition: nodes.h:452
@ T_RefreshMatViewStmt
Definition: nodes.h:415
@ T_ColumnRef
Definition: nodes.h:436
@ T_GrantStmt
Definition: nodes.h:326
@ T_AlterSubscriptionStmt
Definition: nodes.h:425
@ T_SQLCmd
Definition: nodes.h:503
@ T_CreatedbStmt
Definition: nodes.h:351
@ T_GroupingSetData
Definition: nodes.h:280
@ T_ProjectSetPath
Definition: nodes.h:251
@ T_FuncExpr
Definition: nodes.h:163
@ T_Var
Definition: nodes.h:156
@ T_Join
Definition: nodes.h:72
@ T_PlannedStmt
Definition: nodes.h:315
@ T_GenerationContext
Definition: nodes.h:288
@ T_GatherMergeState
Definition: nodes.h:144
@ T_RowCompareExpr
Definition: nodes.h:185
@ T_RangeSubselect
Definition: nodes.h:450
@ T_CaseTestExpr
Definition: nodes.h:182
@ T_NullTest
Definition: nodes.h:190
@ T_ForeignScanState
Definition: nodes.h:129
@ T_PlannerGlobal
Definition: nodes.h:224
@ T_StartReplicationCmd
Definition: nodes.h:501
@ T_Invalid
Definition: nodes.h:28
@ T_AlterDefaultPrivilegesStmt
Definition: nodes.h:328
@ T_VariableSetStmt
Definition: nodes.h:358
@ T_SecLabelStmt
Definition: nodes.h:407
@ T_Result
Definition: nodes.h:46
@ T_AppendPath
Definition: nodes.h:242
@ T_IndexClause
Definition: nodes.h:271
@ T_AlterTableStmt
Definition: nodes.h:322
@ T_CaseWhen
Definition: nodes.h:181
@ T_EquivalenceMember
Definition: nodes.h:267
@ T_JoinState
Definition: nodes.h:131
@ T_CreateOpClassStmt
Definition: nodes.h:376
@ T_LimitState
Definition: nodes.h:148
@ T_IndexAmRoutine
Definition: nodes.h:520
@ T_EState
Definition: nodes.h:39
@ T_PartitionPruneStepCombine
Definition: nodes.h:96
@ T_SubscriptingRef
Definition: nodes.h:162
@ T_OnConflictClause
Definition: nodes.h:478
@ T_PartitionPruneStepOp
Definition: nodes.h:95
@ T_IndexScan
Definition: nodes.h:57
@ T_IndexElem
Definition: nodes.h:457
@ T_EquivalenceClass
Definition: nodes.h:266
@ T_IntoClause
Definition: nodes.h:203
@ T_ViewStmt
Definition: nodes.h:348
@ T_AlterTableMoveAllStmt
Definition: nodes.h:406
@ T_SupportRequestIndexCondition
Definition: nodes.h:529
@ T_BitmapOrPath
Definition: nodes.h:233
@ T_ClosePortalStmt
Definition: nodes.h:329
@ T_RangeTableFuncCol
Definition: nodes.h:454
@ T_SetToDefault
Definition: nodes.h:194
@ T_CreateReplicationSlotCmd
Definition: nodes.h:498
@ T_BitmapHeapScan
Definition: nodes.h:60
@ T_AlterRoleSetStmt
Definition: nodes.h:373
@ T_CommentStmt
Definition: nodes.h:336
@ T_TypeCast
Definition: nodes.h:446
@ T_TableAmRoutine
Definition: nodes.h:521
@ T_WorkTableScan
Definition: nodes.h:69
@ T_ForeignScan
Definition: nodes.h:70
@ T_HashJoin
Definition: nodes.h:75
@ T_NullIfExpr
Definition: nodes.h:167
@ T_TableLikeClause
Definition: nodes.h:471
@ T_Path
Definition: nodes.h:229
@ T_RoleSpec
Definition: nodes.h:482
@ T_GatherPath
Definition: nodes.h:248
@ T_IndexPath
Definition: nodes.h:230
@ T_PlaceHolderVar
Definition: nodes.h:272
double Selectivity
Definition: nodes.h:671
AggSplit
Definition: nodes.h:791
@ AGGSPLIT_FINAL_DESERIAL
Definition: nodes.h:797
@ AGGSPLIT_SIMPLE
Definition: nodes.h:793
@ AGGSPLIT_INITIAL_SERIAL
Definition: nodes.h:795
LimitOption
Definition: nodes.h:846
@ LIMIT_OPTION_COUNT
Definition: nodes.h:847
@ LIMIT_OPTION_WITH_TIES
Definition: nodes.h:848
@ LIMIT_OPTION_DEFAULT
Definition: nodes.h:849
void * stringToNode(const char *str)
Definition: read.c:89
bool * readBoolCols(int numCols)
Definition: readfuncs.c:3125
#define AGGSPLITOP_COMBINE
Definition: nodes.h:784
Oid * readOidCols(int numCols)
Definition: readfuncs.c:3077
void outNode(struct StringInfoData *str, const void *obj)
uintptr_t readDatum(bool typbyval)
Definition: readfuncs.c:2996
int16 * readAttrNumberCols(int numCols)
Definition: readfuncs.c:3053
JoinType
Definition: nodes.h:707
@ JOIN_SEMI
Definition: nodes.h:726
@ JOIN_FULL
Definition: nodes.h:714
@ JOIN_INNER
Definition: nodes.h:712
@ JOIN_RIGHT
Definition: nodes.h:715
@ JOIN_LEFT
Definition: nodes.h:713
@ JOIN_UNIQUE_OUTER
Definition: nodes.h:733
@ JOIN_UNIQUE_INNER
Definition: nodes.h:734
@ JOIN_ANTI
Definition: nodes.h:727
char * nodeToString(const void *obj)
Definition: outfuncs.c:4548
unsigned int Oid
Definition: postgres_ext.h:31
Definition: nodes.h:539
NodeTag type
Definition: nodes.h:540