1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-10 17:42:29 +03:00

Add SHARE UPDATE EXCLUSIVE lock mode, coming soon to a VACUUM near you.

Name chosen per pghackers discussion around 6/22/01.
This commit is contained in:
Tom Lane
2001-07-09 22:18:34 +00:00
parent 8902f49abb
commit 4fe42dfbc3
8 changed files with 143 additions and 80 deletions

View File

@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.233 2001/06/30 22:03:25 petere Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.234 2001/07/09 22:18:33 tgl Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -153,7 +153,7 @@ static void doNegateFloat(Value *v);
%type <list> createdb_opt_list, createdb_opt_item
%type <ival> opt_lock, lock_type
%type <boolean> opt_lmode, opt_force
%type <boolean> opt_force
%type <ival> user_createdb_clause, user_createuser_clause
%type <str> user_passwd_clause
@@ -3277,18 +3277,18 @@ LockStmt: LOCK_P opt_table relation_name opt_lock
}
;
opt_lock: IN lock_type MODE { $$ = $2; }
opt_lock: IN lock_type MODE { $$ = $2; }
| /*EMPTY*/ { $$ = AccessExclusiveLock; }
;
lock_type: SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; }
| ROW opt_lmode { $$ = ($2? RowShareLock: RowExclusiveLock); }
| ACCESS opt_lmode { $$ = ($2? AccessShareLock: AccessExclusiveLock); }
| opt_lmode { $$ = ($1? ShareLock: ExclusiveLock); }
;
opt_lmode: SHARE { $$ = TRUE; }
| EXCLUSIVE { $$ = FALSE; }
lock_type: ACCESS SHARE { $$ = AccessShareLock; }
| ROW SHARE { $$ = RowShareLock; }
| ROW EXCLUSIVE { $$ = RowExclusiveLock; }
| SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; }
| SHARE { $$ = ShareLock; }
| SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; }
| EXCLUSIVE { $$ = ExclusiveLock; }
| ACCESS EXCLUSIVE { $$ = AccessExclusiveLock; }
;