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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy