Improve some error wording with multirange type parsing
authorMichael Paquier
Mon, 31 May 2021 02:35:00 +0000 (11:35 +0900)
committerMichael Paquier
Mon, 31 May 2021 02:35:00 +0000 (11:35 +0900)
Braces were referred in some error messages as only brackets (not curly
brackets or curly braces), which can be confusing as other types of
brackets could be used.

While on it, add one test to check after the case of junk characters
detected after a right brace.

Author: Kyotaro Horiguchi
Discussion: https://postgr.es/m/20210514.153153.1814935914483287479[email protected]

src/backend/utils/adt/multirangetypes.c
src/test/regress/expected/multirangetypes.out
src/test/regress/sql/multirangetypes.sql

index 0b81649779ac3d4d389fb98c5e97a2f5970e2469..fbcc27d0726c7190dfb46d9a03f6774aad7bf9eb 100644 (file)
@@ -146,7 +146,7 @@ multirange_in(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
                 errmsg("malformed multirange literal: \"%s\"",
                        input_str),
-                errdetail("Missing left bracket.")));
+                errdetail("Missing left brace.")));
 
    /* consume ranges */
    parse_state = MULTIRANGE_BEFORE_RANGE;
@@ -282,7 +282,7 @@ multirange_in(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
                 errmsg("malformed multirange literal: \"%s\"",
                        input_str),
-                errdetail("Junk after right bracket.")));
+                errdetail("Junk after right brace.")));
 
    ret = make_multirange(mltrngtypoid, rangetyp, range_count, ranges);
    PG_RETURN_MULTIRANGE_P(ret);
index 04953a599032449dc8c7cb5b0b5e7a84b5da5b41..98ac592127b568328adb72b226eeca83667f37d3 100644 (file)
@@ -7,12 +7,17 @@ select ''::textmultirange;
 ERROR:  malformed multirange literal: ""
 LINE 1: select ''::textmultirange;
                ^
-DETAIL:  Missing left bracket.
+DETAIL:  Missing left brace.
 select '{,}'::textmultirange;
 ERROR:  malformed multirange literal: "{,}"
 LINE 1: select '{,}'::textmultirange;
                ^
 DETAIL:  Expected range start.
+select '{(,)}.'::textmultirange;
+ERROR:  malformed multirange literal: "{(,)}."
+LINE 1: select '{(,)}.'::textmultirange;
+               ^
+DETAIL:  Junk after right brace.
 select '{[a,c),}'::textmultirange;
 ERROR:  malformed multirange literal: "{[a,c),}"
 LINE 1: select '{[a,c),}'::textmultirange;
index 692f2416d9b8d93279074a5afc790202b2a4da35..3cbebedcd4a11732cd51079433ec6a6f24bfc9b7 100644 (file)
@@ -7,6 +7,7 @@
 -- negative tests; should fail
 select ''::textmultirange;
 select '{,}'::textmultirange;
+select '{(,)}.'::textmultirange;
 select '{[a,c),}'::textmultirange;
 select '{,[a,c)}'::textmultirange;
 select '{-[a,z)}'::textmultirange;