#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.
*/
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();
}
{
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;
}
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)
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;
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:
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;
{
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;
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)
{
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;
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;
}
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)
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;
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);
}
!(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))
{
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)
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));
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;
{
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_OBJECT),
- errmsg("cannot find jsonpath variable '%s'",
+ errmsg("cannot find jsonpath variable \"%s\"",
pnstrdup(varName, varNameLength))));
}
!(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),
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;
}
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;
}
}
<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 */
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;
<xc>\* { }
-<xc><<EOF>> { yyerror(NULL, "Unexpected end of comment"); }
+<xc><<EOF>> { yyerror(NULL, "unexpected end of comment"); }
\&\& { return AND_P; }
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);
{
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)));
}
}
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 */
}
(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
------------------
(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?
----------
(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
-------------------
(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
------------------
(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
------------------
(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
------------------
(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
------------------
(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
------------------
(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
------------------
(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
------------------
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
------------------
-- 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
------------------
(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
------------------
(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
------------------
(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
-----------------------------------------------
(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?
----------
(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
------------------
(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
------------------
(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
------------------
(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
------------------
(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
------------------
(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
------------------------
(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
------------------------
(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
------------------
(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?
----------
(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
----------
(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
-----------------
(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
---------------
(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
------------------
(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
---------------
(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
----------
(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
----------
(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
----------
(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 ")"
-- 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;
-- 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;
-- 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"
-- 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"