mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-01 22:21:25 +02:00
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.
This commit is contained in:
parent
630bfcd10c
commit
d529989149
@ -9,7 +9,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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;
|
atttypmod = bitlen;
|
||||||
else if (bitlen > atttypmod)
|
else if (bitlen > atttypmod)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
|
(errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION),
|
||||||
errmsg("bit string too long for type bit varying(%d)",
|
errmsg("bit string too long for type bit varying(%d)",
|
||||||
atttypmod)));
|
atttypmod)));
|
||||||
|
|
||||||
@ -528,7 +528,7 @@ varbit(PG_FUNCTION_ARGS)
|
|||||||
|
|
||||||
if (!isExplicit)
|
if (!isExplicit)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
|
(errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION),
|
||||||
errmsg("bit string too long for type bit varying(%d)",
|
errmsg("bit string too long for type bit varying(%d)",
|
||||||
len)));
|
len)));
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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;
|
len = mbmaxlen;
|
||||||
else
|
else
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
|
(errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION),
|
||||||
errmsg("value too long for type character(%d)",
|
errmsg("value too long for type character(%d)",
|
||||||
(int) maxlen)));
|
(int) maxlen)));
|
||||||
|
|
||||||
@ -221,7 +221,7 @@ bpchar(PG_FUNCTION_ARGS)
|
|||||||
for (i = maxmblen - VARHDRSZ; i < len - VARHDRSZ; i++)
|
for (i = maxmblen - VARHDRSZ; i < len - VARHDRSZ; i++)
|
||||||
if (*(VARDATA(source) + i) != ' ')
|
if (*(VARDATA(source) + i) != ' ')
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
|
(errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION),
|
||||||
errmsg("value too long for type character(%d)",
|
errmsg("value too long for type character(%d)",
|
||||||
maxlen - VARHDRSZ)));
|
maxlen - VARHDRSZ)));
|
||||||
}
|
}
|
||||||
@ -379,7 +379,7 @@ varcharin(PG_FUNCTION_ARGS)
|
|||||||
len = mbmaxlen;
|
len = mbmaxlen;
|
||||||
else
|
else
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
|
(errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION),
|
||||||
errmsg("value too long for type character varying(%d)",
|
errmsg("value too long for type character varying(%d)",
|
||||||
(int) maxlen)));
|
(int) maxlen)));
|
||||||
}
|
}
|
||||||
@ -471,7 +471,7 @@ varchar(PG_FUNCTION_ARGS)
|
|||||||
for (i = maxmblen; i < len - VARHDRSZ; i++)
|
for (i = maxmblen; i < len - VARHDRSZ; i++)
|
||||||
if (*(VARDATA(source) + i) != ' ')
|
if (*(VARDATA(source) + i) != ' ')
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
|
(errcode(ERRCODE_STRING_DATA_RIGHT_TRUNCATION),
|
||||||
errmsg("value too long for type character varying(%d)",
|
errmsg("value too long for type character varying(%d)",
|
||||||
maxlen - VARHDRSZ)));
|
maxlen - VARHDRSZ)));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user