Improve some error wording with multirange type parsing

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
This commit is contained in:
Michael Paquier 2021-05-31 11:35:00 +09:00
parent ba356a397d
commit 12cc956664
3 changed files with 9 additions and 3 deletions

View 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);

View 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;

View 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;