Skip to content

Commit

Permalink
Improve some error wording with multirange type parsing
Browse files Browse the repository at this point in the history
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.horikyota.ntt@gmail.com
  • Loading branch information
michaelpq committed May 31, 2021
1 parent ba356a3 commit 12cc956
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/backend/utils/adt/multirangetypes.c
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down
7 changes: 6 additions & 1 deletion src/test/regress/expected/multirangetypes.out
Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions src/test/regress/sql/multirangetypes.sql
Expand Up @@ -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;
Expand Down

0 comments on commit 12cc956

Please sign in to comment.