From 12f87b2c827672152508679e1fca37af64999a0b Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Wed, 4 Mar 2009 10:55:00 +0000 Subject: [PATCH] Add new SQL:2008 error codes for invalid LIMIT and OFFSET values. Remove unused nonstandard error code that was perhaps intended for this but never used. --- doc/src/sgml/errcodes.sgml | 20 +++++++++++++------- src/backend/executor/nodeLimit.c | 6 +++--- src/include/utils/errcodes.h | 5 +++-- src/pl/plpgsql/src/plerrcodes.h | 12 ++++++++---- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/doc/src/sgml/errcodes.sgml b/doc/src/sgml/errcodes.sgml index e792a74e28..e5597f2004 100644 --- a/doc/src/sgml/errcodes.sgml +++ b/doc/src/sgml/errcodes.sgml @@ -1,4 +1,4 @@ - + <productname>PostgreSQL</productname> Error Codes @@ -445,12 +445,6 @@ -22020 -INVALID LIMIT VALUE -invalid_limit_value - - - 22023 INVALID PARAMETER VALUE invalid_parameter_value @@ -463,6 +457,18 @@ +2201W +INVALID ROW COUNT IN LIMIT CLAUSE +invalid_row_count_in_limit_clause + + + +2201X +INVALID ROW COUNT IN RESULT OFFSET CLAUSE +invalid_row_count_in_result_offset_clause + + + 22009 INVALID TIME ZONE DISPLACEMENT VALUE invalid_time_zone_displacement_value diff --git a/src/backend/executor/nodeLimit.c b/src/backend/executor/nodeLimit.c index 9f17094d2e..c6e889721c 100644 --- a/src/backend/executor/nodeLimit.c +++ b/src/backend/executor/nodeLimit.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeLimit.c,v 1.35 2009/01/01 17:23:41 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeLimit.c,v 1.36 2009/03/04 10:55:00 petere Exp $ * *------------------------------------------------------------------------- */ @@ -247,7 +247,7 @@ recompute_limits(LimitState *node) node->offset = DatumGetInt64(val); if (node->offset < 0) ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + (errcode(ERRCODE_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE), errmsg("OFFSET must not be negative"))); } } @@ -274,7 +274,7 @@ recompute_limits(LimitState *node) node->count = DatumGetInt64(val); if (node->count < 0) ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + (errcode(ERRCODE_INVALID_ROW_COUNT_IN_LIMIT_CLAUSE), errmsg("LIMIT must not be negative"))); node->noCount = false; } diff --git a/src/include/utils/errcodes.h b/src/include/utils/errcodes.h index 4c758bdb02..6524b8c5fe 100644 --- a/src/include/utils/errcodes.h +++ b/src/include/utils/errcodes.h @@ -11,7 +11,7 @@ * * Copyright (c) 2003-2009, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/include/utils/errcodes.h,v 1.28 2009/01/01 17:24:02 momjian Exp $ + * $PostgreSQL: pgsql/src/include/utils/errcodes.h,v 1.29 2009/03/04 10:55:00 petere Exp $ * *------------------------------------------------------------------------- */ @@ -133,9 +133,10 @@ #define ERRCODE_INVALID_ESCAPE_SEQUENCE MAKE_SQLSTATE('2','2', '0','2','5') #define ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER MAKE_SQLSTATE('2','2', 'P','0','6') #define ERRCODE_INVALID_INDICATOR_PARAMETER_VALUE MAKE_SQLSTATE('2','2', '0','1','0') -#define ERRCODE_INVALID_LIMIT_VALUE MAKE_SQLSTATE('2','2', '0','2','0') #define ERRCODE_INVALID_PARAMETER_VALUE MAKE_SQLSTATE('2','2', '0','2','3') #define ERRCODE_INVALID_REGULAR_EXPRESSION MAKE_SQLSTATE('2','2', '0','1','B') +#define ERRCODE_INVALID_ROW_COUNT_IN_LIMIT_CLAUSE MAKE_SQLSTATE('2', '2', '0', '1', 'W') +#define ERRCODE_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE MAKE_SQLSTATE('2', '2', '0', '1', 'X') #define ERRCODE_INVALID_TIME_ZONE_DISPLACEMENT_VALUE MAKE_SQLSTATE('2','2', '0','0','9') #define ERRCODE_INVALID_USE_OF_ESCAPE_CHARACTER MAKE_SQLSTATE('2','2', '0','0','C') #define ERRCODE_MOST_SPECIFIC_TYPE_MISMATCH MAKE_SQLSTATE('2','2', '0','0','G') diff --git a/src/pl/plpgsql/src/plerrcodes.h b/src/pl/plpgsql/src/plerrcodes.h index a54666556a..a2de61d03e 100644 --- a/src/pl/plpgsql/src/plerrcodes.h +++ b/src/pl/plpgsql/src/plerrcodes.h @@ -9,7 +9,7 @@ * * Copyright (c) 2003-2009, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/pl/plpgsql/src/plerrcodes.h,v 1.17 2009/01/01 17:24:04 momjian Exp $ + * $PostgreSQL: pgsql/src/pl/plpgsql/src/plerrcodes.h,v 1.18 2009/03/04 10:55:00 petere Exp $ * *------------------------------------------------------------------------- */ @@ -176,15 +176,19 @@ }, { - "invalid_limit_value", ERRCODE_INVALID_LIMIT_VALUE + "invalid_parameter_value", ERRCODE_INVALID_PARAMETER_VALUE }, { - "invalid_parameter_value", ERRCODE_INVALID_PARAMETER_VALUE + "invalid_regular_expression", ERRCODE_INVALID_REGULAR_EXPRESSION }, { - "invalid_regular_expression", ERRCODE_INVALID_REGULAR_EXPRESSION + "invalid_row_count_in_limit_clause", ERRCODE_INVALID_ROW_COUNT_IN_LIMIT_CLAUSE +}, + +{ + "invalid_row_count_in_result_offset_clause", ERRCODE_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE }, { -- 2.11.0