The SQL standard defines a separate error code for nextval exhausting
the sequence space.  I haven't found any discussion of this in the
archives, so it seems this was just not considered or not yet in
existence when the error codes were introduced.  Here is a patch to
correct it.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
>From db87587803458c6ade81819441321e8761d5ef7a Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pete...@gmx.net>
Date: Tue, 28 Feb 2017 15:14:14 -0500
Subject: [PATCH] Use SQL standard error code for nextval

---
 src/backend/commands/sequence.c | 4 ++--
 src/backend/utils/errcodes.txt  | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
index e0df642254..5820fee5a3 100644
--- a/src/backend/commands/sequence.c
+++ b/src/backend/commands/sequence.c
@@ -694,7 +694,7 @@ nextval_internal(Oid relid)
 
 					snprintf(buf, sizeof(buf), INT64_FORMAT, maxv);
 					ereport(ERROR,
-						  (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+						  (errcode(ERRCODE_SEQUENCE_GENERATOR_LIMIT_EXCEEDED),
 						   errmsg("nextval: reached maximum value of sequence \"%s\" (%s)",
 								  RelationGetRelationName(seqrel), buf)));
 				}
@@ -717,7 +717,7 @@ nextval_internal(Oid relid)
 
 					snprintf(buf, sizeof(buf), INT64_FORMAT, minv);
 					ereport(ERROR,
-						  (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+						  (errcode(ERRCODE_SEQUENCE_GENERATOR_LIMIT_EXCEEDED),
 						   errmsg("nextval: reached minimum value of sequence \"%s\" (%s)",
 								  RelationGetRelationName(seqrel), buf)));
 				}
diff --git a/src/backend/utils/errcodes.txt b/src/backend/utils/errcodes.txt
index 46aadd76f7..b6e0e987a8 100644
--- a/src/backend/utils/errcodes.txt
+++ b/src/backend/utils/errcodes.txt
@@ -188,6 +188,7 @@ Section: Class 22 - Data Exception
 22004    E    ERRCODE_NULL_VALUE_NOT_ALLOWED                                 null_value_not_allowed
 22002    E    ERRCODE_NULL_VALUE_NO_INDICATOR_PARAMETER                      null_value_no_indicator_parameter
 22003    E    ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE                             numeric_value_out_of_range
+2200H    E    ERRCODE_SEQUENCE_GENERATOR_LIMIT_EXCEEDED                      sequence_generator_limit_exceeded
 22026    E    ERRCODE_STRING_DATA_LENGTH_MISMATCH                            string_data_length_mismatch
 22001    E    ERRCODE_STRING_DATA_RIGHT_TRUNCATION                           string_data_right_truncation
 22011    E    ERRCODE_SUBSTRING_ERROR                                        substring_error
-- 
2.12.0

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to