📄 parsenodes.h
字号:
typedef enum FunctionParameterMode{ /* the assigned enum values appear in pg_proc, don't change 'em! */ FUNC_PARAM_IN = 'i', /* input only */ FUNC_PARAM_OUT = 'o', /* output only */ FUNC_PARAM_INOUT = 'b' /* both */} FunctionParameterMode;typedef struct FunctionParameter{ NodeTag type; char *name; /* parameter name, or NULL if not given */ TypeName *argType; /* TypeName for parameter type */ FunctionParameterMode mode; /* IN/OUT/INOUT */} FunctionParameter;typedef struct AlterFunctionStmt{ NodeTag type; FuncWithArgs *func; /* name and args of function */ List *actions; /* list of DefElem */} AlterFunctionStmt;/* ---------------------- * Drop Aggregate Statement * ---------------------- */typedef struct RemoveAggrStmt{ NodeTag type; List *aggname; /* aggregate to drop */ TypeName *aggtype; /* TypeName for input datatype, or NULL */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */} RemoveAggrStmt;/* ---------------------- * Drop Function Statement * ---------------------- */typedef struct RemoveFuncStmt{ NodeTag type; List *funcname; /* function to drop */ List *args; /* types of the arguments */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */} RemoveFuncStmt;/* ---------------------- * Drop Operator Statement * ---------------------- */typedef struct RemoveOperStmt{ NodeTag type; List *opname; /* operator to drop */ List *args; /* types of the arguments */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */} RemoveOperStmt;/* ---------------------- * Drop Operator Class Statement * ---------------------- */typedef struct RemoveOpClassStmt{ NodeTag type; List *opclassname; /* qualified name (list of Value strings) */ char *amname; /* name of index AM opclass is for */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */} RemoveOpClassStmt;/* ---------------------- * Alter Object Rename Statement * ---------------------- */typedef struct RenameStmt{ NodeTag type; ObjectType renameType; /* OBJECT_TABLE, OBJECT_COLUMN, etc */ RangeVar *relation; /* in case it's a table */ List *object; /* in case it's some other object */ List *objarg; /* argument types, if applicable */ char *subname; /* name of contained object (column, rule, * trigger, etc) */ char *newname; /* the new name */} RenameStmt;/* ---------------------- * ALTER object SET SCHEMA Statement * ---------------------- */typedef struct AlterObjectSchemaStmt{ NodeTag type; ObjectType objectType; /* OBJECT_TABLE, OBJECT_TYPE, etc */ RangeVar *relation; /* in case it's a table */ List *object; /* in case it's some other object */ List *objarg; /* argument types, if applicable */ char *addname; /* additional name if needed */ char *newschema; /* the new schema */} AlterObjectSchemaStmt;/* ---------------------- * Alter Object Owner Statement * ---------------------- */typedef struct AlterOwnerStmt{ NodeTag type; ObjectType objectType; /* OBJECT_TABLE, OBJECT_TYPE, etc */ RangeVar *relation; /* in case it's a table */ List *object; /* in case it's some other object */ List *objarg; /* argument types, if applicable */ char *addname; /* additional name if needed */ char *newowner; /* the new owner */} AlterOwnerStmt;/* ---------------------- * Create Rule Statement * ---------------------- */typedef struct RuleStmt{ NodeTag type; RangeVar *relation; /* relation the rule is for */ char *rulename; /* name of the rule */ Node *whereClause; /* qualifications */ CmdType event; /* SELECT, INSERT, etc */ bool instead; /* is a 'do instead'? */ List *actions; /* the action statements */ bool replace; /* OR REPLACE */} RuleStmt;/* ---------------------- * Notify Statement * ---------------------- */typedef struct NotifyStmt{ NodeTag type; RangeVar *relation; /* qualified name to notify */} NotifyStmt;/* ---------------------- * Listen Statement * ---------------------- */typedef struct ListenStmt{ NodeTag type; RangeVar *relation; /* qualified name to listen on */} ListenStmt;/* ---------------------- * Unlisten Statement * ---------------------- */typedef struct UnlistenStmt{ NodeTag type; RangeVar *relation; /* qualified name to unlisten on, or '*' */} UnlistenStmt;/* ---------------------- * {Begin|Commit|Rollback} Transaction Statement * ---------------------- */typedef enum TransactionStmtKind{ TRANS_STMT_BEGIN, TRANS_STMT_START, /* semantically identical to BEGIN */ TRANS_STMT_COMMIT, TRANS_STMT_ROLLBACK, TRANS_STMT_SAVEPOINT, TRANS_STMT_RELEASE, TRANS_STMT_ROLLBACK_TO, TRANS_STMT_PREPARE, TRANS_STMT_COMMIT_PREPARED, TRANS_STMT_ROLLBACK_PREPARED} TransactionStmtKind;typedef struct TransactionStmt{ NodeTag type; TransactionStmtKind kind; /* see above */ List *options; /* for BEGIN/START and savepoint commands */ char *gid; /* for two-phase-commit related commands */} TransactionStmt;/* ---------------------- * Create Type Statement, composite types * ---------------------- */typedef struct CompositeTypeStmt{ NodeTag type; RangeVar *typevar; /* the composite type to be created */ List *coldeflist; /* list of ColumnDef nodes */} CompositeTypeStmt;/* ---------------------- * Create View Statement * ---------------------- */typedef struct ViewStmt{ NodeTag type; RangeVar *view; /* the view to be created */ List *aliases; /* target column names */ Query *query; /* the SQL statement */ bool replace; /* replace an existing view? */} ViewStmt;/* ---------------------- * Load Statement * ---------------------- */typedef struct LoadStmt{ NodeTag type; char *filename; /* file to load */} LoadStmt;/* ---------------------- * Createdb Statement * ---------------------- */typedef struct CreatedbStmt{ NodeTag type; char *dbname; /* name of database to create */ List *options; /* List of DefElem nodes */} CreatedbStmt;/* ---------------------- * Alter Database * ---------------------- */typedef struct AlterDatabaseStmt{ NodeTag type; char *dbname; /* name of database to alter */ List *options; /* List of DefElem nodes */} AlterDatabaseStmt;typedef struct AlterDatabaseSetStmt{ NodeTag type; char *dbname; char *variable; List *value;} AlterDatabaseSetStmt;/* ---------------------- * Dropdb Statement * ---------------------- */typedef struct DropdbStmt{ NodeTag type; char *dbname; /* database to drop */} DropdbStmt;/* ---------------------- * Cluster Statement (support pbrown's cluster index implementation) * ---------------------- */typedef struct ClusterStmt{ NodeTag type; RangeVar *relation; /* relation being indexed, or NULL if all */ char *indexname; /* original index defined */} ClusterStmt;/* ---------------------- * Vacuum and Analyze Statements * * Even though these are nominally two statements, it's convenient to use * just one node type for both. * ---------------------- */typedef struct VacuumStmt{ NodeTag type; bool vacuum; /* do VACUUM step */ bool full; /* do FULL (non-concurrent) vacuum */ bool analyze; /* do ANALYZE step */ bool freeze; /* early-freeze option */ bool verbose; /* print progress info */ RangeVar *relation; /* single table to process, or NULL */ List *va_cols; /* list of column names, or NIL for all */} VacuumStmt;/* ---------------------- * Explain Statement * ---------------------- */typedef struct ExplainStmt{ NodeTag type; Query *query; /* the query */ bool verbose; /* print plan info */ bool analyze; /* get statistics by executing plan */} ExplainStmt;/* ---------------------- * Checkpoint Statement * ---------------------- */typedef struct CheckPointStmt{ NodeTag type;} CheckPointStmt;/* ---------------------- * Set Statement * ---------------------- */typedef struct VariableSetStmt{ NodeTag type; char *name; List *args; bool is_local; /* SET LOCAL */} VariableSetStmt;/* ---------------------- * Show Statement * ---------------------- */typedef struct VariableShowStmt{ NodeTag type; char *name;} VariableShowStmt;/* ---------------------- * Reset Statement * ---------------------- */typedef struct VariableResetStmt{ NodeTag type; char *name;} VariableResetStmt;/* ---------------------- * LOCK Statement * ---------------------- */typedef struct LockStmt{ NodeTag type; List *relations; /* relations to lock */ int mode; /* lock mode */ bool nowait; /* no wait mode */} LockStmt;/* ---------------------- * SET CONSTRAINTS Statement * ---------------------- */typedef struct ConstraintsSetStmt{ NodeTag type; List *constraints; /* List of names as Value strings */ bool deferred;} ConstraintsSetStmt;/* ---------------------- * REINDEX Statement * ---------------------- */typedef struct ReindexStmt{ NodeTag type; ObjectType kind; /* OBJECT_INDEX, OBJECT_TABLE, OBJECT_DATABASE */ RangeVar *relation; /* Table or index to reindex */ const char *name; /* name of database to reindex */ bool do_system; /* include system tables in database case */ bool do_user; /* include user tables in database case */} ReindexStmt;/* ---------------------- * CREATE CONVERSION Statement * ---------------------- */typedef struct CreateConversionStmt{ NodeTag type; List *conversion_name; /* Name of the conversion */ char *for_encoding_name; /* source encoding name */ char *to_encoding_name; /* destination encoding name */ List *func_name; /* qualified conversion function name */ bool def; /* is this a default conversion? */} CreateConversionStmt;/* ---------------------- * CREATE CAST Statement * ---------------------- */typedef struct CreateCastStmt{ NodeTag type; TypeName *sourcetype; TypeName *targettype; FuncWithArgs *func; CoercionContext context;} CreateCastStmt;/* ---------------------- * DROP CAST Statement * ---------------------- */typedef struct DropCastStmt{ NodeTag type; TypeName *sourcetype; TypeName *targettype; DropBehavior behavior;} DropCastStmt;/* ---------------------- * PREPARE Statement * ---------------------- */typedef struct PrepareStmt{ NodeTag type; char *name; /* Name of plan, arbitrary */ List *argtypes; /* Types of parameters (TypeNames) */ List *argtype_oids; /* Types of parameters (OIDs) */ Query *query; /* The query itself */} PrepareStmt;/* ---------------------- * EXECUTE Statement * ---------------------- */typedef struct ExecuteStmt{ NodeTag type; char *name; /* The name of the plan to execute */ RangeVar *into; /* Optional table to store results in */ List *params; /* Values to assign to parameters */} ExecuteStmt;/* ---------------------- * DEALLOCATE Statement * ---------------------- */typedef struct DeallocateStmt{ NodeTag type; char *name; /* The name of the plan to remove */} DeallocateStmt;#endif /* PARSENODES_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -