diff options
author | Teodor Sigaev <teodor@sigaev.ru> | 2016-02-11 18:11:11 +0300 |
---|---|---|
committer | Teodor Sigaev <teodor@sigaev.ru> | 2016-02-11 18:11:11 +0300 |
commit | 07d25a964b2fb78169a4a34c6f6893736f69903a (patch) | |
tree | b4be32ede25bcdb111a0a802b53ce8e1c8c3723b /src/backend/utils/adt/varlena.c | |
parent | a455878d99561d4b199915ed7a7fb02f5e621710 (diff) | |
download | postgresql-07d25a964b2fb78169a4a34c6f6893736f69903a.tar.gz postgresql-07d25a964b2fb78169a4a34c6f6893736f69903a.zip |
Improve error reporting in format()
Clarify invalid format conversion type error message and add hint.
Author: Jim Nasby
Diffstat (limited to 'src/backend/utils/adt/varlena.c')
-rw-r--r-- | src/backend/utils/adt/varlena.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index f61e41ed7f1..94599cc508f 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -4788,7 +4788,8 @@ text_reverse(PG_FUNCTION_ARGS) if (++(ptr) >= (end_ptr)) \ ereport(ERROR, \ (errcode(ERRCODE_INVALID_PARAMETER_VALUE), \ - errmsg("unterminated format specifier"))); \ + errmsg("unterminated format() type specifier"), \ + errhint("For a single \"%%\" use \"%%%%\"."))); \ } while (0) /* @@ -4920,8 +4921,9 @@ text_format(PG_FUNCTION_ARGS) if (strchr("sIL", *cp) == NULL) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("unrecognized conversion type specifier \"%c\"", - *cp))); + errmsg("unrecognized format() type specifier \"%c\"", + *cp), + errhint("For a single \"%%\" use \"%%%%\"."))); /* If indirect width was specified, get its value */ if (widthpos >= 0) @@ -4932,7 +4934,7 @@ text_format(PG_FUNCTION_ARGS) if (arg >= nargs) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("too few arguments for format"))); + errmsg("too few arguments for format()"))); /* Get the value and type of the selected argument */ if (!funcvariadic) @@ -5040,8 +5042,9 @@ text_format(PG_FUNCTION_ARGS) /* should not get here, because of previous check */ ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("unrecognized conversion type specifier \"%c\"", - *cp))); + errmsg("unrecognized format() type specifier \"%c\"", + *cp), + errhint("For a single \"%%\" use \"%%%%\"."))); break; } } |