]> granicus.if.org Git - postgresql/commitdiff
While perusing SQL92 I realized that we are delivering the wrong SQLSTATE
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 2 Aug 2004 16:51:10 +0000 (16:51 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 2 Aug 2004 16:51:10 +0000 (16:51 +0000)
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.

src/backend/utils/adt/varbit.c
src/backend/utils/adt/varchar.c

index 7fd7727e421b3091c98ba7d48ce0f88af33cba4e..496c25b699d884fa67a3e1ac80e8a235ac407c0c 100644 (file)
@@ -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)));
 
index 6b26a91192cd2e69491373eae928d8856f1d480d..5bccdb8ce5f044c2ed55eb7627f93c73c91f6018 100644 (file)
@@ -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)));
        }