]> granicus.if.org Git - postgresql/commitdiff
Improve error reporting in jsonpath
authorAlexander Korotkov <akorotkov@postgresql.org>
Tue, 23 Apr 2019 14:43:09 +0000 (17:43 +0300)
committerAlexander Korotkov <akorotkov@postgresql.org>
Tue, 7 May 2019 22:02:59 +0000 (01:02 +0300)
This commit contains multiple improvements to error reporting in jsonpath
including but not limited to getting rid of following things:

 * definition of error messages in macros,
 * errdetail() when valueable information could fit to errmsg(),
 * word "singleton" which is not properly explained anywhere,
 * line breaks in error messages.

Reported-by: Tom Lane
Discussion: https://postgr.es/m/14890.1555523005%40sss.pgh.pa.us
Author: Alexander Korotkov
Reviewed-by: Tom Lane
src/backend/utils/adt/jsonpath_exec.c
src/backend/utils/adt/jsonpath_gram.y
src/backend/utils/adt/jsonpath_scan.l
src/test/regress/expected/jsonb_jsonpath.out
src/test/regress/expected/jsonpath.out
src/test/regress/expected/jsonpath_encoding.out
src/test/regress/expected/jsonpath_encoding_1.out

index 0a263ad8b31592e6fe36b9b9777271dc239d83a2..2789ed2371feaab89455aa3285e02b27afc5bf70 100644 (file)
 #include "utils/varlena.h"
 
 
-/* Standard error message for SQL/JSON errors */
-#define ERRMSG_JSON_ARRAY_NOT_FOUND                    "SQL/JSON array not found"
-#define ERRMSG_JSON_OBJECT_NOT_FOUND           "SQL/JSON object not found"
-#define ERRMSG_JSON_MEMBER_NOT_FOUND           "SQL/JSON member not found"
-#define ERRMSG_JSON_NUMBER_NOT_FOUND           "SQL/JSON number not found"
-#define ERRMSG_JSON_SCALAR_REQUIRED                    "SQL/JSON scalar required"
-#define ERRMSG_SINGLETON_JSON_ITEM_REQUIRED    "singleton SQL/JSON item required"
-#define ERRMSG_NON_NUMERIC_JSON_ITEM           "non-numeric SQL/JSON item"
-#define ERRMSG_INVALID_JSON_SUBSCRIPT          "invalid SQL/JSON subscript"
-
 /*
  * Represents "base object" and it's "id" for .keyvalue() evaluation.
  */
@@ -349,8 +339,7 @@ jsonb_path_match(PG_FUNCTION_ARGS)
        if (!silent)
                ereport(ERROR,
                                (errcode(ERRCODE_SINGLETON_JSON_ITEM_REQUIRED),
-                                errmsg(ERRMSG_SINGLETON_JSON_ITEM_REQUIRED),
-                                errdetail("expression should return a singleton boolean")));
+                                errmsg("single boolean result is expected")));
 
        PG_RETURN_NULL();
 }
@@ -498,8 +487,8 @@ executeJsonPath(JsonPath *path, Jsonb *vars, Jsonb *json, bool throwErrors,
        {
                ereport(ERROR,
                                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                                errmsg("jsonb containing jsonpath variables "
-                                               "is not an object")));
+                                errmsg("\"vars\" argument is not an object"),
+                                errdetail("Jsonpath parameters should be encoded as key-value pairs of \"vars\" object.")));
        }
 
        cxt.vars = vars;
@@ -608,24 +597,16 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
                                }
                                else if (!jspIgnoreStructuralErrors(cxt))
                                {
-                                       StringInfoData keybuf;
-                                       char       *keystr;
-
                                        Assert(found);
 
                                        if (!jspThrowErrors(cxt))
                                                return jperError;
 
-                                       initStringInfo(&keybuf);
-
-                                       keystr = pnstrdup(key.val.string.val, key.val.string.len);
-                                       escape_json(&keybuf, keystr);
-
                                        ereport(ERROR,
                                                        (errcode(ERRCODE_JSON_MEMBER_NOT_FOUND), \
-                                                        errmsg(ERRMSG_JSON_MEMBER_NOT_FOUND),
-                                                        errdetail("JSON object does not contain key %s",
-                                                                          keybuf.data)));
+                                                        errmsg("JSON object does not contain key \"%s\"",
+                                                                       pnstrdup(key.val.string.val,
+                                                                                        key.val.string.len))));
                                }
                        }
                        else if (unwrap && JsonbType(jb) == jbvArray)
@@ -635,9 +616,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
                                Assert(found);
                                RETURN_ERROR(ereport(ERROR,
                                                                         (errcode(ERRCODE_JSON_MEMBER_NOT_FOUND),
-                                                                         errmsg(ERRMSG_JSON_MEMBER_NOT_FOUND),
-                                                                         errdetail("jsonpath member accessor can "
-                                                                                               "only be applied to an object"))));
+                                                                         errmsg("jsonpath member accessor can only be applied to an object"))));
                        }
                        break;
 
@@ -666,9 +645,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
                        else if (!jspIgnoreStructuralErrors(cxt))
                                RETURN_ERROR(ereport(ERROR,
                                                                         (errcode(ERRCODE_JSON_ARRAY_NOT_FOUND),
-                                                                         errmsg(ERRMSG_JSON_ARRAY_NOT_FOUND),
-                                                                         errdetail("jsonpath wildcard array accessor "
-                                                                                               "can only be applied to an array"))));
+                                                                         errmsg("jsonpath wildcard array accessor can only be applied to an array"))));
                        break;
 
                case jpiIndexArray:
@@ -716,9 +693,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
                                                 index_to >= size))
                                                RETURN_ERROR(ereport(ERROR,
                                                                                         (errcode(ERRCODE_INVALID_JSON_SUBSCRIPT),
-                                                                                         errmsg(ERRMSG_INVALID_JSON_SUBSCRIPT),
-                                                                                         errdetail("jsonpath array subscript is "
-                                                                                                               "out of bounds"))));
+                                                                                         errmsg("jsonpath array subscript is out of bounds"))));
 
                                        if (index_from < 0)
                                                index_from = 0;
