Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:EDV_Lotse
postgresql96
00003-applock.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 00003-applock.patch of Package postgresql96
0535b07c46bd8189ca71b762e0d70206567a194a diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 387b5d6..af3df77 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -563,7 +563,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); /* ordinary key words in alphabetical order */ %token <keyword> ABORT_P ABSOLUTE_P ACCESS ACTION ADD_P ADMIN AFTER - AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY ARRAY AS ASC + AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY APPLICATION ARRAY AS ASC ASSERTION ASSIGNMENT ASYMMETRIC AT ATTRIBUTE AUTHORIZATION BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT @@ -9801,6 +9801,8 @@ opt_lock: IN_P lock_type MODE { $$ = $2; } lock_type: ACCESS SHARE { $$ = AccessShareLock; } | ROW SHARE { $$ = RowShareLock; } | ROW EXCLUSIVE { $$ = RowExclusiveLock; } + | APPLICATION SHARE { $$ = ApplicationShareLock; } + | APPLICATION EXCLUSIVE { $$ = ApplicationExclusiveLock; } | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; } | SHARE { $$ = ShareLock; } | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; } @@ -13745,6 +13747,7 @@ unreserved_keyword: | ALSO | ALTER | ALWAYS + | APPLICATION | ASSERTION | ASSIGNMENT | AT diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c index dba3809..0489679 100644 --- a/src/backend/storage/lmgr/lock.c +++ b/src/backend/storage/lmgr/lock.c @@ -100,8 +100,12 @@ static const LOCKMASK LockConflicts[] = { LOCKBIT_ON(AccessShareLock) | LOCKBIT_ON(RowShareLock) | LOCKBIT_ON(RowExclusiveLock) | LOCKBIT_ON(ShareUpdateExclusiveLock) | LOCKBIT_ON(ShareLock) | LOCKBIT_ON(ShareRowExclusiveLock) | - LOCKBIT_ON(ExclusiveLock) | LOCKBIT_ON(AccessExclusiveLock) + LOCKBIT_ON(ExclusiveLock) | LOCKBIT_ON(AccessExclusiveLock), + /* ApplicationShareLock*/ + LOCKBIT_ON(ApplicationExclusiveLock), + /* ApplicationExclusiveLock*/ + LOCKBIT_ON(ApplicationExclusiveLock) | LOCKBIT_ON(ApplicationShareLock) }; /* Names of lock modes, for debug printouts */ @@ -115,7 +119,9 @@ static const char *const lock_mode_names[] = "ShareLock", "ShareRowExclusiveLock", "ExclusiveLock", - "AccessExclusiveLock" + "AccessExclusiveLock", + "ApplicationShareLock", + "ApplicationExclusiveLock" }; #ifndef LOCK_DEBUG @@ -123,7 +129,7 @@ static bool Dummy_trace = false; #endif static const LockMethodData default_lockmethod = { - AccessExclusiveLock, /* highest valid lock mode number */ + ApplicationExclusiveLock, /* highest valid lock mode number */ LockConflicts, lock_mode_names, #ifdef LOCK_DEBUG @@ -134,7 +140,7 @@ static const LockMethodData default_lockmethod = { }; static const LockMethodData user_lockmethod = { - AccessExclusiveLock, /* highest valid lock mode number */ + ApplicationExclusiveLock, /* highest valid lock mode number */ LockConflicts, lock_mode_names, #ifdef LOCK_DEBUG diff --git a/src/include/parser/kwlist.h b/src/include/parser/kwlist.h index 17ffef5..8366bba 100644 --- a/src/include/parser/kwlist.h +++ b/src/include/parser/kwlist.h @@ -42,6 +42,7 @@ PG_KEYWORD("analyse", ANALYSE, RESERVED_KEYWORD) /* British spelling */ PG_KEYWORD("analyze", ANALYZE, RESERVED_KEYWORD) PG_KEYWORD("and", AND, RESERVED_KEYWORD) PG_KEYWORD("any", ANY, RESERVED_KEYWORD) +PG_KEYWORD("application", APPLICATION, UNRESERVED_KEYWORD) PG_KEYWORD("array", ARRAY, RESERVED_KEYWORD) PG_KEYWORD("as", AS, RESERVED_KEYWORD) PG_KEYWORD("asc", ASC, RESERVED_KEYWORD) diff --git a/src/include/storage/lock.h b/src/include/storage/lock.h index efa75ec..df25212 100644 --- a/src/include/storage/lock.h +++ b/src/include/storage/lock.h @@ -83,7 +83,7 @@ typedef struct (vxid).localTransactionId = (proc).lxid) /* MAX_LOCKMODES cannot be larger than the # of bits in LOCKMASK */ -#define MAX_LOCKMODES 10 +#define MAX_LOCKMODES 12 #define LOCKBIT_ON(lockmode) (1 << (lockmode)) #define LOCKBIT_OFF(lockmode) (~(1 << (lockmode))) diff --git a/src/include/storage/lockdefs.h b/src/include/storage/lockdefs.h index dd7cb16..d707c5e 100644 --- a/src/include/storage/lockdefs.h +++ b/src/include/storage/lockdefs.h @@ -45,6 +45,8 @@ typedef int LOCKMODE; * UPDATE */ #define AccessExclusiveLock 8 /* ALTER TABLE, DROP TABLE, VACUUM * FULL, and unqualified LOCK TABLE */ +#define ApplicationShareLock 9 /* requested explicitly */ +#define ApplicationExclusiveLock 10 /* requested explicitly */ typedef struct xl_standby_lock { diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y index 13fa52d..6959c98 100644 --- a/src/interfaces/ecpg/preproc/preproc.y +++ b/src/interfaces/ecpg/preproc/preproc.y @@ -1391,7 +1391,7 @@ add_typedef(char *name, char *dimension, char *length, enum ECPGttype type_enum, %token ABORT_P ABSOLUTE_P ACCESS ACTION ADD_P ADMIN AFTER - AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY ARRAY AS ASC + AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY APPLICATION ARRAY AS ASC ASSERTION ASSIGNMENT ASYMMETRIC AT ATTRIBUTE AUTHORIZATION BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT @@ -8898,6 +8898,14 @@ RETURNING target_list ecpg_into { $$ = mm_strdup("row exclusive"); } +| APPLICATION SHARE + { + $$ = mm_strdup("application share"); +} +| APPLICATION EXCLUSIVE + { + $$ = mm_strdup("application exclusive"); +} | SHARE UPDATE EXCLUSIVE { $$ = mm_strdup("share update exclusive"); @@ -12316,6 +12324,10 @@ mmerror(PARSE_ERROR, ET_WARNING, "unsupported feature will be passed to server") { $$ = mm_strdup("always"); } +| APPLICATION + { + $$ = mm_strdup("application"); +} | ASSERTION { $$ = mm_strdup("assertion");
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor