Improve a couple of sql/json error messages
authorAndrew Dunstan <[email protected]>
Thu, 14 Apr 2022 14:26:29 +0000 (10:26 -0400)
committerAndrew Dunstan <[email protected]>
Thu, 14 Apr 2022 14:26:29 +0000 (10:26 -0400)
Fix the grammar in two, and add a hint to one.

src/backend/parser/parse_expr.c
src/test/regress/expected/json_sqljson.out

index 2f8c5e63fe8297aa9736e15ed725d3e1a58379f5..5fc0b1763c808d958d82cf15a275bd3551d5f3e3 100644 (file)
@@ -4456,7 +4456,7 @@ transformJsonFuncExpr(ParseState *pstate, JsonFuncExpr *func)
                        if (jsexpr->returning->typid != JSONBOID)
                                ereport(ERROR,
                                                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                                errmsg("JSON_TABLE() is not yet implemented for json type"),
+                                                errmsg("JSON_TABLE() is not yet implemented for the json type"),
                                                 errhint("Try casting the argument to jsonb"),
                                                 parser_errposition(pstate, func->location)));
 
@@ -4466,7 +4466,8 @@ transformJsonFuncExpr(ParseState *pstate, JsonFuncExpr *func)
        if (exprType(contextItemExpr) != JSONBOID)
                ereport(ERROR,
                                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                errmsg("%s() is not yet implemented for json type", func_name),
+                                errmsg("%s() is not yet implemented for the json type", func_name),
+                                errhint("Try casting the argument to jsonb"),
                                 parser_errposition(pstate, func->location)));
 
        return (Node *) jsexpr;
index 5c4dfa5f7c587b5c58475d1818dbc5394d625366..995f2674046dfa3051c281e0ef8ba4920eccbf88 100644 (file)
@@ -1,21 +1,24 @@
 -- JSON_EXISTS
 SELECT JSON_EXISTS(NULL FORMAT JSON, '$');
-ERROR:  JSON_EXISTS() is not yet implemented for json type
+ERROR:  JSON_EXISTS() is not yet implemented for the json type
 LINE 1: SELECT JSON_EXISTS(NULL FORMAT JSON, '$');
                ^
+HINT:  Try casting the argument to jsonb
 -- JSON_VALUE
 SELECT JSON_VALUE(NULL FORMAT JSON, '$');
-ERROR:  JSON_VALUE() is not yet implemented for json type
+ERROR:  JSON_VALUE() is not yet implemented for the json type
 LINE 1: SELECT JSON_VALUE(NULL FORMAT JSON, '$');
                ^
+HINT:  Try casting the argument to jsonb
 -- JSON_QUERY
 SELECT JSON_QUERY(NULL FORMAT JSON, '$');
-ERROR:  JSON_QUERY() is not yet implemented for json type
+ERROR:  JSON_QUERY() is not yet implemented for the json type
 LINE 1: SELECT JSON_QUERY(NULL FORMAT JSON, '$');
                ^
+HINT:  Try casting the argument to jsonb
 -- JSON_TABLE
 SELECT * FROM JSON_TABLE(NULL FORMAT JSON, '$' COLUMNS (foo text));
-ERROR:  JSON_TABLE() is not yet implemented for json type
+ERROR:  JSON_TABLE() is not yet implemented for the json type
 LINE 1: SELECT * FROM JSON_TABLE(NULL FORMAT JSON, '$' COLUMNS (foo ...
                                  ^
 HINT:  Try casting the argument to jsonb