@@ -775,9 +750,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
                        {
                                RETURN_ERROR(ereport(ERROR,
                                                                         (errcode(ERRCODE_JSON_ARRAY_NOT_FOUND),
-                                                                         errmsg(ERRMSG_JSON_ARRAY_NOT_FOUND),
-                                                                         errdetail("jsonpath array accessor can "
-                                                                                               "only be applied to an array"))));
+                                                                         errmsg("jsonpath array accessor can only be applied to an array"))));
                        }
                        break;
 
@@ -789,8 +762,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
                                bool            hasNext = jspGetNext(jsp, &elem);
 
                                if (cxt->innermostArraySize < 0)
-                                       elog(ERROR, "evaluating jsonpath LAST outside of "
-                                                "array subscript");
+                                       elog(ERROR, "evaluating jsonpath LAST outside of array subscript");
 
                                if (!hasNext && !found)
                                {
@@ -832,9 +804,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
                                Assert(found);
                                RETURN_ERROR(ereport(ERROR,
                                                                         (errcode(ERRCODE_JSON_OBJECT_NOT_FOUND),
-                                                                         errmsg(ERRMSG_JSON_OBJECT_NOT_FOUND),
-                                                                         errdetail("jsonpath wildcard member accessor "
-                                                                                               "can only be applied to an object"))));
+                                                                         errmsg("jsonpath wildcard member accessor can only be applied to an object"))));
                        }
                        break;
 
@@ -964,10 +934,8 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
                                                if (!jspIgnoreStructuralErrors(cxt))
                                                        RETURN_ERROR(ereport(ERROR,
                                                                                                 (errcode(ERRCODE_JSON_ARRAY_NOT_FOUND),
-                                                                                                 errmsg(ERRMSG_JSON_ARRAY_NOT_FOUND),
-                                                                                                 errdetail("jsonpath item method .%s() "
-                                                                                                                       "can only be applied to an array",
-                                                                                                                       jspOperationName(jsp->type)))));
+                                                                                                 errmsg("jsonpath item method .%s() can only be applied to an array",
+                                                                                                                jspOperationName(jsp->type)))));
                                                break;
                                        }
 
@@ -1020,11 +988,8 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
                                        if (have_error)
                                                RETURN_ERROR(ereport(ERROR,
                                                                                         (errcode(ERRCODE_NON_NUMERIC_JSON_ITEM),
-                                                                                         errmsg(ERRMSG_NON_NUMERIC_JSON_ITEM),
-                                                                                         errdetail("jsonpath item method .%s() "
-                                                                                                               "can only be applied to "
-                                                                                                               "a numeric value",
-                                                                                                               jspOperationName(jsp->type)))));
+                                                                                         errmsg("jsonpath item method .%s() can only be applied to a numeric value",
+                                                                                                        jspOperationName(jsp->type)))));
                                        res = jperOk;
                                }
                                else if (jb->type == jbvString)
@@ -1044,10 +1009,8 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
                                        if (have_error || isinf(val))
                                                RETURN_ERROR(ereport(ERROR,
                                                                                         (errcode(ERRCODE_NON_NUMERIC_JSON_ITEM),
-                                                                                         errmsg(ERRMSG_NON_NUMERIC_JSON_ITEM),
-                                                                                         errdetail("jsonpath item method .%s() can "
-                                                                                                               "only be applied to a numeric value",
-                                                                                                               jspOperationName(jsp->type)))));
+                                                                                         errmsg("jsonpath item method .%s() can only be applied to a numeric value",
+                                                                                                        jspOperationName(jsp->type)))));
 
                                        jb = &jbv;
                                        jb->type = jbvNumeric;
@@ -1059,11 +1022,8 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
                                if (res == jperNotFound)
                                        RETURN_ERROR(ereport(ERROR,
                                                                                 (errcode(ERRCODE_NON_NUMERIC_JSON_ITEM),
-                                                                                 errmsg(ERRMSG_NON_NUMERIC_JSON_ITEM),
-                                                                                 errdetail("jsonpath item method .%s() "
-                                                                                                       "can only be applied to a "
-                                                                                                       "string or numeric value",
-                                                                                                       jspOperationName(jsp->type)))));
+                                                                                 errmsg("jsonpath item method .%s() can only be applied to a string or numeric value",
+                                                                                                jspOperationName(jsp->type)))));
 
                                res = executeNextItem(cxt, jsp, NULL, jb, found, true);
                        }
@@ -1546,19 +1506,15 @@ executeBinaryArithmExpr(JsonPathExecContext *cxt, JsonPathItem *jsp,
                !(lval = getScalar(JsonValueListHead(&lseq), jbvNumeric)))
                RETURN_ERROR(ereport(ERROR,
                                                         (errcode(ERRCODE_SINGLETON_JSON_ITEM_REQUIRED),
-                                                         errmsg(ERRMSG_SINGLETON_JSON_ITEM_REQUIRED),
-                                                         errdetail("left operand of binary jsonpath operator %s "
-                                                                               "is not a singleton numeric value",
-                                                                               jspOperationName(jsp->type)))));
+                                                         errmsg("left operand of jsonpath operator %s is not a single numeric value",
+                                                                        jspOperationName(jsp->type)))));
 
        if (JsonValueListLength(&rseq) != 1 ||
                !(rval = getScalar(JsonValueListHead(&rseq), jbvNumeric)))
                RETURN_ERROR(ereport(ERROR,
                                                         (errcode(ERRCODE_SINGLETON_JSON_ITEM_REQUIRED),
-                                                         errmsg(ERRMSG_SINGLETON_JSON_ITEM_REQUIRED),
-                                                         errdetail("right operand of binary jsonpath operator %s "
-                                                                               "is not a singleton numeric value",
-                                                                               jspOperationName(jsp->type)))));
+                                                         errmsg("right operand of jsonpath operator %s is not a single numeric value",
+                                                                        jspOperationName(jsp->type)))));
 
        if (jspThrowErrors(cxt))
        {
@@ -1625,10 +1581,8 @@ executeUnaryArithmExpr(JsonPathExecContext *cxt, JsonPathItem *jsp,
 
                        RETURN_ERROR(ereport(ERROR,
                                                                 (errcode(ERRCODE_JSON_NUMBER_NOT_FOUND),
-                                                                 errmsg(ERRMSG_JSON_NUMBER_NOT_FOUND),
-                                                                 errdetail("operand of unary jsonpath operator %s "
-                                                                                       "is not a numeric value",
-                                                                                       jspOperationName(jsp->type)))));
+                                                                 errmsg("operand of unary jsonpath operator %s is not a numeric value",
+                                                                                jspOperationName(jsp->type)))));
                }
 
                if (func)
