]> granicus.if.org Git - postgresql/commitdiff
Deduplicate "invalid input syntax" messages for various types.
authorAndres Freund <andres@anarazel.de>
Sun, 22 Jul 2018 21:58:01 +0000 (14:58 -0700)
committerAndres Freund <andres@anarazel.de>
Sun, 22 Jul 2018 21:58:01 +0000 (14:58 -0700)
Previously a lot of the error messages referenced the type in the
error message itself. That requires that the message is translated
separately for each type.

Note that currently a few smallint cases continue to reference the
integer, rather than smallint, type. A later patch will create a
separate routine for 16bit input.

Author: Andres Freund
Discussion: https://postgr.es/m/20180707200158.wpqkd7rjr4jxq5g7@alap3.anarazel.de

20 files changed:
contrib/dblink/expected/dblink.out
contrib/postgres_fdw/expected/postgres_fdw.out
doc/src/sgml/xtypes.sgml
src/backend/utils/adt/int8.c
src/backend/utils/adt/numutils.c
src/backend/utils/adt/timestamp.c
src/pl/plpython/expected/plpython_subtransaction.out
src/pl/plpython/expected/plpython_types.out
src/pl/tcl/expected/pltcl_subxact.out
src/test/regress/expected/aggregates.out
src/test/regress/expected/alter_table.out
src/test/regress/expected/copy2.out
src/test/regress/expected/int2.out
src/test/regress/expected/int4.out
src/test/regress/expected/int8.out
src/test/regress/expected/plpgsql.out
src/test/regress/expected/select_parallel.out
src/test/regress/expected/timestamptz.out
src/test/regress/regress.c
src/tutorial/complex.c

index dfd49b937e87d2fc54ddab3e8b924121a0c05a3b..6ceabb453c055ee30632390b0390381b47f77f31 100644 (file)
@@ -1154,7 +1154,7 @@ FROM dblink_fetch('myconn','error_cursor', 1) AS t(i int);
 
 SELECT *
 FROM dblink_fetch('myconn','error_cursor', 1) AS t(i int);
-ERROR:  invalid input syntax for integer: "not an int"
+ERROR:  invalid input syntax for type integer: "not an int"
 -- Make sure that the local settings have retained their values in spite
 -- of shenanigans on the connection.
 SHOW datestyle;
index fc2c51c9d044d28c101a6648a951d366118a2057..f5498c62bd329c08200616b6d97b85388caa0c6f 100644 (file)
@@ -4087,16 +4087,16 @@ DROP FUNCTION f_test(int);
 -- ===================================================================
 ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE int;
 SELECT * FROM ft1 WHERE c1 = 1;  -- ERROR
-ERROR:  invalid input syntax for integer: "foo"
+ERROR:  invalid input syntax for type integer: "foo"
 CONTEXT:  column "c8" of foreign table "ft1"
 SELECT  ft1.c1,  ft2.c2, ft1.c8 FROM ft1, ft2 WHERE ft1.c1 = ft2.c1 AND ft1.c1 = 1; -- ERROR
-ERROR:  invalid input syntax for integer: "foo"
+ERROR:  invalid input syntax for type integer: "foo"
 CONTEXT:  column "c8" of foreign table "ft1"
 SELECT  ft1.c1,  ft2.c2, ft1 FROM ft1, ft2 WHERE ft1.c1 = ft2.c1 AND ft1.c1 = 1; -- ERROR
-ERROR:  invalid input syntax for integer: "foo"
+ERROR:  invalid input syntax for type integer: "foo"
 CONTEXT:  whole-row reference to foreign table "ft1"
 SELECT sum(c2), array_agg(c8) FROM ft1 GROUP BY c8; -- ERROR
-ERROR:  invalid input syntax for integer: "foo"
+ERROR:  invalid input syntax for type integer: "foo"
 CONTEXT:  processing expression at position 2 in select list
 ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE user_enum;
 -- ===================================================================
index 29747a0873ec4514a6f133503c38672756577846..186e287529743c97f41650bce77c836a44ba21f9 100644 (file)
@@ -86,8 +86,8 @@ complex_in(PG_FUNCTION_ARGS)
     if (sscanf(str, " ( %lf , %lf )", &x, &y) != 2)
         ereport(ERROR,
                 (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                 errmsg("invalid input syntax for complex: \"%s\"",
-                        str)));
+                 errmsg("invalid input syntax for type %s: \"%s\"",
+                        "complex", str)));
 
     result = (Complex *) palloc(sizeof(Complex));
     result->x = x;
index 73798e7796b816cb7bcec33d1e5959890796f8d6..49f32a8b3dd94d77292cd6a5a08183f0b4bf2fdf 100644 (file)
@@ -121,8 +121,8 @@ invalid_syntax:
        if (!errorOK)
                ereport(ERROR,
                                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                                errmsg("invalid input syntax for integer: \"%s\"",
-                                               str)));
+                                errmsg("invalid input syntax for type %s: \"%s\"",
+                                               "bigint", str)));
        return false;
 }
 
index b5439f497cc79024cc1b306064419749b65937c7..fb46f692e3a0b726e0c239058fe84f29ca50b633 100644 (file)
@@ -48,8 +48,8 @@ pg_atoi(const char *s, int size, int c)
        if (*s == 0)
                ereport(ERROR,
                                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                                errmsg("invalid input syntax for integer: \"%s\"",
-                                               s)));
+                                errmsg("invalid input syntax for type %s: \"%s\"",
+                                               "integer", s)));
 
        errno = 0;
        l = strtol(s, &badp, 10);
@@ -58,8 +58,8 @@ pg_atoi(const char *s, int size, int c)
        if (s == badp)
                ereport(ERROR,
                                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                                errmsg("invalid input syntax for integer: \"%s\"",
-                                               s)));
+                                errmsg("invalid input syntax for type %s: \"%s\"",
+                                               "integer", s)));
 
        switch (size)
        {
@@ -102,8 +102,8 @@ pg_atoi(const char *s, int size, int c)
        if (*badp && *badp != c)
                ereport(ERROR,
                                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                                errmsg("invalid input syntax for integer: \"%s\"",
-                                               s)));
+                                errmsg("invalid input syntax for type %s: \"%s\"",
+                                               "integer", s)));
 
        return (int32) l;
 }
index b98036f200b832dd0f0e255761291339307d4c7e..9a481f6eb90d34362c2dc6ba4b42335b6bf77fd4 100644 (file)
@@ -480,8 +480,8 @@ parse_sane_timezone(struct pg_tm *tm, text *zone)
        if (isdigit((unsigned char) *tzname))
                ereport(ERROR,
                                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                                errmsg("invalid input syntax for numeric time zone: \"%s\"",
-                                               tzname),
+                                errmsg("invalid input syntax for type %s: \"%s\"",
+                                               "numeric time zone", tzname),
                                 errhint("Numeric time zones must have \"-\" or \"+\" as first character.")));
 
        rt = DecodeTimezone(tzname, &tz);
index b38cde8d2dbeebd38a4177f8b964c8e8391b025e..069f0992abdaf8835d2e96b0bb793385c6676c03 100644 (file)
@@ -43,7 +43,7 @@ SELECT * FROM subtransaction_tbl;
 
 TRUNCATE subtransaction_tbl;
 SELECT subtransaction_test('SPI');
-ERROR:  spiexceptions.InvalidTextRepresentation: invalid input syntax for integer: "oops"
+ERROR:  spiexceptions.InvalidTextRepresentation: invalid input syntax for type integer: "oops"
 LINE 1: INSERT INTO subtransaction_tbl VALUES ('oops')
                                                ^
 QUERY:  INSERT INTO subtransaction_tbl VALUES ('oops')
@@ -95,7 +95,7 @@ SELECT * FROM subtransaction_tbl;
 
 TRUNCATE subtransaction_tbl;
 SELECT subtransaction_ctx_test('SPI');
-ERROR:  spiexceptions.InvalidTextRepresentation: invalid input syntax for integer: "oops"
+ERROR:  spiexceptions.InvalidTextRepresentation: invalid input syntax for type integer: "oops"
 LINE 1: INSERT INTO subtransaction_tbl VALUES ('oops')
                                                ^
 QUERY:  INSERT INTO subtransaction_tbl VALUES ('oops')
index eda965a9e0d7f8810a67ced583457ff799e65483..98b89b7d5c11d1045fc21cdb2e04983a8b07c307 100644 (file)
@@ -684,7 +684,7 @@ CREATE FUNCTION test_type_conversion_array_mixed2() RETURNS int[] AS $$
 return [123, 'abc']
 $$ LANGUAGE plpythonu;
 SELECT * FROM test_type_conversion_array_mixed2();
-ERROR:  invalid input syntax for integer: "abc"
+ERROR:  invalid input syntax for type integer: "abc"
 CONTEXT:  while creating return value
 PL/Python function "test_type_conversion_array_mixed2"
 CREATE FUNCTION test_type_conversion_mdarray_malformed() RETURNS int[] AS $$
index 4393f4acf69ac64d3fa7c070dc38c377ed23752a..5e19bbbc636e27a2828b2f02ba41ee923c5e4981 100644 (file)
@@ -71,9 +71,9 @@ SELECT * FROM subtransaction_tbl;
 
 TRUNCATE subtransaction_tbl;
 SELECT pltcl_wrapper('SELECT subtransaction_ctx_test(''SPI'')');
-                  pltcl_wrapper                  
--------------------------------------------------
- ERROR: invalid input syntax for integer: "oops"
+                    pltcl_wrapper                     
+------------------------------------------------------
+ ERROR: invalid input syntax for type integer: "oops"
 (1 row)
 
 SELECT * FROM subtransaction_tbl;
index a120dd83f7bf7892bac3b8a812ae6e6ebd932c31..5e21622754271f9bf29ea1846fb6d73ec896e770 100644 (file)
@@ -1674,7 +1674,7 @@ LINE 1: select rank(3) within group (order by stringu1,stringu2) fro...
                ^
 HINT:  To use the hypothetical-set aggregate rank, the number of hypothetical direct arguments (here 1) must match the number of ordering columns (here 2).
 select rank('fred') within group (order by x) from generate_series(1,5) x;
-ERROR:  invalid input syntax for integer: "fred"
+ERROR:  invalid input syntax for type integer: "fred"
 LINE 1: select rank('fred') within group (order by x) from generate_...
                     ^
 select rank('adam'::text collate "C") within group (order by x collate "POSIX")
index 37440f6aec442895234610482a6fb0eb3f67f087..0218c2c362008b777600a650f57f750aa25f1fae 100644 (file)
@@ -1113,7 +1113,7 @@ select * from def_test;
 
 -- set defaults to an incorrect type: this should fail
 alter table def_test alter column c1 set default 'wrong_datatype';
-ERROR:  invalid input syntax for integer: "wrong_datatype"
+ERROR:  invalid input syntax for type integer: "wrong_datatype"
 alter table def_test alter column c2 set default 20;
 -- set defaults on a non-existent column: this should fail
 alter table def_test alter column c3 set default 30;
index e606a5fda47e3f1cfac8ae47631a03d618bacd3e..eb9e4b9774119ccaa0a57180f84e3322702fa63c 100644 (file)
@@ -33,7 +33,7 @@ COPY x (a, b, c, d, e, d, c) from stdin;
 ERROR:  column "d" specified more than once
 -- missing data: should fail
 COPY x from stdin;
-ERROR:  invalid input syntax for integer: ""
+ERROR:  invalid input syntax for type integer: ""
 CONTEXT:  COPY x, line 1, column a: ""
 COPY x from stdin;
 ERROR:  missing data for column "e"
index 3ea4ed93a0aad5819b0f660fd619b6fa2ea4183f..a4ec2738cdc7f967f4a3c58498c5c43c080852ef 100644 (file)
@@ -6,7 +6,7 @@ INSERT INTO INT2_TBL(f1) VALUES ('0   ');
 INSERT INTO INT2_TBL(f1) VALUES ('  1234 ');
 INSERT INTO INT2_TBL(f1) VALUES ('    -1234');
 INSERT INTO INT2_TBL(f1) VALUES ('34.5');
-ERROR:  invalid input syntax for integer: "34.5"
+ERROR:  invalid input syntax for type integer: "34.5"
 LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('34.5');
                                          ^
 -- largest and smallest values
@@ -18,27 +18,27 @@ ERROR:  value "100000" is out of range for type smallint
 LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('100000');
                                          ^
 INSERT INTO INT2_TBL(f1) VALUES ('asdf');
-ERROR:  invalid input syntax for integer: "asdf"
+ERROR:  invalid input syntax for type integer: "asdf"
 LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('asdf');
                                          ^
 INSERT INTO INT2_TBL(f1) VALUES ('    ');
