mirror of
https://github.com/beard7n/bsdports.git
synced 2026-04-10 18:41:17 +02:00
156 lines
5.7 KiB
Diff
156 lines
5.7 KiB
Diff
0535b07c46bd8189ca71b762e0d70206567a194a
|
|
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
|
|
index 387b5d6..af3df77 100644
|
|
--- src/backend/parser/gram.y
|
|
+++ 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
|
|
--- src/backend/storage/lmgr/lock.c
|
|
+++ 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
|
|
--- src/include/parser/kwlist.h
|
|
+++ 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
|
|
--- src/include/storage/lock.h
|
|
+++ 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
|
|
--- src/include/storage/lockdefs.h
|
|
+++ 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
|
|
--- src/interfaces/ecpg/preproc/preproc.y
|
|
+++ 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");
|