From: Tom Lane Date: Mon, 2 Aug 2004 16:51:10 +0000 (+0000) Subject: While perusing SQL92 I realized that we are delivering the wrong SQLSTATE X-Git-Tag: REL8_0_0BETA1~88 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d5299891498df311a0f7b1584a9ba16be2a927c1;p=postgresql While perusing SQL92 I realized that we are delivering the wrong SQLSTATE error code for string-too-long errors. It should be STRING_DATA_RIGHT_TRUNCATION not STRING_DATA_LENGTH_MISMATCH. The latter probably should only be applied to cases where a string must be exactly so many bits --- there are no cases at all where it applies to character strings, only bit strings. --- diff --git a/src/backend/utils/adt/varbit.c b/src/backend/utils/adt/varbit.c index 7fd7727e42..496c25b699 100644 --- a/src/backend/utils/adt/varbit.c +++ b/src/backend/utils/adt/varbit.c @@ -9,7 +9,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/varbit.c,v 1.39 2004/06/16 01:26:47 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/varbit.c,v 1.40 2004/08/02 16:51:10 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -344,7 +344,7 @@ varbit_in(PG_FUNCTION_ARGS) atttypmod = bitlen; else if (bitlen > atttypmod) ereport(ERROR, - (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH), + (errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION), errmsg("bit string too long for type bit varying(%d)", atttypmod))); @@ -528,7 +528,7 @@ varbit(PG_FUNCTION_ARGS) if (!isExplicit) ereport(ERROR, - (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH), + (errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION), errmsg("bit string too long for type bit varying(%d)", len))); diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c index 6b26a91192..5bccdb8ce5 100644 --- a/src/backend/utils/adt/varchar.c +++ b/src/backend/utils/adt/varchar.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/varchar.c,v 1.104 2004/02/01 06:27:48 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/varchar.c,v 1.105 2004/08/02 16:51:10 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -101,7 +101,7 @@ bpcharin(PG_FUNCTION_ARGS) len = mbmaxlen; else ereport(ERROR, - (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH), + (errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION), errmsg("value too long for type character(%d)", (int) maxlen))); @@ -221,7 +221,7 @@ bpchar(PG_FUNCTION_ARGS) for (i = maxmblen - VARHDRSZ; i < len - VARHDRSZ; i++) if (*(VARDATA(source) + i) != ' ') ereport(ERROR, - (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH), + (errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION), errmsg("value too long for type character(%d)", maxlen - VARHDRSZ))); } @@ -379,7 +379,7 @@ varcharin(PG_FUNCTION_ARGS) len = mbmaxlen; else ereport(ERROR, - (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH), + (errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION), errmsg("value too long for type character varying(%d)", (int) maxlen))); } @@ -471,7 +471,7 @@ varchar(PG_FUNCTION_ARGS) for (i = maxmblen; i < len - VARHDRSZ; i++) if (*(VARDATA(source) + i) != ' ') ereport(ERROR, - (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH), + (errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION), errmsg("value too long for type character varying(%d)", maxlen - VARHDRSZ))); }