@@ -1738,10 +1692,8 @@ executeNumericItemMethod(JsonPathExecContext *cxt, JsonPathItem *jsp,
        if (!(jb = getScalar(jb, jbvNumeric)))
                RETURN_ERROR(ereport(ERROR,
                                                         (errcode(ERRCODE_NON_NUMERIC_JSON_ITEM),
-                                                         errmsg(ERRMSG_NON_NUMERIC_JSON_ITEM),
-                                                         errdetail("jsonpath item method .%s() can only "
-                                                                               "be applied to a numeric value",
-                                                                               jspOperationName(jsp->type)))));
+                                                         errmsg("jsonpath item method .%s() can only be applied to a numeric value",
+                                                                        jspOperationName(jsp->type)))));
 
        datum = DirectFunctionCall1(func, NumericGetDatum(jb->val.numeric));
 
@@ -1799,10 +1751,8 @@ executeKeyValueMethod(JsonPathExecContext *cxt, JsonPathItem *jsp,
        if (JsonbType(jb) != jbvObject || jb->type != jbvBinary)
                RETURN_ERROR(ereport(ERROR,
                                                         (errcode(ERRCODE_JSON_OBJECT_NOT_FOUND),
-                                                         errmsg(ERRMSG_JSON_OBJECT_NOT_FOUND),
-                                                         errdetail("jsonpath item method .%s() "
-                                                                               "can only be applied to an object",
-                                                                               jspOperationName(jsp->type)))));
+                                                         errmsg("jsonpath item method .%s() can only be applied to an object",
+                                                                        jspOperationName(jsp->type)))));
 
        jbc = jb->val.binary.data;
 
@@ -1984,7 +1934,7 @@ getJsonPathVariable(JsonPathExecContext *cxt, JsonPathItem *variable,
        {
                ereport(ERROR,
                                (errcode(ERRCODE_UNDEFINED_OBJECT),
-                                errmsg("cannot find jsonpath variable '%s'",
+                                errmsg("cannot find jsonpath variable \"%s\"",
                                                pnstrdup(varName, varNameLength))));
        }
 
@@ -2144,9 +2094,7 @@ getArrayIndex(JsonPathExecContext *cxt, JsonPathItem *jsp, JsonbValue *jb,
                !(jbv = getScalar(JsonValueListHead(&found), jbvNumeric)))
                RETURN_ERROR(ereport(ERROR,
                                                         (errcode(ERRCODE_INVALID_JSON_SUBSCRIPT),
-                                                         errmsg(ERRMSG_INVALID_JSON_SUBSCRIPT),
-                                                         errdetail("jsonpath array subscript is not a "
-                                                                               "singleton numeric value"))));
+                                                         errmsg("jsonpath array subscript is not a single numeric value"))));
 
        numeric_index = DirectFunctionCall2(numeric_trunc,
                                                                                NumericGetDatum(jbv->val.numeric),
@@ -2158,9 +2106,7 @@ getArrayIndex(JsonPathExecContext *cxt, JsonPathItem *jsp, JsonbValue *jb,
        if (have_error)
                RETURN_ERROR(ereport(ERROR,
                                                         (errcode(ERRCODE_INVALID_JSON_SUBSCRIPT),
-                                                         errmsg(ERRMSG_INVALID_JSON_SUBSCRIPT),
-                                                         errdetail("jsonpath array subscript is "
-                                                                               "out of integer range"))));
+                                                         errmsg("jsonpath array subscript is out of integer range"))));
 
        return jperOk;
 }
index 1534b038dda2707b08db0cc366c494dcd0a9f97d..22c2089f78fd62deca78534c3ccc348f376c943b 100644 (file)
@@ -511,7 +511,11 @@ makeItemLikeRegex(JsonPathParseItem *expr, JsonPathString *pattern,
                                cflags |= REG_EXPANDED;
                                break;
                        default:
-                               yyerror(NULL, "unrecognized flag of LIKE_REGEX predicate");
+                               ereport(ERROR,
+                                               (errcode(ERRCODE_SYNTAX_ERROR),
+                                                errmsg("invalid input syntax for type %s", "jsonpath"),
+                                                errdetail("unrecognized flag character \"%c\" in LIKE_REGEX predicate",
+                                                                  flags->val[i])));
                                break;
                }
        }
index 72bb5e3937b1e1e3c2e54a9ab0311a52a84ad8ae..6ab7c5c9c64991d4f501ee3d8cb3961aa1cdedec 100644 (file)
@@ -142,9 +142,9 @@ hex_fail    \\x{hex_dig}{0,1}
 
 <xnq,xq,xvq,xsq>{hex_char}             { parseHexChar(yytext); }
 
-<xnq,xq,xvq,xsq>{unicode}*{unicodefail}        { yyerror(NULL, "Unicode sequence is invalid"); }
+<xnq,xq,xvq,xsq>{unicode}*{unicodefail}        { yyerror(NULL, "invalid unicode sequence"); }
 
-<xnq,xq,xvq,xsq>{hex_fail}             { yyerror(NULL, "Hex character sequence is invalid"); }
+<xnq,xq,xvq,xsq>{hex_fail}             { yyerror(NULL, "invalid hex character sequence"); }
 
 <xnq,xq,xvq,xsq>{unicode}+\\   {
                                                                        /* throw back the \\, and treat as unicode */
@@ -152,11 +152,11 @@ hex_fail  \\x{hex_dig}{0,1}
                                                                        parseUnicode(yytext, yyleng);
                                                                }
 