-ERROR:  invalid input syntax for integer: "    "
+ERROR:  invalid input syntax for type integer: "    "
 LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('    ');
                                          ^
 INSERT INTO INT2_TBL(f1) VALUES ('- 1234');
-ERROR:  invalid input syntax for integer: "- 1234"
+ERROR:  invalid input syntax for type integer: "- 1234"
 LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('- 1234');
                                          ^
 INSERT INTO INT2_TBL(f1) VALUES ('4 444');
-ERROR:  invalid input syntax for integer: "4 444"
+ERROR:  invalid input syntax for type integer: "4 444"
 LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('4 444');
                                          ^
 INSERT INTO INT2_TBL(f1) VALUES ('123 dt');
-ERROR:  invalid input syntax for integer: "123 dt"
+ERROR:  invalid input syntax for type integer: "123 dt"
 LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('123 dt');
                                          ^
 INSERT INTO INT2_TBL(f1) VALUES ('');
-ERROR:  invalid input syntax for integer: ""
+ERROR:  invalid input syntax for type integer: ""
 LINE 1: INSERT INTO INT2_TBL(f1) VALUES ('');
                                          ^
 SELECT '' AS five, * FROM INT2_TBL;
index 372fd4d94c8c5f3d1f50359f20d55212145143ce..bda7a8daefc62f27d9104c75be5d85271708b08e 100644 (file)
@@ -6,7 +6,7 @@ INSERT INTO INT4_TBL(f1) VALUES ('   0  ');
 INSERT INTO INT4_TBL(f1) VALUES ('123456     ');
 INSERT INTO INT4_TBL(f1) VALUES ('    -123456');
 INSERT INTO INT4_TBL(f1) VALUES ('34.5');
-ERROR:  invalid input syntax for integer: "34.5"
+ERROR:  invalid input syntax for type integer: "34.5"
 LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('34.5');
                                          ^
 -- largest and smallest values
@@ -18,27 +18,27 @@ ERROR:  value "1000000000000" is out of range for type integer
 LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
                                          ^
 INSERT INTO INT4_TBL(f1) VALUES ('asdf');
-ERROR:  invalid input syntax for integer: "asdf"
+ERROR:  invalid input syntax for type integer: "asdf"
 LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('asdf');
                                          ^
 INSERT INTO INT4_TBL(f1) VALUES ('     ');
-ERROR:  invalid input syntax for integer: "     "
+ERROR:  invalid input syntax for type integer: "     "
 LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('     ');
                                          ^
 INSERT INTO INT4_TBL(f1) VALUES ('   asdf   ');
-ERROR:  invalid input syntax for integer: "   asdf   "
+ERROR:  invalid input syntax for type integer: "   asdf   "
 LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('   asdf   ');
                                          ^
 INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
-ERROR:  invalid input syntax for integer: "- 1234"
+ERROR:  invalid input syntax for type integer: "- 1234"
 LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
                                          ^
 INSERT INTO INT4_TBL(f1) VALUES ('123       5');
-ERROR:  invalid input syntax for integer: "123       5"
+ERROR:  invalid input syntax for type integer: "123       5"
 LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('123       5');
                                          ^
 INSERT INTO INT4_TBL(f1) VALUES ('');
-ERROR:  invalid input syntax for integer: ""
+ERROR:  invalid input syntax for type integer: ""
 LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('');
                                          ^
 SELECT '' AS five, * FROM INT4_TBL;
index ed0bd34221eb56302f209a83ca302f3874b7e458..35e3b3ff8183b5b1cccb2506cd467ed53cead1e7 100644 (file)
@@ -10,11 +10,11 @@ INSERT INTO INT8_TBL VALUES(+4567890123456789,'4567890123456789');
 INSERT INTO INT8_TBL VALUES('+4567890123456789','-4567890123456789');
 -- bad inputs
 INSERT INTO INT8_TBL(q1) VALUES ('      ');
-ERROR:  invalid input syntax for integer: "      "
+ERROR:  invalid input syntax for type bigint: "      "
 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('      ');
                                          ^
 INSERT INTO INT8_TBL(q1) VALUES ('xxx');
-ERROR:  invalid input syntax for integer: "xxx"
+ERROR:  invalid input syntax for type bigint: "xxx"
 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('xxx');
                                          ^
 INSERT INTO INT8_TBL(q1) VALUES ('3908203590239580293850293850329485');
