-
+
CANT CHANGE RUNTIME PARAM
+|
+55P03
+LOCK NOT AVAILABLE
+
+
|
Class 57
if necessary for any conflicting locks to be released. If
NOWAIT is specified, LOCK
TABLE 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
remainder of the current transaction. (There is no UNLOCK
TABLE command; locks are always released at transaction
*
*
* 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
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
conditional_relation_open(Oid relationId, LOCKMODE lockmode, bool nowait)
{
if (nowait)
{
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
LockRelation(r, lockmode);
*
*
* 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
* AUTHOR DATE MAJOR EVENT
| NOCREATEUSER
| NOTHING
| NOTIFY
+ | NOWAIT
| OBJECT_P
| OF
| OIDS
| LOCALTIMESTAMP
| NEW
| NOT
- | NOWAIT
| NULL_P
| OFF
| OFFSET
*
* 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 $
*
*-------------------------------------------------------------------------
*/
#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_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) */
#define ERRCODE_OPERATOR_INTERVENTION MAKE_SQLSTATE('5','7', '0','0','0')
*
* 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 $
*
*-------------------------------------------------------------------------
*/
"cant_change_runtime_param", ERRCODE_CANT_CHANGE_RUNTIME_PARAM
},
+{
+ "lock_not_available", ERRCODE_LOCK_NOT_AVAILABLE
+},
+
{
"operator_intervention", ERRCODE_OPERATOR_INTERVENTION
},