Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit d529989

Browse files
committed
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.
1 parent 630bfcd commit d529989

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

src/backend/utils/adt/varbit.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* Portions Copyright (c) 1994, Regents of the University of California
1010
*
1111
* IDENTIFICATION
12-
* $PostgreSQL: pgsql/src/backend/utils/adt/varbit.c,v 1.39 2004/06/16 01:26:47 tgl Exp $
12+
* $PostgreSQL: pgsql/src/backend/utils/adt/varbit.c,v 1.40 2004/08/02 16:51:10 tgl Exp $
1313
*
1414
*-------------------------------------------------------------------------
1515
*/
@@ -344,7 +344,7 @@ varbit_in(PG_FUNCTION_ARGS)
344344
atttypmod = bitlen;
345345
else if (bitlen > atttypmod)
346346
ereport(ERROR,
347-
(errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
347+
(errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION),
348348
errmsg("bit string too long for type bit varying(%d)",
349349
atttypmod)));
350350

@@ -528,7 +528,7 @@ varbit(PG_FUNCTION_ARGS)
528528

529529
if (!isExplicit)
530530
ereport(ERROR,
531-
(errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
531+
(errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION),
532532
errmsg("bit string too long for type bit varying(%d)",
533533
len)));
534534

src/backend/utils/adt/varchar.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/utils/adt/varchar.c,v 1.104 2004/02/01 06:27:48 tgl Exp $
11+
* $PostgreSQL: pgsql/src/backend/utils/adt/varchar.c,v 1.105 2004/08/02 16:51:10 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -101,7 +101,7 @@ bpcharin(PG_FUNCTION_ARGS)
101101
len = mbmaxlen;
102102
else
103103
ereport(ERROR,
104-
(errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
104+
(errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION),
105105
errmsg("value too long for type character(%d)",
106106
(int) maxlen)));
107107

@@ -221,7 +221,7 @@ bpchar(PG_FUNCTION_ARGS)
221221
for (i = maxmblen - VARHDRSZ; i < len - VARHDRSZ; i++)
222222
if (*(VARDATA(source) + i) != ' ')
223223
ereport(ERROR,
224-
(errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
224+
(errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION),
225225
errmsg("value too long for type character(%d)",
226226
maxlen - VARHDRSZ)));
227227
}
@@ -379,7 +379,7 @@ varcharin(PG_FUNCTION_ARGS)
379379
len = mbmaxlen;
380380
else
381381
ereport(ERROR,
382-
(errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
382+
(errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION),
383383
errmsg("value too long for type character varying(%d)",
384384
(int) maxlen)));
385385
}
@@ -471,7 +471,7 @@ varchar(PG_FUNCTION_ARGS)
471471
for (i = maxmblen; i < len - VARHDRSZ; i++)
472472
if (*(VARDATA(source) + i) != ' ')
473473
ereport(ERROR,
474-
(errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
474+
(errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION),
475475
errmsg("value too long for type character varying(%d)",
476476
maxlen - VARHDRSZ)));
477477
}

0 commit comments

Comments
 (0)