mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-07 19:47:50 +08:00
Improve error reporting in jsonpath
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
This commit is contained in:
parent
b84dbc8eb8
commit
29ceacc3f9
@ -77,16 +77,6 @@
|
||||
#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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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 */
|
||||
}
|
||||
|
||||
|
@ -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?
|
||||
----------
|
||||
|
@ -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 ")"
|
||||
|
@ -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;
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user