diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/access/heap/heapam.c | 14 | ||||
-rw-r--r-- | src/backend/parser/gram.y | 4 | ||||
-rw-r--r-- | src/include/utils/errcodes.h | 3 | ||||
-rw-r--r-- | src/pl/plpgsql/src/plerrcodes.h | 6 |
4 files changed, 21 insertions, 6 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index b8d38cc86ba..a5426d089a9 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -8,7 +8,7 @@ * * * 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 @@ -465,6 +465,13 @@ relation_open(Oid relationId, LOCKMODE lockmode) 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) { @@ -483,7 +490,10 @@ 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); diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 8f1b393d29a..5a12bf11891 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -11,7 +11,7 @@ * * * 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 @@ -7727,6 +7727,7 @@ unreserved_keyword: | NOCREATEUSER | NOTHING | NOTIFY + | NOWAIT | OBJECT_P | OF | OIDS @@ -7944,7 +7945,6 @@ reserved_keyword: | LOCALTIMESTAMP | NEW | NOT - | NOWAIT | NULL_P | OFF | OFFSET diff --git a/src/include/utils/errcodes.h b/src/include/utils/errcodes.h index 5ef9461f444..a43f6991da7 100644 --- a/src/include/utils/errcodes.h +++ b/src/include/utils/errcodes.h @@ -11,7 +11,7 @@ * * 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_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') diff --git a/src/pl/plpgsql/src/plerrcodes.h b/src/pl/plpgsql/src/plerrcodes.h index 5ad86ed07ed..d5893c6ed6d 100644 --- a/src/pl/plpgsql/src/plerrcodes.h +++ b/src/pl/plpgsql/src/plerrcodes.h @@ -9,7 +9,7 @@ * * 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 $ * *------------------------------------------------------------------------- */ @@ -660,6 +660,10 @@ }, { + "lock_not_available", ERRCODE_LOCK_NOT_AVAILABLE +}, + +{ "operator_intervention", ERRCODE_OPERATOR_INTERVENTION }, |