-<xnq,xq,xvq,xsq>\\.                            { yyerror(NULL, "Escape sequence is invalid"); }
+<xnq,xq,xvq,xsq>\\.                            { yyerror(NULL, "escape sequence is invalid"); }
 
-<xnq,xq,xvq,xsq>\\                             { yyerror(NULL, "Unexpected end after backslash"); }
+<xnq,xq,xvq,xsq>\\                             { yyerror(NULL, "unexpected end after backslash"); }
 
-<xq,xvq,xsq><<EOF>>                            { yyerror(NULL, "Unexpected end of quoted string"); }
+<xq,xvq,xsq><<EOF>>                            { yyerror(NULL, "unexpected end of quoted string"); }
 
 <xq>\"                                                 {
                                                                        yylval->str = scanstring;
@@ -186,7 +186,7 @@ hex_fail    \\x{hex_dig}{0,1}
 
 <xc>\*                                                 { }
 
-<xc><<EOF>>                                            { yyerror(NULL, "Unexpected end of comment"); }
+<xc><<EOF>>                                            { yyerror(NULL, "unexpected end of comment"); }
 
 \&\&                                                   { return AND_P; }
 
@@ -261,7 +261,7 @@ hex_fail    \\x{hex_dig}{0,1}
                                                                        return INT_P;
                                                                }
 
-({realfail1}|{realfail2})              { yyerror(NULL, "Floating point number is invalid"); }
+({realfail1}|{realfail2})              { yyerror(NULL, "invalid floating point number"); }
 
 {any}+                                                 {
                                                                        addstring(true, yytext, yyleng);
@@ -295,17 +295,16 @@ jsonpath_yyerror(JsonPathParseResult **result, const char *message)
        {
                ereport(ERROR,
                                (errcode(ERRCODE_SYNTAX_ERROR),
-                                errmsg("bad jsonpath representation"),
                                 /* translator: %s is typically "syntax error" */
-                                errdetail("%s at end of input", message)));
+                                errmsg("%s at end of jsonpath input", _(message))));
        }
        else
        {
                ereport(ERROR,
                                (errcode(ERRCODE_SYNTAX_ERROR),
-                                errmsg("bad jsonpath representation"),
                                 /* translator: first %s is typically "syntax error" */
-                                errdetail("%s at or near \"%s\"", message, yytext)));
+                                errmsg("%s at or near \"%s\" of jsonpath input",
+                                               _(message), yytext)));
        }
 }
 
@@ -495,7 +494,7 @@ hexval(char c)
                return c - 'a' + 0xA;
        if (c >= 'A' && c <= 'F')
                return c - 'A' + 0xA;
-       elog(ERROR, "invalid hexadecimal digit");
+       jsonpath_yyerror(NULL, "invalid hexadecimal digit");
        return 0; /* not reached */
 }
 
index 49a857bca626110ef57209145f6c2c589ee405c9..2b63da3f249dc69a51b4c72a7948e3433dc0f4e0 100644 (file)
@@ -119,8 +119,7 @@ select jsonb '[1]' @? 'strict $[1]';
 (1 row)
 
 select jsonb_path_query('[1]', 'strict $[1]');
-ERROR:  invalid SQL/JSON subscript
-DETAIL:  jsonpath array subscript is out of bounds
+ERROR:  jsonpath array subscript is out of bounds
 select jsonb_path_query('[1]', 'strict $[1]', silent => true);
  jsonb_path_query 
 ------------------
@@ -139,11 +138,9 @@ select jsonb '[1]' @? 'strict $[10000000000000000]';
 (1 row)
 
 select jsonb_path_query('[1]', 'lax $[10000000000000000]');
-ERROR:  invalid SQL/JSON subscript
-DETAIL:  jsonpath array subscript is out of integer range
+ERROR:  jsonpath array subscript is out of integer range
 select jsonb_path_query('[1]', 'strict $[10000000000000000]');
-ERROR:  invalid SQL/JSON subscript
-DETAIL:  jsonpath array subscript is out of integer range
+ERROR:  jsonpath array subscript is out of integer range
 select jsonb '[1]' @? '$[0]';
  ?column? 
 ----------
@@ -241,8 +238,7 @@ select jsonb_path_exists('[{"a": 1}, {"a": 2}, 3]', 'lax $[*].a', silent => true
 (1 row)
 
 select jsonb_path_exists('[{"a": 1}, {"a": 2}, 3]', 'strict $[*].a', silent => false);
-ERROR:  SQL/JSON member not found
-DETAIL:  jsonpath member accessor can only be applied to an object
+ERROR:  jsonpath member accessor can only be applied to an object
 select jsonb_path_exists('[{"a": 1}, {"a": 2}, 3]', 'strict $[*].a', silent => true);
  jsonb_path_exists 
 -------------------
@@ -255,11 +251,9 @@ select jsonb_path_query('1', 'lax $.a');
 (0 rows)
 
 select jsonb_path_query('1', 'strict $.a');
-ERROR:  SQL/JSON member not found
-DETAIL:  jsonpath member accessor can only be applied to an object
+ERROR:  jsonpath member accessor can only be applied to an object
 select jsonb_path_query('1', 'strict $.*');
-ERROR:  SQL/JSON object not found
-DETAIL:  jsonpath wildcard member accessor can only be applied to an object
+ERROR:  jsonpath wildcard member accessor can only be applied to an object
 select jsonb_path_query('1', 'strict $.a', silent => true);
  jsonb_path_query 
 ------------------
@@ -276,8 +270,7 @@ select jsonb_path_query('[]', 'lax $.a');
 (0 rows)
 
 select jsonb_path_query('[]', 'strict $.a');
-ERROR:  SQL/JSON member not found
-DETAIL:  jsonpath member accessor can only be applied to an object
+ERROR:  jsonpath member accessor can only be applied to an object
 select jsonb_path_query('[]', 'strict $.a', silent => true);
  jsonb_path_query 
 ------------------
@@ -289,25 +282,20 @@ select jsonb_path_query('{}', 'lax $.a');
 (0 rows)
 
 select jsonb_path_query('{}', 'strict $.a');
-ERROR:  SQL/JSON member not found
-DETAIL:  JSON object does not contain key "a"
+ERROR:  JSON object does not contain key "a"
 select jsonb_path_query('{}', 'strict $.a', silent => true);
  jsonb_path_query 
 ------------------
 (0 rows)
 
 select jsonb_path_query('1', 'strict $[1]');
-ERROR:  SQL/JSON array not found
-DETAIL:  jsonpath array accessor can only be applied to an array
+ERROR:  jsonpath array accessor can only be applied to an array
 select jsonb_path_query('1', 'strict $[*]');
-ERROR:  SQL/JSON array not found
-DETAIL:  jsonpath wildcard array accessor can only be applied to an array
+ERROR:  jsonpath wildcard array accessor can only be applied to an array
 select jsonb_path_query('[]', 'strict $[1]');
-ERROR:  invalid SQL/JSON subscript
-DETAIL:  jsonpath array subscript is out of bounds
+ERROR:  jsonpath array subscript is out of bounds
 select jsonb_path_query('[]', 'strict $["a"]');
-ERROR:  invalid SQL/JSON subscript
-DETAIL:  jsonpath array subscript is not a singleton numeric value
+ERROR:  jsonpath array subscript is not a single numeric value
 select jsonb_path_query('1', 'strict $[1]', silent => true);
  jsonb_path_query 
 ------------------
@@ -437,8 +425,7 @@ select jsonb_path_query('[1,2,3]', 'lax $[*]');
 (3 rows)
 
 select jsonb_path_query('[1,2,3]', 'strict $[*].a');
-ERROR:  SQL/JSON member not found
-DETAIL:  jsonpath member accessor can only be applied to an object
+ERROR:  jsonpath member accessor can only be applied to an object
 select jsonb_path_query('[1,2,3]', 'strict $[*].a', silent => true);
  jsonb_path_query 
 ------------------
@@ -455,8 +442,7 @@ select jsonb_path_query('[]', '$[last ? (exists(last))]');
 (0 rows)
 
 select jsonb_path_query('[]', 'strict $[last]');
-ERROR:  invalid SQL/JSON subscript
-DETAIL:  jsonpath array subscript is out of bounds
+ERROR:  jsonpath array subscript is out of bounds
 select jsonb_path_query('[]', 'strict $[last]', silent => true);
  jsonb_path_query 
 ------------------
@@ -487,8 +473,7 @@ select jsonb_path_query('[1,2,3]', '$[last ? (@.type() == "number")]');
 (1 row)
 
 select jsonb_path_query('[1,2,3]', '$[last ? (@.type() == "string")]');
-ERROR:  invalid SQL/JSON subscript
-DETAIL:  jsonpath array subscript is not a singleton numeric value
+ERROR:  jsonpath array subscript is not a single numeric value
 select jsonb_path_query('[1,2,3]', '$[last ? (@.type() == "string")]', silent => true);
  jsonb_path_query 
 ------------------
@@ -501,11 +486,13 @@ select * from jsonb_path_query('{"a": 10}', '$');
 (1 row)
 
 select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)');
-ERROR:  cannot find jsonpath variable 'value'
+ERROR:  cannot find jsonpath variable "value"
 select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)', '1');
-ERROR:  jsonb containing jsonpath variables is not an object
+ERROR:  "vars" argument is not an object
+DETAIL:  Jsonpath parameters should be encoded as key-value pairs of "vars" object.
 select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)', '[{"value" : 13}]');
-ERROR:  jsonb containing jsonpath variables is not an object
+ERROR:  "vars" argument is not an object
+DETAIL:  Jsonpath parameters should be encoded as key-value pairs of "vars" object.
 select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)', '{"value" : 13}');
  jsonb_path_query 
 ------------------
@@ -1067,17 +1054,13 @@ ERROR:  division by zero
 select jsonb_path_query('0', '-(3 + 1 % $)');
 ERROR:  division by zero
 select jsonb_path_query('1', '$ + "2"');
-ERROR:  singleton SQL/JSON item required
-DETAIL:  right operand of binary jsonpath operator + is not a singleton numeric value
+ERROR:  right operand of jsonpath operator + is not a single numeric value
 select jsonb_path_query('[1, 2]', '3 * $');
-ERROR:  singleton SQL/JSON item required
-DETAIL:  right operand of binary jsonpath operator * is not a singleton numeric value
+ERROR:  right operand of jsonpath operator * is not a single numeric value
 select jsonb_path_query('"a"', '-$');
-ERROR:  SQL/JSON number not found
-DETAIL:  operand of unary jsonpath operator - is not a numeric value
+ERROR:  operand of unary jsonpath operator - is not a numeric value
 select jsonb_path_query('[1,"2",3]', '+$');
-ERROR:  SQL/JSON number not found
-DETAIL:  operand of unary jsonpath operator + is not a numeric value
+ERROR:  operand of unary jsonpath operator + is not a numeric value
 select jsonb_path_query('1', '$ + "2"', silent => true);
  jsonb_path_query 
 ------------------
@@ -1146,8 +1129,7 @@ select jsonb_path_query('{"a": [2, 3, 4]}', 'lax -$.a');
 
 -- should fail
 select jsonb_path_query('{"a": [1, 2]}', 'lax $.a * 3');
-ERROR:  singleton SQL/JSON item required
-DETAIL:  left operand of binary jsonpath operator * is not a singleton numeric value
+ERROR:  left operand of jsonpath operator * is not a single numeric value
 select jsonb_path_query('{"a": [1, 2]}', 'lax $.a * 3', silent => true);
  jsonb_path_query 
 ------------------
@@ -1346,8 +1328,7 @@ select jsonb_path_query('[1, 2, 3]', 'strict ($[*].a > 3).type()');
 (1 row)
 
 select jsonb_path_query('[1,null,true,"11",[],[1],[1,2,3],{},{"a":1,"b":2}]', 'strict $[*].size()');