@@ -26,15 +26,15 @@ ERROR:  value "-1204982019841029840928340329840934" is out of range for type big
 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('-1204982019841029840928340...
                                          ^
 INSERT INTO INT8_TBL(q1) VALUES ('- 123');
-ERROR:  invalid input syntax for integer: "- 123"
+ERROR:  invalid input syntax for type bigint: "- 123"
 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('- 123');
                                          ^
 INSERT INTO INT8_TBL(q1) VALUES ('  345     5');
-ERROR:  invalid input syntax for integer: "  345     5"
+ERROR:  invalid input syntax for type bigint: "  345     5"
 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('  345     5');
                                          ^
 INSERT INTO INT8_TBL(q1) VALUES ('');
-ERROR:  invalid input syntax for integer: ""
+ERROR:  invalid input syntax for type bigint: ""
 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('');
                                          ^
 SELECT * FROM INT8_TBL;
index b687fbfddccce83d1477b8ad11ffa93a1f464254..dde2cc4bd09e3d85a4d58593beddfe074b8fe208 100644 (file)
@@ -3782,7 +3782,7 @@ begin
 end;
 $$ language plpgsql;
 select compos();
-ERROR:  invalid input syntax for integer: "(1,hello)"
+ERROR:  invalid input syntax for type integer: "(1,hello)"
 CONTEXT:  PL/pgSQL function compos() while casting return value to function's return type
 -- test: invalid use of composite expression in scalar-returning function
 create or replace function compos() returns int as $$
@@ -3791,7 +3791,7 @@ begin
 end;
 $$ language plpgsql;
 select compos();
-ERROR:  invalid input syntax for integer: "(1,hello)"
+ERROR:  invalid input syntax for type integer: "(1,hello)"
 CONTEXT:  PL/pgSQL function compos() while casting return value to function's return type
 drop function compos();
 drop type compostype;
index cd0b94502d8b157373c95a846b69a5142281c891..2f028d10525ee80f7ba81b2725f061d577e6fae5 100644 (file)
@@ -975,7 +975,7 @@ ROLLBACK TO SAVEPOINT settings;
 SAVEPOINT settings;
 SET LOCAL force_parallel_mode = 1;
 select stringu1::int2 from tenk1 where unique1 = 1;
-ERROR:  invalid input syntax for integer: "BAAAAA"
+ERROR:  invalid input syntax for type integer: "BAAAAA"
 CONTEXT:  parallel worker
 ROLLBACK TO SAVEPOINT settings;
 -- test interaction with set-returning functions
index a901fd909d33756bbca1b93d17f9a8543876a062..2340f3079426b131a5b8b7ec49a594c12c247d2c 100644 (file)
@@ -1834,7 +1834,7 @@ WITH tzs (tz) AS (VALUES
 
 -- these should fail
 SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33, '2');
-ERROR:  invalid input syntax for numeric time zone: "2"
+ERROR:  invalid input syntax for type numeric time zone: "2"
 HINT:  Numeric time zones must have "-" or "+" as first character.
 SELECT make_timestamptz(2014, 12, 10, 10, 10, 10, '+16');
 ERROR:  numeric time zone "+16" out of range
index 97a50f30e7b289d992ba3f30c91fc79c8a31cafc..6a0d5f45e8dfe8a541927b46b213d466a92f7f45 100644 (file)
@@ -148,8 +148,8 @@ widget_in(PG_FUNCTION_ARGS)
        if (i < NARGS)
                ereport(ERROR,
                                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                                errmsg("invalid input syntax for type widget: \"%s\"",
-                                               str)));
+                                errmsg("invalid input syntax for type %s: \"%s\"",
+                                               "widget", str)));
 
        result = (WIDGET *) palloc(sizeof(WIDGET));
        result->center.x = atof(coord[0]);
index 1b5ebc2ff04ea3ce6d309b2c6df4ef19c9df8e49..6798a9e6ba6c086afc37ebd09b9a6ddf377f5b68 100644 (file)
@@ -38,8 +38,8 @@ complex_in(PG_FUNCTION_ARGS)
        if (sscanf(str, " ( %lf , %lf )", &x, &y) != 2)
                ereport(ERROR,
                                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                                errmsg("invalid input syntax for complex: \"%s\"",
-                                               str)));
+                                errmsg("invalid input syntax for type %s: \"%s\"",
+                                               "complex", str)));
 
        result = (Complex *) palloc(sizeof(Complex));
        result->x = x;