Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 62db6a7

Browse files
author
Nikita Glukhov
committed
Remove COERCE_INTERNAL_CAST in IS JSON
1 parent 98a30c9 commit 62db6a7

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/backend/parser/parse_expr.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4353,15 +4353,24 @@ transformJsonArrayConstructor(ParseState *pstate, JsonArrayConstructor *ctor)
43534353
static Node *
43544354
transformJsonIsPredicate(ParseState *pstate, JsonIsPredicate *pred)
43554355
{
4356-
Node *expr = transformExprRecurse(pstate, pred->expr);
4356+
Node *raw_expr = transformExprRecurse(pstate, pred->expr);
4357+
Node *expr = raw_expr;
43574358
Oid exprtype = exprType(expr);
43584359

43594360
/* prepare input document */
43604361
if (exprtype == BYTEAOID)
43614362
{
4363+
JsonValueExpr *jve;
4364+
4365+
expr = makeCaseTestExpr(raw_expr);
43624366
expr = makeJsonByteaToTextConversion(expr, pred->format,
43634367
exprLocation(expr));
43644368
exprtype = TEXTOID;
4369+
4370+
jve = makeJsonValueExpr((Expr *) raw_expr, pred->format);
4371+
4372+
jve->formatted_expr = (Expr *) expr;
4373+
expr = (Node *) jve;
43654374
}
43664375
else
43674376
{
@@ -4386,8 +4395,6 @@ transformJsonIsPredicate(ParseState *pstate, JsonIsPredicate *pred)
43864395
errmsg("cannot use JSON FORMAT ENCODING clause for non-bytea input types")));
43874396
}
43884397

4389-
expr = (Node *) makeJsonValueExpr((Expr *) expr, pred->format);
4390-
43914398
/* make resulting expression */
43924399
if (exprtype != TEXTOID && exprtype != JSONOID && exprtype != JSONBOID)
43934400
ereport(ERROR,

0 commit comments

Comments
 (0)