-ERROR:  SQL/JSON array not found
-DETAIL:  jsonpath item method .size() can only be applied to an array
+ERROR:  jsonpath item method .size() can only be applied to an array
 select jsonb_path_query('[1,null,true,"11",[],[1],[1,2,3],{},{"a":1,"b":2}]', 'strict $[*].size()', silent => true);
  jsonb_path_query 
 ------------------
@@ -1418,8 +1399,7 @@ select jsonb_path_query('[0, 1, -2, -3.4, 5.6]', '$[*].ceiling().abs().type()');
 (5 rows)
 
 select jsonb_path_query('[{},1]', '$[*].keyvalue()');
-ERROR:  SQL/JSON object not found
-DETAIL:  jsonpath item method .keyvalue() can only be applied to an object
+ERROR:  jsonpath item method .keyvalue() can only be applied to an object
 select jsonb_path_query('[{},1]', '$[*].keyvalue()', silent => true);
  jsonb_path_query 
 ------------------
@@ -1447,8 +1427,7 @@ select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', '$[*].ke
 (3 rows)
 
 select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', 'strict $.keyvalue()');
-ERROR:  SQL/JSON object not found
-DETAIL:  jsonpath item method .keyvalue() can only be applied to an object
+ERROR:  jsonpath item method .keyvalue() can only be applied to an object
 select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', 'lax $.keyvalue()');
                jsonb_path_query                
 -----------------------------------------------
@@ -1458,8 +1437,7 @@ select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', 'lax $.k
 (3 rows)
 
 select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', 'strict $.keyvalue().a');
-ERROR:  SQL/JSON object not found
-DETAIL:  jsonpath item method .keyvalue() can only be applied to an object
+ERROR:  jsonpath item method .keyvalue() can only be applied to an object
 select jsonb '{"a": 1, "b": [1, 2]}' @? 'lax $.keyvalue()';
  ?column? 
 ----------
@@ -1473,11 +1451,9 @@ select jsonb '{"a": 1, "b": [1, 2]}' @? 'lax $.keyvalue().key';
 (1 row)
 
 select jsonb_path_query('null', '$.double()');
-ERROR:  non-numeric SQL/JSON item
-DETAIL:  jsonpath item method .double() can only be applied to a string or numeric value
+ERROR:  jsonpath item method .double() can only be applied to a string or numeric value
 select jsonb_path_query('true', '$.double()');
-ERROR:  non-numeric SQL/JSON item
-DETAIL:  jsonpath item method .double() can only be applied to a string or numeric value
+ERROR:  jsonpath item method .double() can only be applied to a string or numeric value
 select jsonb_path_query('null', '$.double()', silent => true);
  jsonb_path_query 
 ------------------
@@ -1494,11 +1470,9 @@ select jsonb_path_query('[]', '$.double()');
 (0 rows)
 
 select jsonb_path_query('[]', 'strict $.double()');
-ERROR:  non-numeric SQL/JSON item
-DETAIL:  jsonpath item method .double() can only be applied to a string or numeric value
+ERROR:  jsonpath item method .double() can only be applied to a string or numeric value
 select jsonb_path_query('{}', '$.double()');
-ERROR:  non-numeric SQL/JSON item
-DETAIL:  jsonpath item method .double() can only be applied to a string or numeric value
+ERROR:  jsonpath item method .double() can only be applied to a string or numeric value
 select jsonb_path_query('[]', 'strict $.double()', silent => true);
  jsonb_path_query 
 ------------------
@@ -1522,8 +1496,7 @@ select jsonb_path_query('"1.23"', '$.double()');
 (1 row)
 
 select jsonb_path_query('"1.23aaa"', '$.double()');
-ERROR:  non-numeric SQL/JSON item
-DETAIL:  jsonpath item method .double() can only be applied to a numeric value
+ERROR:  jsonpath item method .double() can only be applied to a numeric value
 select jsonb_path_query('"nan"', '$.double()');
  jsonb_path_query 
 ------------------
@@ -1537,11 +1510,9 @@ select jsonb_path_query('"NaN"', '$.double()');
 (1 row)
 
 select jsonb_path_query('"inf"', '$.double()');
-ERROR:  non-numeric SQL/JSON item
-DETAIL:  jsonpath item method .double() can only be applied to a numeric value
+ERROR:  jsonpath item method .double() can only be applied to a numeric value
 select jsonb_path_query('"-inf"', '$.double()');
-ERROR:  non-numeric SQL/JSON item
-DETAIL:  jsonpath item method .double() can only be applied to a numeric value
+ERROR:  jsonpath item method .double() can only be applied to a numeric value
 select jsonb_path_query('"inf"', '$.double()', silent => true);
  jsonb_path_query 
 ------------------
@@ -1553,14 +1524,11 @@ select jsonb_path_query('"-inf"', '$.double()', silent => true);
 (0 rows)
 
 select jsonb_path_query('{}', '$.abs()');
-ERROR:  non-numeric SQL/JSON item
-DETAIL:  jsonpath item method .abs() can only be applied to a numeric value
+ERROR:  jsonpath item method .abs() can only be applied to a numeric value
 select jsonb_path_query('true', '$.floor()');
-ERROR:  non-numeric SQL/JSON item
-DETAIL:  jsonpath item method .floor() can only be applied to a numeric value
+ERROR:  jsonpath item method .floor() can only be applied to a numeric value
 select jsonb_path_query('"1.2"', '$.ceiling()');
-ERROR:  non-numeric SQL/JSON item
-DETAIL:  jsonpath item method .ceiling() can only be applied to a numeric value
+ERROR:  jsonpath item method .ceiling() can only be applied to a numeric value
 select jsonb_path_query('{}', '$.abs()', silent => true);
  jsonb_path_query 
 ------------------
@@ -1668,8 +1636,7 @@ SELECT jsonb_path_query('[{"a": 1}, {"a": 2}]', '$[*] ? (@.a > 10)');
 (0 rows)
 
 SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}, {}]', 'strict $[*].a');
-ERROR:  SQL/JSON member not found
-DETAIL:  JSON object does not contain key "a"
+ERROR:  JSON object does not contain key "a"
 SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}]', '$[*].a');
  jsonb_path_query_array 
 ------------------------
