Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
3d15d133
Commit
3d15d133
authored
Jan 09, 1998
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove old quel labels.
parent
bf8af220
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
77 additions
and
75 deletions
+77
-75
src/backend/parser/analyze.c
src/backend/parser/analyze.c
+13
-13
src/backend/parser/gram.y
src/backend/parser/gram.y
+57
-55
src/include/nodes/parsenodes.h
src/include/nodes/parsenodes.h
+7
-7
No files found.
src/backend/parser/analyze.c
View file @
3d15d133
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.6
1 1998/01/05 03:32:12
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.6
2 1998/01/09 20:05:49
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -33,12 +33,12 @@
static
Query
*
transformStmt
(
ParseState
*
pstate
,
Node
*
stmt
);
static
Query
*
transformDeleteStmt
(
ParseState
*
pstate
,
DeleteStmt
*
stmt
);
static
Query
*
transformInsertStmt
(
ParseState
*
pstate
,
Append
Stmt
*
stmt
);
static
Query
*
transformInsertStmt
(
ParseState
*
pstate
,
Insert
Stmt
*
stmt
);
static
Query
*
transformIndexStmt
(
ParseState
*
pstate
,
IndexStmt
*
stmt
);
static
Query
*
transformExtendStmt
(
ParseState
*
pstate
,
ExtendStmt
*
stmt
);
static
Query
*
transformRuleStmt
(
ParseState
*
query
,
RuleStmt
*
stmt
);
static
Query
*
transformSelectStmt
(
ParseState
*
pstate
,
Retrieve
Stmt
*
stmt
);
static
Query
*
transformUpdateStmt
(
ParseState
*
pstate
,
Replac
eStmt
*
stmt
);
static
Query
*
transformSelectStmt
(
ParseState
*
pstate
,
Select
Stmt
*
stmt
);
static
Query
*
transformUpdateStmt
(
ParseState
*
pstate
,
Updat
eStmt
*
stmt
);
static
Query
*
transformCursorStmt
(
ParseState
*
pstate
,
CursorStmt
*
stmt
);
static
Query
*
transformCreateStmt
(
ParseState
*
pstate
,
CreateStmt
*
stmt
);
...
...
@@ -163,24 +163,24 @@ transformStmt(ParseState *pstate, Node *parseTree)
* Optimizable statements
*------------------------
*/
case
T_
Append
Stmt
:
result
=
transformInsertStmt
(
pstate
,
(
Append
Stmt
*
)
parseTree
);
case
T_
Insert
Stmt
:
result
=
transformInsertStmt
(
pstate
,
(
Insert
Stmt
*
)
parseTree
);
break
;
case
T_DeleteStmt
:
result
=
transformDeleteStmt
(
pstate
,
(
DeleteStmt
*
)
parseTree
);
break
;
case
T_
Replac
eStmt
:
result
=
transformUpdateStmt
(
pstate
,
(
Replac
eStmt
*
)
parseTree
);
case
T_
Updat
eStmt
:
result
=
transformUpdateStmt
(
pstate
,
(
Updat
eStmt
*
)
parseTree
);
break
;
case
T_CursorStmt
:
result
=
transformCursorStmt
(
pstate
,
(
CursorStmt
*
)
parseTree
);
break
;
case
T_
Retrieve
Stmt
:
result
=
transformSelectStmt
(
pstate
,
(
Retrieve
Stmt
*
)
parseTree
);
case
T_
Select
Stmt
:
result
=
transformSelectStmt
(
pstate
,
(
Select
Stmt
*
)
parseTree
);
break
;
default:
...
...
@@ -231,7 +231,7 @@ transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt)
* transform an Insert Statement
*/
static
Query
*
transformInsertStmt
(
ParseState
*
pstate
,
Append
Stmt
*
stmt
)
transformInsertStmt
(
ParseState
*
pstate
,
Insert
Stmt
*
stmt
)
{
Query
*
qry
=
makeNode
(
Query
);
/* make a new query tree */
List
*
icolumns
;
...
...
@@ -800,7 +800,7 @@ transformRuleStmt(ParseState *pstate, RuleStmt *stmt)
*
*/
static
Query
*
transformSelectStmt
(
ParseState
*
pstate
,
Retrieve
Stmt
*
stmt
)
transformSelectStmt
(
ParseState
*
pstate
,
Select
Stmt
*
stmt
)
{
Query
*
qry
=
makeNode
(
Query
);
...
...
@@ -851,7 +851,7 @@ transformSelectStmt(ParseState *pstate, RetrieveStmt *stmt)
*
*/
static
Query
*
transformUpdateStmt
(
ParseState
*
pstate
,
Replac
eStmt
*
stmt
)
transformUpdateStmt
(
ParseState
*
pstate
,
Updat
eStmt
*
stmt
)
{
Query
*
qry
=
makeNode
(
Query
);
...
...
src/backend/parser/gram.y
View file @
3d15d133
...
...
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.8
5 1998/01/05 16:39:16
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.8
6 1998/01/09 20:05:52
momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
...
...
@@ -108,7 +108,7 @@ Oid param_type(int t); /* used in parse_expr.c */
VersionStmt *vstmt;
DefineStmt *dstmt;
RuleStmt *rstmt;
Append
Stmt *astmt;
Insert
Stmt *astmt;
}
%type <node> stmt,
...
...
@@ -121,7 +121,7 @@ Oid param_type(int t); /* used in parse_expr.c */
RemoveFuncStmt, RemoveStmt,
RenameStmt, RevokeStmt, RuleStmt, TransactionStmt, ViewStmt, LoadStmt,
CreatedbStmt, DestroydbStmt, VacuumStmt, CursorStmt, SubSelect,
ReplaceStmt, AppendStmt, Retrieve
Stmt, NotifyStmt, DeleteStmt, ClusterStmt,
UpdateStmt, InsertStmt, Select
Stmt, NotifyStmt, DeleteStmt, ClusterStmt,
ExplainStmt, VariableSetStmt, VariableShowStmt, VariableResetStmt,
CreateUserStmt, AlterUserStmt, DropUserStmt
...
...
@@ -590,17 +590,17 @@ alter_clause: ADD opt_column columnDef
Node *lp = lfirst($3);
if (length($3) != 1)
elog(ERROR,"ALTER TABLE/ADD() allows one column only"
,NULL
);
elog(ERROR,"ALTER TABLE/ADD() allows one column only");
$$ = lp;
}
| DROP opt_column ColId
{ elog(ERROR,"ALTER TABLE/DROP COLUMN not yet implemented"
,NULL
); }
{ elog(ERROR,"ALTER TABLE/DROP COLUMN not yet implemented"); }
| ALTER opt_column ColId SET DEFAULT default_expr
{ elog(ERROR,"ALTER TABLE/ALTER COLUMN/SET DEFAULT not yet implemented"
,NULL
); }
{ elog(ERROR,"ALTER TABLE/ALTER COLUMN/SET DEFAULT not yet implemented"); }
| ALTER opt_column ColId DROP DEFAULT
{ elog(ERROR,"ALTER TABLE/ALTER COLUMN/DROP DEFAULT not yet implemented"
,NULL
); }
{ elog(ERROR,"ALTER TABLE/ALTER COLUMN/DROP DEFAULT not yet implemented"); }
| ADD ConstraintElem
{ elog(ERROR,"ALTER TABLE/ADD CONSTRAINT not yet implemented"
,NULL
); }
{ elog(ERROR,"ALTER TABLE/ADD CONSTRAINT not yet implemented"); }
;
...
...
@@ -780,7 +780,7 @@ ColConstraintElem: CHECK '(' constraint_expr ')'
}
| REFERENCES ColId opt_column_list key_match key_actions
{
elog(NOTICE,"CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented"
,NULL
);
elog(NOTICE,"CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented");
$$ = NULL;
}
;
...
...
@@ -811,11 +811,11 @@ default_expr: AexprConst
| default_expr '*' default_expr
{ $$ = nconc( $1, lcons( makeString( "*"), $3)); }
| default_expr '=' default_expr
{ elog(ERROR,"boolean expressions not supported in DEFAULT"
,NULL
); }
{ elog(ERROR,"boolean expressions not supported in DEFAULT"); }
| default_expr '<' default_expr
{ elog(ERROR,"boolean expressions not supported in DEFAULT"
,NULL
); }
{ elog(ERROR,"boolean expressions not supported in DEFAULT"); }
| default_expr '>' default_expr
{ elog(ERROR,"boolean expressions not supported in DEFAULT"
,NULL
); }
{ elog(ERROR,"boolean expressions not supported in DEFAULT"); }
| ':' default_expr
{ $$ = lcons( makeString( ":"), $2); }
| ';' default_expr
...
...
@@ -848,7 +848,7 @@ default_expr: AexprConst
| default_expr Op default_expr
{
if (!strcmp("<=", $2) || !strcmp(">=", $2))
elog(ERROR,"boolean expressions not supported in DEFAULT"
,NULL
);
elog(ERROR,"boolean expressions not supported in DEFAULT");
$$ = nconc( $1, lcons( makeString( $2), $3));
}
| Op default_expr
...
...
@@ -919,7 +919,7 @@ ConstraintElem: CHECK '(' constraint_expr ')'
$$ = (Node *)n;
}
| FOREIGN KEY '(' columnList ')' REFERENCES ColId opt_column_list key_match key_actions
{ elog(NOTICE,"CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented"
,NULL
); }
{ elog(NOTICE,"CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented"); }
;
constraint_list: constraint_list ',' constraint_expr
...
...
@@ -1050,7 +1050,7 @@ OptArchiveType: ARCHIVE '=' NONE { }
CreateAsStmt: CREATE TABLE relation_name OptCreateAs AS SubSelect
{
RetrieveStmt *n = (Retrieve
Stmt *)$6;
SelectStmt *n = (Select
Stmt *)$6;
if ($4 != NIL)
mapTargetColumns($4, n->targetList);
n->into = $3;
...
...
@@ -1379,7 +1379,7 @@ opt_direction: FORWARD { $$ = FORWARD; }
fetch_how_many: Iconst
{ $$ = $1;
if ($1 <= 0) elog(ERROR,"Please specify nonnegative count for fetch"
,NULL
); }
if ($1 <= 0) elog(ERROR,"Please specify nonnegative count for fetch"); }
| ALL { $$ = 0; /* 0 means fetch all tuples*/ }
| /*EMPTY*/ { $$ = 1; /*default*/ }
;
...
...
@@ -1597,7 +1597,7 @@ RecipeStmt: EXECUTE RECIPE recipe_name
{
RecipeStmt *n;
if (!IsTransactionBlock())
elog(ERROR,"EXECUTE RECIPE may only be used in begin/end transaction blocks"
,NULL
);
elog(ERROR,"EXECUTE RECIPE may only be used in begin/end transaction blocks");
n = makeNode(RecipeStmt);
n->recipeName = $3;
...
...
@@ -1725,7 +1725,7 @@ MathOp: '+' { $$ = "+"; }
oper_argtypes: name
{
elog(ERROR,"parser: argument type missing (use NONE for unary operators)"
,NULL
);
elog(ERROR,"parser: argument type missing (use NONE for unary operators)");
}
| name ',' name
{ $$ = makeList(makeString($1), makeString($3), -1); }
...
...
@@ -1955,11 +1955,13 @@ TransactionStmt: ABORT_TRANS TRANSACTION
*
*****************************************************************************/
ViewStmt: CREATE VIEW name AS
Retrieve
Stmt
ViewStmt: CREATE VIEW name AS
Select
Stmt
{
ViewStmt *n = makeNode(ViewStmt);
n->viewname = $3;
n->query = (Query *)$5;
if (n->query->unionClause != NULL)
elog(ERROR,"Views on unions not implemented.");
$$ = (Node *)n;
}
;
...
...
@@ -2063,7 +2065,7 @@ VacuumStmt: VACUUM opt_verbose opt_analyze
n->vacrel = $4;
n->va_spec = $5;
if ( $5 != NIL && !$4 )
elog(ERROR,"parser: syntax error at or near \"(\""
,NULL
);
elog(ERROR,"parser: syntax error at or near \"(\"");
$$ = (Node *)n;
}
;
...
...
@@ -2117,10 +2119,10 @@ ExplainStmt: EXPLAIN opt_verbose OptimizableStmt
* *
*****************************************************************************/
OptimizableStmt:
Retrieve
Stmt
OptimizableStmt:
Select
Stmt
| CursorStmt
|
Replac
eStmt
|
Append
Stmt
|
Updat
eStmt
|
Insert
Stmt
| NotifyStmt
| DeleteStmt /* by default all are $$=$1 */
;
...
...
@@ -2133,7 +2135,7 @@ OptimizableStmt: RetrieveStmt
*
*****************************************************************************/
Append
Stmt: INSERT INTO relation_name opt_column_list insert_rest
Insert
Stmt: INSERT INTO relation_name opt_column_list insert_rest
{
$5->relname = $3;
$5->cols = $4;
...
...
@@ -2143,14 +2145,14 @@ AppendStmt: INSERT INTO relation_name opt_column_list insert_rest
insert_rest: VALUES '(' res_target_list2 ')'
{
$$ = makeNode(
Append
Stmt);
$$ = makeNode(
Insert
Stmt);
$$->targetList = $3;
$$->fromClause = NIL;
$$->whereClause = NULL;
}
| SELECT res_target_list2 from_clause where_clause
{
$$ = makeNode(
Append
Stmt);
$$ = makeNode(
Insert
Stmt);
$$->targetList = $2;
$$->fromClause = $3;
$$->whereClause = $4;
...
...
@@ -2199,16 +2201,16 @@ DeleteStmt: DELETE FROM relation_name
/*****************************************************************************
*
* QUERY:
*
Replac
eStmt (UPDATE)
*
Updat
eStmt (UPDATE)
*
*****************************************************************************/
Replac
eStmt: UPDATE relation_name
Updat
eStmt: UPDATE relation_name
SET res_target_list
from_clause
where_clause
{
ReplaceStmt *n = makeNode(Replac
eStmt);
UpdateStmt *n = makeNode(Updat
eStmt);
n->relname = $2;
n->targetList = $4;
n->fromClause = $5;
...
...
@@ -2240,7 +2242,7 @@ CursorStmt: DECLARE name opt_binary CURSOR FOR
* -- mao
*/
if (!IsTransactionBlock())
elog(ERROR,"Named portals may only be used in begin/end transaction blocks"
,NULL
);
elog(ERROR,"Named portals may only be used in begin/end transaction blocks");
n->portalname = $2;
n->binary = $3;
...
...
@@ -2262,12 +2264,12 @@ CursorStmt: DECLARE name opt_binary CURSOR FOR
*
*****************************************************************************/
Retrieve
Stmt: SELECT opt_unique res_target_list2
Select
Stmt: SELECT opt_unique res_target_list2
result from_clause where_clause
group_clause having_clause
union_clause sort_clause
{
RetrieveStmt *n = makeNode(Retrieve
Stmt);
SelectStmt *n = makeNode(Select
Stmt);
n->unique = $2;
n->targetList = $3;
n->into = $4;
...
...
@@ -2283,7 +2285,7 @@ RetrieveStmt: SELECT opt_unique res_target_list2
union_clause: UNION opt_union select_list
{
RetrieveStmt *n = (Retrieve
Stmt *)lfirst($3);
SelectStmt *n = (Select
Stmt *)lfirst($3);
n->unionall = $2;
$$ = $3;
}
...
...
@@ -2293,7 +2295,7 @@ union_clause: UNION opt_union select_list
select_list: select_list UNION opt_union SubSelect
{
RetrieveStmt *n = (Retrieve
Stmt *)$4;
SelectStmt *n = (Select
Stmt *)$4;
n->unionall = $3;
$$ = lappend($1, $4);
}
...
...
@@ -2305,7 +2307,7 @@ SubSelect: SELECT opt_unique res_target_list2
from_clause where_clause
group_clause having_clause
{
RetrieveStmt *n = makeNode(Retrieve
Stmt);
SelectStmt *n = makeNode(Select
Stmt);
n->unique = $2;
n->unionall = FALSE;
n->targetList = $3;
...
...
@@ -2444,7 +2446,7 @@ having_clause: HAVING a_expr { $$ = $2; }
from_clause: FROM '(' relation_expr join_expr JOIN relation_expr join_spec ')'
{
$$ = NIL;
elog(ERROR,"JOIN not yet implemented"
,NULL
);
elog(ERROR,"JOIN not yet implemented");
}
| FROM from_list { $$ = $2; }
| /*EMPTY*/ { $$ = NIL; }
...
...
@@ -2453,7 +2455,7 @@ from_clause: FROM '(' relation_expr join_expr JOIN relation_expr join_spec ')'
from_list: from_list ',' from_val
{ $$ = lappend($1, $3); }
| from_val CROSS JOIN from_val
{ elog(ERROR,"CROSS JOIN not yet implemented"
,NULL
); }
{ elog(ERROR,"CROSS JOIN not yet implemented"); }
| from_val
{ $$ = lcons($1, NIL); }
;
...
...
@@ -2480,19 +2482,19 @@ from_val: relation_expr AS ColLabel
join_expr: NATURAL join_expr { $$ = NULL; }
| FULL join_outer
{ elog(ERROR,"FULL OUTER JOIN not yet implemented"
,NULL
); }
{ elog(ERROR,"FULL OUTER JOIN not yet implemented"); }
| LEFT join_outer
{ elog(ERROR,"LEFT OUTER JOIN not yet implemented"
,NULL
); }
{ elog(ERROR,"LEFT OUTER JOIN not yet implemented"); }
| RIGHT join_outer
{ elog(ERROR,"RIGHT OUTER JOIN not yet implemented"
,NULL
); }
{ elog(ERROR,"RIGHT OUTER JOIN not yet implemented"); }
| OUTER_P
{ elog(ERROR,"OUTER JOIN not yet implemented"
,NULL
); }
{ elog(ERROR,"OUTER JOIN not yet implemented"); }
| INNER_P
{ elog(ERROR,"INNER JOIN not yet implemented"
,NULL
); }
{ elog(ERROR,"INNER JOIN not yet implemented"); }
| UNION
{ elog(ERROR,"UNION JOIN not yet implemented"
,NULL
); }
{ elog(ERROR,"UNION JOIN not yet implemented"); }
| /*EMPTY*/
{ elog(ERROR,"INNER JOIN not yet implemented"
,NULL
); }
{ elog(ERROR,"INNER JOIN not yet implemented"); }
;
join_outer: OUTER_P { $$ = NULL; }
...
...
@@ -2653,13 +2655,13 @@ Numeric: FLOAT opt_float
opt_float: '(' Iconst ')'
{
if ($2 < 1)
elog(ERROR,"precision for FLOAT must be at least 1"
,NULL
);
elog(ERROR,"precision for FLOAT must be at least 1");
else if ($2 < 7)
$$ = xlateSqlType("float4");
else if ($2 < 16)
$$ = xlateSqlType("float8");
else
elog(ERROR,"precision for FLOAT must be less than 16"
,NULL
);
elog(ERROR,"precision for FLOAT must be less than 16");
}
| /*EMPTY*/
{
...
...
@@ -3098,7 +3100,7 @@ a_expr: attr opt_indirection
*/
| EXISTS '(' SubSelect ')'
{
elog(ERROR,"EXISTS not yet implemented"
,NULL
);
elog(ERROR,"EXISTS not yet implemented");
$$ = $3;
}
| EXTRACT '(' extract_list ')'
...
...
@@ -3428,7 +3430,7 @@ trim_list: a_expr FROM expr_list
in_expr: SubSelect
{
elog(ERROR,"IN (SUBSELECT) not yet implemented"
,NULL
);
elog(ERROR,"IN (SUBSELECT) not yet implemented");
$$ = $1;
}
| in_expr_nodes
...
...
@@ -3445,7 +3447,7 @@ in_expr_nodes: AexprConst
not_in_expr: SubSelect
{
elog(ERROR,"NOT IN (SUBSELECT) not yet implemented"
,NULL
);
elog(ERROR,"NOT IN (SUBSELECT) not yet implemented");
$$ = $1;
}
| not_in_expr_nodes
...
...
@@ -3765,14 +3767,14 @@ SpecialRuleRelation: CURRENT
if (QueryIsRule)
$$ = "*CURRENT*";
else
elog(ERROR,"CURRENT used in non-rule query"
,NULL
);
elog(ERROR,"CURRENT used in non-rule query");
}
| NEW
{
if (QueryIsRule)
$$ = "*NEW*";
else
elog(ERROR,"NEW used in non-rule query"
,NULL
);
elog(ERROR,"NEW used in non-rule query");
}
;
...
...
@@ -3800,7 +3802,7 @@ makeRowExpr(char *opr, List *largs, List *rargs)
Node *larg, *rarg;
if (length(largs) != length(rargs))
elog(ERROR,"Unequal number of entries in row expression"
,NULL
);
elog(ERROR,"Unequal number of entries in row expression");
if (lnext(largs) != NIL)
expr = makeRowExpr(opr,lnext(largs),lnext(rargs));
...
...
@@ -3858,7 +3860,7 @@ mapTargetColumns(List *src, List *dst)
ResTarget *d;
if (length(src) != length(dst))
elog(ERROR,"CREATE TABLE/AS SELECT has mismatched column count"
,NULL
);
elog(ERROR,"CREATE TABLE/AS SELECT has mismatched column count");
while ((src != NIL) && (dst != NIL))
{
...
...
@@ -4069,7 +4071,7 @@ makeConstantList( A_Const *n)
{
char *defval = NULL;
if (nodeTag(n) != T_A_Const) {
elog(ERROR,"Cannot handle non-constant parameter"
,NULL
);
elog(ERROR,"Cannot handle non-constant parameter");
} else if (n->val.type == T_Float) {
defval = (char*) palloc(20+1);
...
...
@@ -4086,7 +4088,7 @@ makeConstantList( A_Const *n)
strcat( defval, "'");
} else {
elog(ERROR,"Internal error in makeConstantList(): cannot encode node"
,NULL
);
elog(ERROR,"Internal error in makeConstantList(): cannot encode node");
};
#ifdef PARSEDEBUG
...
...
src/include/nodes/parsenodes.h
View file @
3d15d133
...
...
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: parsenodes.h,v 1.4
0 1997/12/27 06:41:39
momjian Exp $
* $Id: parsenodes.h,v 1.4
1 1998/01/09 20:06:08
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -570,7 +570,7 @@ typedef struct VariableResetStmt
* Insert Statement
* ----------------------
*/
typedef
struct
Append
Stmt
typedef
struct
Insert
Stmt
{
NodeTag
type
;
char
*
relname
;
/* relation to insert into */
...
...
@@ -578,7 +578,7 @@ typedef struct AppendStmt
List
*
targetList
;
/* the target list (of ResTarget) */
List
*
fromClause
;
/* the from clause */
Node
*
whereClause
;
/* qualifications */
}
Append
Stmt
;
}
Insert
Stmt
;
/* ----------------------
* Delete Statement
...
...
@@ -595,14 +595,14 @@ typedef struct DeleteStmt
* Update Statement
* ----------------------
*/
typedef
struct
Replac
eStmt
typedef
struct
Updat
eStmt
{
NodeTag
type
;
char
*
relname
;
/* relation to update */
List
*
targetList
;
/* the target list (of ResTarget) */
Node
*
whereClause
;
/* qualifications */
List
*
fromClause
;
/* the from clause */
}
Replac
eStmt
;
}
Updat
eStmt
;
/* ----------------------
* Create Cursor Statement
...
...
@@ -625,7 +625,7 @@ typedef struct CursorStmt
* Select Statement
* ----------------------
*/
typedef
struct
Retrieve
Stmt
typedef
struct
Select
Stmt
{
NodeTag
type
;
char
*
unique
;
/* NULL, '*', or unique attribute name */
...
...
@@ -638,7 +638,7 @@ typedef struct RetrieveStmt
List
*
unionClause
;
/* union subselect parameters */
List
*
sortClause
;
/* sort clause (a list of SortGroupBy's) */
bool
unionall
;
/* union without unique sort */
}
Retrieve
Stmt
;
}
Select
Stmt
;
/****************************************************************************
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment