aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/include/nodes/parsenodes.h137
1 files changed, 70 insertions, 67 deletions
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index 8674f456dd1..d6f866a4455 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: parsenodes.h,v 1.36 1997/12/04 00:28:03 scrappy Exp $
+ * $Id: parsenodes.h,v 1.37 1997/12/04 23:55:52 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -61,7 +61,7 @@ typedef struct Query
/* internal to planner */
List *base_relation_list_; /* base relation list */
List *join_relation_list_; /* list of relations */
-} Query;
+} Query;
/*****************************************************************************
@@ -82,7 +82,7 @@ typedef struct AddAttrStmt
NodeTag type;
char *relname; /* the relation to add attr */
bool inh; /* add recursively to children? */
- struct ColumnDef *colDef; /* the attribute definition */
+ Node *colDef; /* the attribute definition */
} AddAttrStmt;
/* ----------------------
@@ -95,7 +95,7 @@ typedef struct ChangeACLStmt
struct AclItem *aclitem;
unsigned modechg;
List *relNames;
-} ChangeACLStmt;
+} ChangeACLStmt;
/* ----------------------
* Close Portal Statement
@@ -105,7 +105,7 @@ typedef struct ClosePortalStmt
{
NodeTag type;
char *portalname; /* name of the portal (cursor) */
-} ClosePortalStmt;
+} ClosePortalStmt;
/* ----------------------
* Copy Statement
@@ -120,7 +120,7 @@ typedef struct CopyStmt
int direction; /* TO or FROM */
char *filename; /* if NULL, use stdin/stdout */
char *delimiter; /* delimiter character, \t by default */
-} CopyStmt;
+} CopyStmt;
/* ----------------------
* Create Table Statement
@@ -130,23 +130,25 @@ typedef struct CreateStmt
{
NodeTag type;
char *relname; /* the relation to create */
- List *tableElts; /* column definitions list of ColumnDef */
+ List *tableElts; /* column definitions list of Column */
List *inhRelnames; /* relations to inherit from list of Value
* (string) */
List *constraints; /* list of constraints (ConstaintDef) */
-} CreateStmt;
+} CreateStmt;
-typedef enum ConstrType
+typedef enum ConstrType /* type of constaints */
{
- CONSTR_NONE, CONSTR_CHECK /* type of constaints */
-} ConstrType;
+ CONSTR_NONE, CONSTR_NOTNULL, CONSTR_DEFAULT, CONSTR_CHECK, CONSTR_PRIMARY, CONSTR_UNIQUE
+} ConstrType;
-typedef struct ConstraintDef
+typedef struct Constraint
{
- ConstrType type;
+ NodeTag type;
+ ConstrType contype;
char *name; /* name */
void *def; /* definition */
-} ConstraintDef;
+ void *keys; /* list of primary keys */
+} Constraint;
/* ----------------------
* Create/Drop TRIGGER Statements
@@ -167,14 +169,14 @@ typedef struct CreateTrigStmt
char *text; /* AS 'text' */
List *attr; /* UPDATE OF a, b,... (NI) or NULL */
char *when; /* WHEN 'a > 10 ...' (NI) or NULL */
-} CreateTrigStmt;
+} CreateTrigStmt;
typedef struct DropTrigStmt
{
NodeTag type;
char *trigname; /* TRIGGER' name */
char *relname; /* triggered relation */
-} DropTrigStmt;
+} DropTrigStmt;
/* ----------------------
@@ -188,13 +190,13 @@ typedef struct CreatePLangStmt
char *plhandler; /* PL call handler function */
char *plcompiler; /* lancompiler text */
bool pltrusted; /* PL is trusted */
-} CreatePLangStmt;
+} CreatePLangStmt;
typedef struct DropPLangStmt
{
NodeTag type;
char *plname; /* PL name */
-} DropPLangStmt;
+} DropPLangStmt;
/* ----------------------
@@ -231,7 +233,7 @@ typedef struct CreateSeqStmt
NodeTag type;
char *seqname; /* the relation to create */
List *options;
-} CreateSeqStmt;
+} CreateSeqStmt;
/* ----------------------
* Create Version Statement
@@ -244,7 +246,7 @@ typedef struct VersionStmt
int direction; /* FORWARD | BACKWARD */
char *fromRelname; /* relation to create a version */
char *date; /* date of the snapshot */
-} VersionStmt;
+} VersionStmt;
/* ----------------------
* Create {Operator|Type|Aggregate} Statement
@@ -256,7 +258,7 @@ typedef struct DefineStmt
int defType; /* OPERATOR|P_TYPE|AGGREGATE */
char *defname;
List *definition; /* a list of DefElem */
-} DefineStmt;
+} DefineStmt;
/* ----------------------
* Drop Table Statement
@@ -267,7 +269,7 @@ typedef struct DestroyStmt
NodeTag type;
List *relNames; /* relations to be dropped */
bool sequence;
-} DestroyStmt;
+} DestroyStmt;
/* ----------------------
* Extend Index Statement
@@ -280,7 +282,7 @@ typedef struct ExtendStmt
Node *whereClause; /* qualifications */
List *rangetable; /* range table, filled in by
* transformStmt() */
-} ExtendStmt;
+} ExtendStmt;
/* ----------------------
* Begin Recipe Statement
@@ -290,7 +292,7 @@ typedef struct RecipeStmt
{
NodeTag type;
char *recipeName; /* name of the recipe */
-} RecipeStmt;
+} RecipeStmt;
/* ----------------------
* Fetch Statement
@@ -303,7 +305,7 @@ typedef struct FetchStmt
int howMany; /* amount to fetch ("ALL" --> 0) */
char *portalname; /* name of portal (cursor) */
bool ismove; /* TRUE if MOVE */
-} FetchStmt;
+} FetchStmt;
/* ----------------------
* Create Index Statement
@@ -322,7 +324,7 @@ typedef struct IndexStmt
* transformStmt() */
bool *lossy; /* is index lossy? */
bool unique; /* is index unique? */
-} IndexStmt;
+} IndexStmt;
/* ----------------------
* Create Function Statement
@@ -339,7 +341,7 @@ typedef struct ProcedureStmt
List *withClause; /* a list of ParamString */
char *as; /* the SQL statement or filename */
char *language; /* C or SQL */
-} ProcedureStmt;
+} ProcedureStmt;
/* ----------------------
* Drop Aggregate Statement
@@ -350,7 +352,7 @@ typedef struct RemoveAggrStmt
NodeTag type;
char *aggname; /* aggregate to drop */
char *aggtype; /* for this type */
-} RemoveAggrStmt;
+} RemoveAggrStmt;
/* ----------------------
* Drop Function Statement
@@ -361,7 +363,7 @@ typedef struct RemoveFuncStmt
NodeTag type;
char *funcname; /* function to drop */
List *args; /* types of the arguments */
-} RemoveFuncStmt;
+} RemoveFuncStmt;
/* ----------------------
* Drop Operator Statement
@@ -372,7 +374,7 @@ typedef struct RemoveOperStmt
NodeTag type;
char *opname; /* operator to drop */
List *args; /* types of the arguments */
-} RemoveOperStmt;
+} RemoveOperStmt;
/* ----------------------
* Drop {Type|Index|Rule|View} Statement
@@ -383,7 +385,7 @@ typedef struct RemoveStmt
NodeTag type;
int removeType; /* P_TYPE|INDEX|RULE|VIEW */
char *name; /* name to drop */
-} RemoveStmt;
+} RemoveStmt;
/* ----------------------
* Alter Table Statement
@@ -398,7 +400,7 @@ typedef struct RenameStmt
* the new name. Otherwise, rename this
* column name. */
char *newname; /* the new name */
-} RenameStmt;
+} RenameStmt;
/* ----------------------
* Create Rule Statement
@@ -413,7 +415,7 @@ typedef struct RuleStmt
struct Attr *object; /* object affected */
bool instead; /* is a 'do instead'? */
List *actions; /* the action statements */
-} RuleStmt;
+} RuleStmt;
/* ----------------------
* Notify Statement
@@ -423,7 +425,7 @@ typedef struct NotifyStmt
{
NodeTag type;
char *relname; /* relation to notify */
-} NotifyStmt;
+} NotifyStmt;
/* ----------------------
* Listen Statement
@@ -433,7 +435,7 @@ typedef struct ListenStmt
{
NodeTag type;
char *relname; /* relation to listen on */
-} ListenStmt;
+} ListenStmt;
/* ----------------------
* {Begin|Abort|End} Transaction Statement
@@ -443,7 +445,7 @@ typedef struct TransactionStmt
{
NodeTag type;
int command; /* BEGIN|END|ABORT */
-} TransactionStmt;
+} TransactionStmt;
/* ----------------------
* Create View Statement
@@ -454,7 +456,7 @@ typedef struct ViewStmt
NodeTag type;
char *viewname; /* name of the view */
Query *query; /* the SQL statement */
-} ViewStmt;
+} ViewStmt;
/* ----------------------
* Load Statement
@@ -464,7 +466,7 @@ typedef struct LoadStmt
{
NodeTag type;
char *filename; /* file to load */
-} LoadStmt;
+} LoadStmt;
/* ----------------------
* Createdb Statement
@@ -475,7 +477,7 @@ typedef struct CreatedbStmt
NodeTag type;
char *dbname; /* database to create */
char *dbpath; /* location of database */
-} CreatedbStmt;
+} CreatedbStmt;
/* ----------------------
* Destroydb Statement
@@ -485,7 +487,7 @@ typedef struct DestroydbStmt
{
NodeTag type;
char *dbname; /* database to drop */
-} DestroydbStmt;
+} DestroydbStmt;
/* ----------------------
* Cluster Statement (support pbrown's cluster index implementation)
@@ -496,7 +498,7 @@ typedef struct ClusterStmt
NodeTag type;
char *relname; /* relation being indexed */
char *indexname; /* original index defined */
-} ClusterStmt;
+} ClusterStmt;
/* ----------------------
* Vacuum Statement
@@ -509,7 +511,7 @@ typedef struct VacuumStmt
bool analyze; /* analyze data */
char *vacrel; /* table to vacuum */
List *va_spec; /* columns to analyse */
-} VacuumStmt;
+} VacuumStmt;
/* ----------------------
* Explain Statement
@@ -520,7 +522,7 @@ typedef struct ExplainStmt
NodeTag type;
Query *query; /* the query */
bool verbose; /* print plan info */
-} ExplainStmt;
+} ExplainStmt;
/* ----------------------
* Set Statement
@@ -532,7 +534,7 @@ typedef struct VariableSetStmt
NodeTag type;
char *name;
char *value;
-} VariableSetStmt;
+} VariableSetStmt;
/* ----------------------
* Show Statement
@@ -543,7 +545,7 @@ typedef struct VariableShowStmt
{
NodeTag type;
char *name;
-} VariableShowStmt;
+} VariableShowStmt;
/* ----------------------
* Reset Statement
@@ -554,7 +556,7 @@ typedef struct VariableResetStmt
{
NodeTag type;
char *name;
-} VariableResetStmt;
+} VariableResetStmt;
/*****************************************************************************
@@ -584,7 +586,7 @@ typedef struct DeleteStmt
NodeTag type;
char *relname; /* relation to delete from */
Node *whereClause; /* qualifications */
-} DeleteStmt;
+} DeleteStmt;
/* ----------------------
* Update Statement
@@ -597,7 +599,7 @@ typedef struct ReplaceStmt
List *targetList; /* the target list (of ResTarget) */
Node *whereClause; /* qualifications */
List *fromClause; /* the from clause */
-} ReplaceStmt;
+} ReplaceStmt;
/* ----------------------
* Create Cursor Statement
@@ -614,7 +616,7 @@ typedef struct CursorStmt
Node *whereClause; /* qualifications */
List *groupClause; /* group by clause */
List *sortClause; /* sort clause (a list of SortGroupBy's) */
-} CursorStmt;
+} CursorStmt;
/* ----------------------
* Select Statement
@@ -632,7 +634,7 @@ typedef struct RetrieveStmt
Node *havingClause; /* having conditional-expression */
List *selectClause; /* subselect parameters */
List *sortClause; /* sort clause (a list of SortGroupBy's) */
-} RetrieveStmt;
+} RetrieveStmt;
/****************************************************************************
@@ -651,7 +653,7 @@ typedef struct SubSelect
Node *whereClause; /* qualifications */
List *groupClause; /* group by clause */
Node *havingClause; /* having conditional-expression */
-} SubSelect;
+} SubSelect;
/*
* TypeName - specifies a type in definitions
@@ -664,7 +666,7 @@ typedef struct TypeName
bool setof; /* is a set? */
List *arrayBounds; /* array bounds */
int typlen; /* length for char() and varchar() */
-} TypeName;
+} TypeName;
/*
* ParamNo - specifies a parameter reference
@@ -674,7 +676,7 @@ typedef struct ParamNo
NodeTag type;
int number; /* the number of the parameter */
TypeName *typename; /* the typecast */
-} ParamNo;
+} ParamNo;
/*
* A_Expr - binary expressions
@@ -725,7 +727,8 @@ typedef struct ColumnDef
TypeName *typename; /* type of column */
bool is_not_null; /* flag to NOT NULL constraint */
char *defval; /* default value of column */
-} ColumnDef;
+ List *constraints; /* constraints on column */
+} ColumnDef;
/*
* Ident -
@@ -741,7 +744,7 @@ typedef struct Ident
List *indirection; /* array references */
bool isRel; /* is a relation - filled in by
* transformExpr() */
-} Ident;
+} Ident;
/*
* FuncCall - a function/aggregate invocation
@@ -751,7 +754,7 @@ typedef struct FuncCall
NodeTag type;
char *funcname; /* name of function */
List *args; /* the arguments (list of exprs) */
-} FuncCall;
+} FuncCall;
/*
* A_Indices - array reference or bounds ([lidx:uidx] or [uidx])
@@ -774,7 +777,7 @@ typedef struct ResTarget
List *indirection; /* array references */
Node *val; /* the value of the result (A_Expr or
* Attr) (or A_Const) */
-} ResTarget;
+} ResTarget;
/*
* ParamString - used in with clauses
@@ -784,7 +787,7 @@ typedef struct ParamString
NodeTag type;
char *name;
char *val;
-} ParamString;
+} ParamString;
/*
* RelExpr - relation expressions
@@ -794,7 +797,7 @@ typedef struct RelExpr
NodeTag type;
char *relname; /* the relation name */
bool inh; /* inheritance query */
-} RelExpr;
+} RelExpr;
/*
* SortGroupBy - for order by clause
@@ -806,7 +809,7 @@ typedef struct SortGroupBy
char *range;
char *name; /* name of column to sort on */
char *useOp; /* operator to use */
-} SortGroupBy;
+} SortGroupBy;
/*
* RangeVar - range variable, used in from clauses
@@ -816,7 +819,7 @@ typedef struct RangeVar
NodeTag type;
RelExpr *relExpr; /* the relation expression */
char *name; /* the name to be referenced (optional) */
-} RangeVar;
+} RangeVar;
/*
* IndexElem - index parameters (used in create index)
@@ -828,7 +831,7 @@ typedef struct IndexElem
List *args; /* if not NULL, function index */
char *class;
TypeName *tname; /* type of index's keys (optional) */
-} IndexElem;
+} IndexElem;
/*
* DefElem -
@@ -839,7 +842,7 @@ typedef struct DefElem
NodeTag type;
char *defname;
Node *arg; /* a (Value *) or a (TypeName *) */
-} DefElem;
+} DefElem;
/****************************************************************************
@@ -859,7 +862,7 @@ typedef struct TargetEntry
Resdom *resdom; /* fjoin overload this to be a list?? */
Fjoin *fjoin;
Node *expr; /* can be a list too */
-} TargetEntry;
+} TargetEntry;
/*
* RangeTblEntry -
@@ -882,7 +885,7 @@ typedef struct RangeTblEntry
Oid relid;
bool inh; /* inheritance? */
bool inFromCl; /* comes from From Clause */
-} RangeTblEntry;
+} RangeTblEntry;
/*
* SortClause -
@@ -893,7 +896,7 @@ typedef struct SortClause
NodeTag type;
Resdom *resdom; /* attributes in tlist to be sorted */
Oid opoid; /* sort operators */
-} SortClause;
+} SortClause;
/*
* GroupClause -
@@ -904,6 +907,6 @@ typedef struct GroupClause
NodeTag type;
TargetEntry *entry; /* attributes to group on */
Oid grpOpoid; /* the sort operator to use */
-} GroupClause;
+} GroupClause;
#endif /* PARSENODES_H */