@@ -1701,8 +1668,7 @@ SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*].
 (1 row)
 
 SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}, {}]', 'strict $[*].a');
-ERROR:  SQL/JSON member not found
-DETAIL:  JSON object does not contain key "a"
+ERROR:  JSON object does not contain key "a"
 SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}, {}]', 'strict $[*].a', silent => true);
  jsonb_path_query_first 
 ------------------------
@@ -1794,23 +1760,17 @@ SELECT jsonb_path_match('1', '$', silent => true);
 (1 row)
 
 SELECT jsonb_path_match('1', '$', silent => false);
-ERROR:  singleton SQL/JSON item required
-DETAIL:  expression should return a singleton boolean
+ERROR:  single boolean result is expected
 SELECT jsonb_path_match('"a"', '$', silent => false);
-ERROR:  singleton SQL/JSON item required
-DETAIL:  expression should return a singleton boolean
+ERROR:  single boolean result is expected
 SELECT jsonb_path_match('{}', '$', silent => false);
-ERROR:  singleton SQL/JSON item required
-DETAIL:  expression should return a singleton boolean
+ERROR:  single boolean result is expected
 SELECT jsonb_path_match('[true]', '$', silent => false);
-ERROR:  singleton SQL/JSON item required
-DETAIL:  expression should return a singleton boolean
+ERROR:  single boolean result is expected
 SELECT jsonb_path_match('{}', 'lax $.a', silent => false);
-ERROR:  singleton SQL/JSON item required
-DETAIL:  expression should return a singleton boolean
+ERROR:  single boolean result is expected
 SELECT jsonb_path_match('{}', 'strict $.a', silent => false);
-ERROR:  SQL/JSON member not found
-DETAIL:  JSON object does not contain key "a"
+ERROR:  JSON object does not contain key "a"
 SELECT jsonb_path_match('{}', 'strict $.a', silent => true);
  jsonb_path_match 
 ------------------
@@ -1818,8 +1778,7 @@ SELECT jsonb_path_match('{}', 'strict $.a', silent => true);
 (1 row)
 
 SELECT jsonb_path_match('[true, true]', '$[*]', silent => false);
-ERROR:  singleton SQL/JSON item required
-DETAIL:  expression should return a singleton boolean
+ERROR:  single boolean result is expected
 SELECT jsonb '[{"a": 1}, {"a": 2}]' @@ '$[*].a > 1';
  ?column? 
 ----------
index a99643f902736d34519c425bff5da00d84ffb5e9..c7bd26887c2d57f980abdf9cfff7c9b2103c908d 100644 (file)
@@ -454,10 +454,10 @@ select '$ ? (@ like_regex "pattern" flag "xsms")'::jsonpath;
 (1 row)
 
 select '$ ? (@ like_regex "pattern" flag "a")'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  invalid input syntax for type jsonpath
 LINE 1: select '$ ? (@ like_regex "pattern" flag "a")'::jsonpath;
                ^
