mirror of
https://github.com/postgres/postgres.git
synced 2025-06-14 18:42:34 +03:00
Code review for NOWAIT patch: downgrade NOWAIT from fully reserved keyword
to unreserved keyword, use ereport not elog, assign a separate error code for 'could not obtain lock' so that applications will be able to detect that case cleanly.
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/errcodes.sgml,v 1.8 2004/08/24 00:06:50 neilc Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/errcodes.sgml,v 1.9 2004/10/01 16:39:46 tgl Exp $ -->
|
||||||
|
|
||||||
<appendix id="errcodes-appendix">
|
<appendix id="errcodes-appendix">
|
||||||
<title><productname>PostgreSQL</productname> Error Codes</title>
|
<title><productname>PostgreSQL</productname> Error Codes</title>
|
||||||
@ -1099,6 +1099,11 @@
|
|||||||
<entry>CANT CHANGE RUNTIME PARAM</entry>
|
<entry>CANT CHANGE RUNTIME PARAM</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
|
<row>
|
||||||
|
<entry><literal>55P03</literal></entry>
|
||||||
|
<entry>LOCK NOT AVAILABLE</entry>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry>Class 57</entry>
|
<entry>Class 57</entry>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/lock.sgml,v 1.42 2004/03/12 00:52:23 neilc Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/lock.sgml,v 1.43 2004/10/01 16:39:47 tgl Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ where <replaceable class="PARAMETER">lockmode</replaceable> is one of:
|
|||||||
if necessary for any conflicting locks to be released. If
|
if necessary for any conflicting locks to be released. If
|
||||||
<literal>NOWAIT</literal> is specified, <command>LOCK
|
<literal>NOWAIT</literal> is specified, <command>LOCK
|
||||||
TABLE</command> does not wait to acquire the desired lock: if it
|
TABLE</command> does not wait to acquire the desired lock: if it
|
||||||
cannot be immediately acquired, the transaction is aborted and an
|
cannot be acquired immediately, the command is aborted and an
|
||||||
error is emitted. Once obtained, the lock is held for the
|
error is emitted. Once obtained, the lock is held for the
|
||||||
remainder of the current transaction. (There is no <command>UNLOCK
|
remainder of the current transaction. (There is no <command>UNLOCK
|
||||||
TABLE</command> command; locks are always released at transaction
|
TABLE</command> command; locks are always released at transaction
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.176 2004/09/17 18:09:55 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.177 2004/10/01 16:39:54 tgl Exp $
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* INTERFACE ROUTINES
|
* INTERFACE ROUTINES
|
||||||
@ -465,6 +465,13 @@ relation_open(Oid relationId, LOCKMODE lockmode)
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ----------------
|
||||||
|
* conditional_relation_open - open with option not to wait
|
||||||
|
*
|
||||||
|
* As above, but if nowait is true, then throw an error rather than
|
||||||
|
* waiting when the lock is not immediately obtainable.
|
||||||
|
* ----------------
|
||||||
|
*/
|
||||||
Relation
|
Relation
|
||||||
conditional_relation_open(Oid relationId, LOCKMODE lockmode, bool nowait)
|
conditional_relation_open(Oid relationId, LOCKMODE lockmode, bool nowait)
|
||||||
{
|
{
|
||||||
@ -483,7 +490,10 @@ conditional_relation_open(Oid relationId, LOCKMODE lockmode, bool nowait)
|
|||||||
if (nowait)
|
if (nowait)
|
||||||
{
|
{
|
||||||
if (!ConditionalLockRelation(r, lockmode))
|
if (!ConditionalLockRelation(r, lockmode))
|
||||||
elog(ERROR, "could not acquire relation lock");
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_LOCK_NOT_AVAILABLE),
|
||||||
|
errmsg("could not obtain lock on \"%s\"",
|
||||||
|
RelationGetRelationName(r))));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
LockRelation(r, lockmode);
|
LockRelation(r, lockmode);
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.477 2004/09/30 00:24:20 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.478 2004/10/01 16:39:59 tgl Exp $
|
||||||
*
|
*
|
||||||
* HISTORY
|
* HISTORY
|
||||||
* AUTHOR DATE MAJOR EVENT
|
* AUTHOR DATE MAJOR EVENT
|
||||||
@ -7727,6 +7727,7 @@ unreserved_keyword:
|
|||||||
| NOCREATEUSER
|
| NOCREATEUSER
|
||||||
| NOTHING
|
| NOTHING
|
||||||
| NOTIFY
|
| NOTIFY
|
||||||
|
| NOWAIT
|
||||||
| OBJECT_P
|
| OBJECT_P
|
||||||
| OF
|
| OF
|
||||||
| OIDS
|
| OIDS
|
||||||
@ -7944,7 +7945,6 @@ reserved_keyword:
|
|||||||
| LOCALTIMESTAMP
|
| LOCALTIMESTAMP
|
||||||
| NEW
|
| NEW
|
||||||
| NOT
|
| NOT
|
||||||
| NOWAIT
|
|
||||||
| NULL_P
|
| NULL_P
|
||||||
| OFF
|
| OFF
|
||||||
| OFFSET
|
| OFFSET
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2003, PostgreSQL Global Development Group
|
* Copyright (c) 2003, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/utils/errcodes.h,v 1.15 2004/08/29 05:06:58 momjian Exp $
|
* $PostgreSQL: pgsql/src/include/utils/errcodes.h,v 1.16 2004/10/01 16:40:04 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -308,6 +308,7 @@
|
|||||||
#define ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE MAKE_SQLSTATE('5','5', '0','0','0')
|
#define ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE MAKE_SQLSTATE('5','5', '0','0','0')
|
||||||
#define ERRCODE_OBJECT_IN_USE MAKE_SQLSTATE('5','5', '0','0','6')
|
#define ERRCODE_OBJECT_IN_USE MAKE_SQLSTATE('5','5', '0','0','6')
|
||||||
#define ERRCODE_CANT_CHANGE_RUNTIME_PARAM MAKE_SQLSTATE('5','5', 'P','0','2')
|
#define ERRCODE_CANT_CHANGE_RUNTIME_PARAM MAKE_SQLSTATE('5','5', 'P','0','2')
|
||||||
|
#define ERRCODE_LOCK_NOT_AVAILABLE MAKE_SQLSTATE('5','5', 'P','0','3')
|
||||||
|
|
||||||
/* Class 57 - Operator Intervention (class borrowed from DB2) */
|
/* Class 57 - Operator Intervention (class borrowed from DB2) */
|
||||||
#define ERRCODE_OPERATOR_INTERVENTION MAKE_SQLSTATE('5','7', '0','0','0')
|
#define ERRCODE_OPERATOR_INTERVENTION MAKE_SQLSTATE('5','7', '0','0','0')
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2003, PostgreSQL Global Development Group
|
* Copyright (c) 2003, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/pl/plpgsql/src/plerrcodes.h,v 1.4 2004/08/29 05:07:01 momjian Exp $
|
* $PostgreSQL: pgsql/src/pl/plpgsql/src/plerrcodes.h,v 1.5 2004/10/01 16:40:05 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -659,6 +659,10 @@
|
|||||||
"cant_change_runtime_param", ERRCODE_CANT_CHANGE_RUNTIME_PARAM
|
"cant_change_runtime_param", ERRCODE_CANT_CHANGE_RUNTIME_PARAM
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"lock_not_available", ERRCODE_LOCK_NOT_AVAILABLE
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"operator_intervention", ERRCODE_OPERATOR_INTERVENTION
|
"operator_intervention", ERRCODE_OPERATOR_INTERVENTION
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user