|
10 | 10 | *
|
11 | 11 | *
|
12 | 12 | * IDENTIFICATION
|
13 |
| - * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.95 1998/01/20 05:04:07 momjian Exp $ |
| 13 | + * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.96 1998/01/22 23:04:52 momjian Exp $ |
14 | 14 | *
|
15 | 15 | * HISTORY
|
16 | 16 | * AUTHOR DATE MAJOR EVENT
|
@@ -116,7 +116,7 @@ Oid param_type(int t); /* used in parse_expr.c */
|
116 | 116 | CopyStmt, CreateStmt, CreateAsStmt, CreateSeqStmt, DefineStmt, DestroyStmt,
|
117 | 117 | ExtendStmt, FetchStmt, GrantStmt, CreateTrigStmt, DropTrigStmt,
|
118 | 118 | CreatePLangStmt, DropPLangStmt,
|
119 |
| - IndexStmt, ListenStmt, OptimizableStmt, |
| 119 | + IndexStmt, ListenStmt, LockStmt, OptimizableStmt, |
120 | 120 | ProcedureStmt, RecipeStmt, RemoveAggrStmt, RemoveOperStmt,
|
121 | 121 | RemoveFuncStmt, RemoveStmt,
|
122 | 122 | RenameStmt, RevokeStmt, RuleStmt, TransactionStmt, ViewStmt, LoadStmt,
|
@@ -276,7 +276,7 @@ Oid param_type(int t); /* used in parse_expr.c */
|
276 | 276 | DATABASE, DELIMITERS, DO, EXPLAIN, EXTEND,
|
277 | 277 | FORWARD, FUNCTION, HANDLER,
|
278 | 278 | INDEX, INHERITS, INSTEAD, ISNULL,
|
279 |
| - LANCOMPILER, LISTEN, LOAD, LOCATION, MERGE, MOVE, |
| 279 | + LANCOMPILER, LISTEN, LOAD, LOCK_P, LOCATION, MERGE, MOVE, |
280 | 280 | NEW, NONE, NOTHING, NOTNULL, OIDS, OPERATOR, PROCEDURAL,
|
281 | 281 | RECIPE, RENAME, REPLACE, RESET, RETURNS, RULE,
|
282 | 282 | SEQUENCE, SETOF, SHOW, STDIN, STDOUT, TRUSTED,
|
@@ -364,6 +364,7 @@ stmt : AddAttrStmt
|
364 | 364 | | GrantStmt
|
365 | 365 | | IndexStmt
|
366 | 366 | | ListenStmt
|
| 367 | + | LockStmt |
367 | 368 | | ProcedureStmt
|
368 | 369 | | RecipeStmt
|
369 | 370 | | RemoveAggrStmt
|
@@ -2210,6 +2211,27 @@ DeleteStmt: DELETE FROM relation_name
|
2210 | 2211 | }
|
2211 | 2212 | ;
|
2212 | 2213 |
|
| 2214 | +/* |
| 2215 | + * Total hack to just lock a table inside a transaction. |
| 2216 | + * Is it worth making this a separate command, with |
| 2217 | + * its own node type and file. I don't think so. bjm 1998/1/22 |
| 2218 | + */ |
| 2219 | +LockStmt: LOCK_P relation_name |
| 2220 | + { |
| 2221 | + DeleteStmt *n = makeNode(DeleteStmt); |
| 2222 | + A_Const *c = makeNode(A_Const); |
| 2223 | + |
| 2224 | + c->val.type = T_String; |
| 2225 | + c->val.val.str = "f"; |
| 2226 | + c->typename = makeNode(TypeName); |
| 2227 | + c->typename->name = xlateSqlType("bool"); |
| 2228 | + |
| 2229 | + n->relname = $2; |
| 2230 | + n->whereClause = c; |
| 2231 | + $$ = (Node *)n; |
| 2232 | + } |
| 2233 | + ; |
| 2234 | + |
2213 | 2235 |
|
2214 | 2236 | /*****************************************************************************
|
2215 | 2237 | *
|
|
0 commit comments