-DETAIL:  unrecognized flag of LIKE_REGEX predicate at or near """
+DETAIL:  unrecognized flag character "a" in LIKE_REGEX predicate
 select '$ < 1'::jsonpath;
  jsonpath 
 ----------
@@ -547,20 +547,17 @@ select '$ ? (@.a < +1)'::jsonpath;
 (1 row)
 
 select '$ ? (@.a < .1)'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '$ ? (@.a < .1)'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '$ ? (@.a < -.1)'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '$ ? (@.a < -.1)'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '$ ? (@.a < +.1)'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '$ ? (@.a < +.1)'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '$ ? (@.a < 0.1)'::jsonpath;
     jsonpath     
 -----------------
@@ -616,20 +613,17 @@ select '$ ? (@.a < +1e1)'::jsonpath;
 (1 row)
 
 select '$ ? (@.a < .1e1)'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '$ ? (@.a < .1e1)'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '$ ? (@.a < -.1e1)'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '$ ? (@.a < -.1e1)'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '$ ? (@.a < +.1e1)'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '$ ? (@.a < +.1e1)'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '$ ? (@.a < 0.1e1)'::jsonpath;
    jsonpath    
 ---------------
@@ -685,20 +679,17 @@ select '$ ? (@.a < +1e-1)'::jsonpath;
 (1 row)
 
 select '$ ? (@.a < .1e-1)'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '$ ? (@.a < .1e-1)'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '$ ? (@.a < -.1e-1)'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '$ ? (@.a < -.1e-1)'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '$ ? (@.a < +.1e-1)'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '$ ? (@.a < +.1e-1)'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '$ ? (@.a < 0.1e-1)'::jsonpath;
      jsonpath     
 ------------------
@@ -754,20 +745,17 @@ select '$ ? (@.a < +1e+1)'::jsonpath;
 (1 row)
 
 select '$ ? (@.a < .1e+1)'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '$ ? (@.a < .1e+1)'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '$ ? (@.a < -.1e+1)'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '$ ? (@.a < -.1e+1)'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '$ ? (@.a < +.1e+1)'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '$ ? (@.a < +.1e+1)'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '$ ? (@.a < 0.1e+1)'::jsonpath;
    jsonpath    
 ---------------
@@ -811,10 +799,9 @@ select '0'::jsonpath;
 (1 row)
 
 select '00'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected IDENT_P at end of jsonpath input
 LINE 1: select '00'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected IDENT_P at end of input
 select '0.0'::jsonpath;
  jsonpath 
 ----------
@@ -870,10 +857,9 @@ select '0.0010e+2'::jsonpath;
 (1 row)
 
 select '1e'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  invalid floating point number at or near "1e" of jsonpath input
 LINE 1: select '1e'::jsonpath;
                ^
-DETAIL:  Floating point number is invalid at or near "1e"
 select '1.e'::jsonpath;
  jsonpath 
 ----------
@@ -881,10 +867,9 @@ select '1.e'::jsonpath;
 (1 row)
 
 select '1.2e'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  invalid floating point number at or near "1.2e" of jsonpath input
 LINE 1: select '1.2e'::jsonpath;
                ^
-DETAIL:  Floating point number is invalid at or near "1.2e"
 select '1.2.e'::jsonpath;
  jsonpath 
 ----------
@@ -940,22 +925,18 @@ select '(1.2).e3'::jsonpath;
 (1 row)
 
 select '1..e'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '1..e'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '1..e3'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected '.' at or near "." of jsonpath input
 LINE 1: select '1..e3'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected '.' at or near "."
 select '(1.).e'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected ')' at or near ")" of jsonpath input
 LINE 1: select '(1.).e'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected ')' at or near ")"
 select '(1.).e3'::jsonpath;
-ERROR:  bad jsonpath representation
+ERROR:  syntax error, unexpected ')' at or near ")" of jsonpath input
 LINE 1: select '(1.).e3'::jsonpath;
                ^
-DETAIL:  syntax error, unexpected ')' at or near ")"
index 6d828d17248671958f433abc6f364d7ac942be85..8db6e47dbbc2303908f76d5afa10b54ccc7b2f2c 100644 (file)
@@ -2,20 +2,17 @@
 -- checks for double-quoted values
 -- basic unicode input
 SELECT '"\u"'::jsonpath;               -- ERROR, incomplete escape
-ERROR:  bad jsonpath representation
+ERROR:  invalid unicode sequence at or near "\u" of jsonpath input
 LINE 1: SELECT '"\u"'::jsonpath;
                ^
-DETAIL:  Unicode sequence is invalid at or near "\u"
 SELECT '"\u00"'::jsonpath;             -- ERROR, incomplete escape
-ERROR:  bad jsonpath representation
+ERROR:  invalid unicode sequence at or near "\u00" of jsonpath input
 LINE 1: SELECT '"\u00"'::jsonpath;
                ^
-DETAIL:  Unicode sequence is invalid at or near "\u00"
 SELECT '"\u000g"'::jsonpath;   -- ERROR, g is not a hex digit
-ERROR:  bad jsonpath representation
+ERROR:  invalid unicode sequence at or near "\u000" of jsonpath input
 LINE 1: SELECT '"\u000g"'::jsonpath;
                ^
-DETAIL:  Unicode sequence is invalid at or near "\u000"
 SELECT '"\u0000"'::jsonpath;   -- OK, legal escape
 ERROR:  unsupported Unicode escape sequence
 LINE 1: SELECT '"\u0000"'::jsonpath;
@@ -165,20 +162,17 @@ DETAIL:  \u0000 cannot be converted to text.
 -- checks for quoted key names
 -- basic unicode input
 SELECT '$."\u"'::jsonpath;             -- ERROR, incomplete escape
-ERROR:  bad jsonpath representation
+ERROR:  invalid unicode sequence at or near "\u" of jsonpath input
 LINE 1: SELECT '$."\u"'::jsonpath;
                ^
-DETAIL:  Unicode sequence is invalid at or near "\u"
 SELECT '$."\u00"'::jsonpath;   -- ERROR, incomplete escape
-ERROR:  bad jsonpath representation
+ERROR:  invalid unicode sequence at or near "\u00" of jsonpath input
 LINE 1: SELECT '$."\u00"'::jsonpath;
                ^
-DETAIL:  Unicode sequence is invalid at or near "\u00"
 SELECT '$."\u000g"'::jsonpath; -- ERROR, g is not a hex digit
-ERROR:  bad jsonpath representation
+ERROR:  invalid unicode sequence at or near "\u000" of jsonpath input
 LINE 1: SELECT '$."\u000g"'::jsonpath;
                ^
-DETAIL:  Unicode sequence is invalid at or near "\u000"
 SELECT '$."\u0000"'::jsonpath; -- OK, legal escape
 ERROR:  unsupported Unicode escape sequence
 LINE 1: SELECT '$."\u0000"'::jsonpath;
index 04179a8df79589e72a41e0847056e7776800a393..a3a44e182ab9dc5781fa59d63918fe31e82f3e77 100644 (file)
@@ -2,17 +2,17 @@
 -- checks for double-quoted values
 -- basic unicode input
 SELECT '"\u"'::jsonpath;               -- ERROR, incomplete escape
-ERROR:  bad jsonpath representation
+ERROR:  invalid input syntax for type jsonpath
 LINE 1: SELECT '"\u"'::jsonpath;
                ^
 DETAIL:  Unicode sequence is invalid at or near "\u"
 SELECT '"\u00"'::jsonpath;             -- ERROR, incomplete escape
-ERROR:  bad jsonpath representation
+ERROR:  invalid input syntax for type jsonpath
 LINE 1: SELECT '"\u00"'::jsonpath;
                ^
 DETAIL:  Unicode sequence is invalid at or near "\u00"
 SELECT '"\u000g"'::jsonpath;   -- ERROR, g is not a hex digit
-ERROR:  bad jsonpath representation
+ERROR:  invalid input syntax for type jsonpath
 LINE 1: SELECT '"\u000g"'::jsonpath;
                ^
 DETAIL:  Unicode sequence is invalid at or near "\u000"
@@ -156,17 +156,17 @@ DETAIL:  \u0000 cannot be converted to text.
 -- checks for quoted key names
 -- basic unicode input
 SELECT '$."\u"'::jsonpath;             -- ERROR, incomplete escape
-ERROR:  bad jsonpath representation
+ERROR:  invalid input syntax for type jsonpath
 LINE 1: SELECT '$."\u"'::jsonpath;
                ^
 DETAIL:  Unicode sequence is invalid at or near "\u"
 SELECT '$."\u00"'::jsonpath;   -- ERROR, incomplete escape
-ERROR:  bad jsonpath representation
+ERROR:  invalid input syntax for type jsonpath
 LINE 1: SELECT '$."\u00"'::jsonpath;
                ^
 DETAIL:  Unicode sequence is invalid at or near "\u00"
 SELECT '$."\u000g"'::jsonpath; -- ERROR, g is not a hex digit
-ERROR:  bad jsonpath representation
+ERROR:  invalid input syntax for type jsonpath
 LINE 1: SELECT '$."\u000g"'::jsonpath;
                ^
 DETAIL:  Unicode sequence is invalid at or near "\u000"