From 12cc956664f159e97be71e33f15ec5f42e46b24e Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Mon, 31 May 2021 11:35:00 +0900 Subject: [PATCH] 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 --- src/backend/utils/adt/multirangetypes.c | 4 ++-- src/test/regress/expected/multirangetypes.out | 7 ++++++- src/test/regress/sql/multirangetypes.sql | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/backend/utils/adt/multirangetypes.c b/src/backend/utils/adt/multirangetypes.c index 0b81649779ac3..fbcc27d0726c7 100644 --- a/src/backend/utils/adt/multirangetypes.c +++ b/src/backend/utils/adt/multirangetypes.c @@ -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); diff --git a/src/test/regress/expected/multirangetypes.out b/src/test/regress/expected/multirangetypes.out index 04953a5990324..98ac592127b56 100644 --- a/src/test/regress/expected/multirangetypes.out +++ b/src/test/regress/expected/multirangetypes.out @@ -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; diff --git a/src/test/regress/sql/multirangetypes.sql b/src/test/regress/sql/multirangetypes.sql index 692f2416d9b8d..3cbebedcd4a11 100644 --- a/src/test/regress/sql/multirangetypes.sql +++ b/src/test/regress/sql/multirangetypes.sql @@ -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;