Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wRYHs-002STM-19 for pgsql-bugs@arkaria.postgresql.org; Mon, 25 May 2026 16:36:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wRYHp-001evE-0D for pgsql-bugs@arkaria.postgresql.org; Mon, 25 May 2026 16:36:18 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wRYHo-001ev6-2D for pgsql-bugs@lists.postgresql.org; Mon, 25 May 2026 16:36:17 +0000 Received: from mail-ua1-x929.google.com ([2607:f8b0:4864:20::929]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wRYHn-00000001Nbp-02fh for pgsql-bugs@lists.postgresql.org; Mon, 25 May 2026 16:36:17 +0000 Received: by mail-ua1-x929.google.com with SMTP id a1e0cc1a2514c-95699e8e26aso3187338241.0 for ; Mon, 25 May 2026 09:36:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779726973; cv=none; d=google.com; s=arc-20240605; b=Aw+B7p+JFnM9T0XcfukWS4gskkMbn0787Ua9O75sUsuthCvn/GJGSJinZO382c4LKs 56033SdtRYhk+HRcQvKQ+F80X+kcER2s9rh//L203q/z0/TOPEnvl30BIhMhalGW2D55 cRaOsiokP//pcuqfuUDkkXyUBMFB3iYQfUX69x2u5ueMAZi+t2qdo+vTAFkVeT7ljKWz 6KvAybVyjLoKiUnR+nSN3xec5qZl1wuNzS67zA1vCtPn+UiCSYqhi9LwOiy6cpbdu/fB b2bqWemS9WtlHB3V3s5IqHN8DIIGtcjCobry/nl/1OpfSh0q8o1TKrbx75kHggxLcH0j gf1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=D4AelAaTYFRKzwb2PJqakvnFrkyRvH+tFuKN/Kpt72E=; fh=wU9bnG2f84og38aK5UqOiGnDtMdJ8o9DY1KTaol3f5A=; b=MnSAoEaSXT7LRqCKyuoNMhQVpWLWxqnOOGHHzGIWEl3t7Tz2sugv6lQbvd4pnxfzMI Wm+HOQIhWHssvTbq4sHHZVEwePqfcG+8BtrSFsrguJ8/Yb9IXZncTDAXaEZ52TvnhJfn abZxt2aV7hmwOYrz0aYtN1YlK5DhuiZPVZT3oSgkLIrZDFT0VgxL2/DAWC+6KbVOmJol 0frxw3qIH4VQFT/sUTXzqax6xALRBA4q/UYrmb3yXrAWLEUMPFqdBgxPSk/Zjo7VGY1F xiTUKwzEtYekhlNVSOEc3qsPomBPje4gZVfKh1kOVGtf7Z15+So2xlC4XOSEOMC6ks3J Fnqg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779726973; x=1780331773; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=D4AelAaTYFRKzwb2PJqakvnFrkyRvH+tFuKN/Kpt72E=; b=TLpHu5zdEhxYlSh3XuTpEBx8UArvdI/RYncqQYImbMhfH4K2BBIvh4Q7XC4ZxFlgZ5 JralwWRwdJtNbJGvC7TkCzCXtlTMuaeQxMBWc8elNtI2D60fegfgebvkv2/SNzS2tgte xpxQJN78aWO/dAFEQFIRXaedbfySAp3j9C2RYuwLeakYxkjbv4ae1WI6B39mjkfmDr9Z tWdykOiVOL8YMhEJgEFsqw+dERzuu4Vg3phMt4ow/Zxlv3Xm57ft+oJ0C55sd+RJCiur QmYVUeWCKR7vT/x4FgryHH0AhGfJYbI4m4CUcU+JSaq63sV34gwEZgN+nOYZ48lKBYsH QS9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779726973; x=1780331773; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=D4AelAaTYFRKzwb2PJqakvnFrkyRvH+tFuKN/Kpt72E=; b=MAoZyb+gmKhGnvzs91AQ4t+ChSt7XZ6TqDBUjdFYUwGhYAuBapM5zyOLV1O5M/Pcbj XegMfZCe3gRyO5GvOu99BtqRbOrbwTTaC0ard5GXNolBIZsa1+DkM8kCNNl+B/JISCKK HzvbEvJc7os8+OaTigARY/FDocAxrNDuSomPGbb6+dEIOreTD5CiOjVn4x9rJ7llbDg8 w2r2URjVMA9ZjVLkJ7677cbJ5TtZyonC+kYoCZAX//59iBBOlxZ3k3HkiTP817haM8Fq EbEKwv5+m/CFXh05XmEcGXARsKXDo9pZ1gR5aEJGmbgiH/EhvqfPwCSljP9FblfdpTa6 rZiA== X-Forwarded-Encrypted: i=1; AFNElJ/WeVP+5ea1T0qxqgxt1Jar82EwLLv9akBZsEinmYN4VdoSyghEGzQjBtoKGgbiRSjLDgBd78/pej2X@lists.postgresql.org X-Gm-Message-State: AOJu0Yx9e+/y4irDUDyJZEBFTpdpTMoGRD3niiP+CgIvH1vnvnCn4Esc 5eQa63ByDBzqm8Td98gZT7wE7lEYBttRs1S6NWHn1z1Y39glXWtptFGAz4006ou7ty4fSaQcWc2 hFrYgfBEUGGSg8CIeCZIlBfxtoJ+rhUU= X-Gm-Gg: Acq92OEFHl7UtKMqixAUSfgWZgUcGyrzaG4uuiaSoehpAcCSx/BRLJ9Zn7oMgex7jB+ rAefBTIZHcJPCrleMRiPSm8rd/GnyVJBCS1X74mPWEOOsQKVqmG1UsThCYxxl2sjlYJn1mYn/gK 75F21g/l0SCjoB6rrCJJFhPLK/6w8IchQAWKVKnjcQP9T861h8GF0uOKESekV6/fhTMhtinwZLI 0LmrwfLZCuQk7jOecPDFUSO48n2pBgeHMJfSXpz47MCuT4pe1NUGAZxxmAl8TnK2WQc/WNpgzUf 34Zl0FNyuH9oI7B+Ii7bt19asrVMqg0yIDkWlHmiJJNxU7Ro+MRkJblnLwhIL8MX18HPEjx46LJ LYAJQiqfMtuScdlMknAgpTCVC/RY= X-Received: by 2002:a05:6102:6894:b0:631:28c1:155c with SMTP id ada2fe7eead31-67c7fff525dmr6828462137.7.1779726972728; Mon, 25 May 2026 09:36:12 -0700 (PDT) MIME-Version: 1.0 References: <19491-7aafc221ec63f288@postgresql.org> In-Reply-To: From: Srinath Reddy Sadipiralla Date: Mon, 25 May 2026 22:06:01 +0530 X-Gm-Features: AVHnY4IsbdDT5sw6726cflW1uVuEl-bTthk6U419OKuvptkuVq6saKd08wB4lyY Message-ID: Subject: Re: BUG #19491: Segmentation fault triggered by IS NULL To: Ayush Tiwari Cc: 798604270@qq.com, pgsql-bugs@lists.postgresql.org, =?UTF-8?Q?=C3=81lvaro_Herrera?= Content-Type: multipart/alternative; boundary="00000000000001b9690652a6fa78" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000001b9690652a6fa78 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Mon, May 25, 2026 at 8:43=E2=80=AFPM Ayush Tiwari wrote: > Hi, > > On Mon, 25 May 2026 at 18:57, PG Bug reporting form < > noreply@postgresql.org> wrote: > >> The following bug has been logged on the website: >> >> Bug reference: 19491 >> Logged by: Chi Zhang >> Email address: 798604270@qq.com >> PostgreSQL version: 18.4 >> Operating system: Ubuntu 24.04 >> Description: >> >> Hi, >> >> I found that the following test case triggers a segmentation fault. >> >> ``` >> CREATE SCHEMA IF NOT EXISTS poc; >> >> CREATE FUNCTION poc.mystring_in(cstring) >> RETURNS poc.mystring >> AS 'textin' LANGUAGE internal IMMUTABLE STRICT; >> >> CREATE FUNCTION poc.mystring_out(poc.mystring) >> RETURNS cstring >> AS 'textout' LANGUAGE internal IMMUTABLE STRICT; >> >> CREATE TYPE poc.mystring ( >> INPUT =3D poc.mystring_in, >> OUTPUT =3D poc.mystring_out, >> LIKE =3D text, >> CATEGORY =3D 'S' >> ); >> >> SELECT '{"a":1}'::poc.mystring IS JSON; >> >> DROP SCHEMA IF EXISTS poc CASCADE; >> ``` >> >> This is the output: >> >> ``` >> sqlancer=3D# CREATE SCHEMA IF NOT EXISTS poc; >> CREATE SCHEMA >> sqlancer=3D# CREATE FUNCTION poc.mystring_in(cstring) >> RETURNS poc.mystring >> AS 'textin' LANGUAGE internal IMMUTABLE STRICT; >> NOTICE: type "poc.mystring" is not yet defined >> DETAIL: Creating a shell type definition. >> CREATE FUNCTION >> sqlancer=3D# CREATE FUNCTION poc.mystring_out(poc.mystring) >> RETURNS cstring >> AS 'textout' LANGUAGE internal IMMUTABLE STRICT; >> NOTICE: argument type poc.mystring is only a shell >> LINE 1: CREATE FUNCTION poc.mystring_out(poc.mystring) >> ^ >> CREATE FUNCTION >> sqlancer=3D# CREATE TYPE poc.mystring ( >> INPUT =3D poc.mystring_in, >> OUTPUT =3D poc.mystring_out, >> LIKE =3D text, >> CATEGORY =3D 'S' >> ); >> CREATE TYPE >> sqlancer=3D# SELECT '{"a":1}'::poc.mystring IS JSON; >> server closed the connection unexpectedly >> This probably means the server terminated abnormally >> before or while processing the request. >> The connection to the server was lost. Attempting reset: Succeeded. >> ``` >> > > Thanks for the report. I was able to reproduce this on HEAD with your SQ= L. > The crash is in the executor while building expression state for the IS > JSON > predicate -- ExecInitExprRec() ends up being called with a NULL node: > > #0 ExecInitExprRec(node=3D0x0, ...) execExpr.c:966 > #1 ExecInitExprRec() execExpr.c:2507 > #2 ExecBuildProjectionInfo(...) execExpr.c:511 > > The NULL comes from transformJsonParseArg(). For UNKNOWN or > string-category > input types it implicitly coerces to text via coerce_to_target_type() and > then sets exprtype to TEXTOID without checking if the coercion succeeded= . > poc.mystring is in CATEGORY =3D 'S' but has no implicit cast to text, so > coerce_to_target_type() returns NULL; the parser still claims it's text a= nd > that NULL ends up as the JsonIsPredicate subject. > yeah , this was the reason. > > String-category alone isn't a promise of text-coercibility -- adding > CREATE CAST (poc.mystring AS text) ... AS IMPLICIT makes the same query > works fine. I guess the parser just shouldn't assume the coercion worked= ? > > The smallest fix I could see is to only update expr / exprtype when > coerce_to_target_type() returns non-NULL. Then transformJsonIsPredicate(= ) > (and the similar JSON() WITH UNIQUE KEYS path) raise their existing > "cannot use type X" errors instead of crashing: > > ERROR: cannot use type poc.mystring in IS JSON predicate > I have reviewed the patch , i think the error message might be something like diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index 89d0f348303..59e34f082e4 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -4203,6 +4203,13 @@ transformJsonParseArg(ParseState *pstate, Node *jsexpr, JsonFormat *format, TEXTOID, -1, COERCION_IMPLICIT, COERCE_IMPLICIT_CAST, -1); + if(expr =3D=3D NULL) + ereport(ERROR, + (errcode(ERRCODE_CANNOT_COERCE), + errmsg("cannot cast type %s to %s", + format_type_be(*exprtype), + format_type_be(TEXTOID)), + parser_errposition(pstate, exprLocation(raw_expr)))); *exprtype =3D TEXTOID; } --=20 Thanks, Srinath Reddy Sadipiralla EDB: https://www.enterprisedb.com/ --00000000000001b9690652a6fa78 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

On Mon, May 25, = 2026 at 8:43=E2=80=AFPM Ayush Tiwari <ayushtiwari.slg01@gmail.com> wrote:
H= i,

On Mon, 25 May 2026 at 18:57, PG Bug reporting form <noreply@postgresql.org> w= rote:
The follow= ing bug has been logged on the website:

Bug reference:=C2=A0 =C2=A0 =C2=A0 19491
Logged by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Chi Zhang
Email address:=C2=A0 =C2=A0 =C2=A0 798604270@qq.com
PostgreSQL version: 18.4
Operating system:=C2=A0 =C2=A0Ubuntu 24.04
Description:=C2=A0 =C2=A0 =C2=A0 =C2=A0

Hi,

I found that the following test case triggers a segmentation fault.

```
CREATE SCHEMA IF NOT EXISTS poc;

CREATE FUNCTION poc.mystring_in(cstring)
=C2=A0 =C2=A0 RETURNS poc.mystring
=C2=A0 =C2=A0 AS 'textin' LANGUAGE internal IMMUTABLE STRICT;

CREATE FUNCTION poc.mystring_out(poc.mystring)
=C2=A0 =C2=A0 RETURNS cstring
=C2=A0 =C2=A0 AS 'textout' LANGUAGE internal IMMUTABLE STRICT;

CREATE TYPE poc.mystring (
=C2=A0 =C2=A0 INPUT =3D poc.mystring_in,
=C2=A0 =C2=A0 OUTPUT =3D poc.mystring_out,
=C2=A0 =C2=A0 LIKE =3D text,
=C2=A0 =C2=A0 CATEGORY =3D 'S'
);

SELECT '{"a":1}'::poc.mystring IS JSON;

DROP SCHEMA IF EXISTS poc CASCADE;
```

This is the output:

```
sqlancer=3D# CREATE SCHEMA IF NOT EXISTS poc;
CREATE SCHEMA
sqlancer=3D# CREATE FUNCTION poc.mystring_in(cstring)
=C2=A0 =C2=A0 RETURNS poc.mystring
=C2=A0 =C2=A0 AS 'textin' LANGUAGE internal IMMUTABLE STRICT;
NOTICE:=C2=A0 type "poc.mystring" is not yet defined
DETAIL:=C2=A0 Creating a shell type definition.
CREATE FUNCTION
sqlancer=3D# CREATE FUNCTION poc.mystring_out(poc.mystring)
=C2=A0 =C2=A0 RETURNS cstring
=C2=A0 =C2=A0 AS 'textout' LANGUAGE internal IMMUTABLE STRICT;
NOTICE:=C2=A0 argument type poc.mystring is only a shell
LINE 1: CREATE FUNCTION poc.mystring_out(poc.mystring)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^<= br> CREATE FUNCTION
sqlancer=3D# CREATE TYPE poc.mystring (
=C2=A0 =C2=A0 INPUT =3D poc.mystring_in,
=C2=A0 =C2=A0 OUTPUT =3D poc.mystring_out,
=C2=A0 =C2=A0 LIKE =3D text,
=C2=A0 =C2=A0 CATEGORY =3D 'S'
);
CREATE TYPE
sqlancer=3D# SELECT '{"a":1}'::poc.mystring IS JSON;
server closed the connection unexpectedly
=C2=A0 =C2=A0 =C2=A0 =C2=A0 This probably means the server terminated abnor= mally
=C2=A0 =C2=A0 =C2=A0 =C2=A0 before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
```

Thanks for the report.=C2=A0 I was = able to reproduce this on HEAD with your SQL.
The crash is in the execut= or while building expression state for the IS JSON
predicate -- ExecInit= ExprRec() ends up being called with a NULL node:

=C2=A0 #0 =C2=A0Exe= cInitExprRec(node=3D0x0, ...) =C2=A0 =C2=A0 =C2=A0 =C2=A0execExpr.c:966
= =C2=A0 #1 =C2=A0ExecInitExprRec(<JsonIsPredicate>) =C2=A0 =C2=A0execE= xpr.c:2507
=C2=A0 #2 =C2=A0ExecBuildProjectionInfo(...) =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0execExpr.c:511

The NULL comes from transformJson= ParseArg().=C2=A0 For UNKNOWN or string-category
input types it implicit= ly coerces to text via coerce_to_target_type() and
then sets exprtype to= TEXTOID=C2=A0=C2=A0without checking if the coercion succeeded.
poc.myst= ring is in CATEGORY =3D 'S' but has no implicit cast to text, socoerce_to_target_type() returns NULL; the parser still claims it's tex= t and
that NULL ends up as the JsonIsPredicate subject.
<= /div>

yeah , this was the reason.
=C2=A0

String-category alone isn't a promise of text-co= ercibility -- adding
CREATE CAST (poc.mystring AS text) ... AS IMPLICIT = makes the same query
works fine.=C2=A0 I guess the parser just shouldn&#= 39;t assume the coercion worked?

The smallest fix I could see is to = only update expr / exprtype when
coerce_to_target_type() returns non-NUL= L.=C2=A0 Then transformJsonIsPredicate()
(and the similar JSON() WITH UN= IQUE KEYS path) raise their existing
"cannot use type X" error= s instead of crashing:

=C2=A0 ERROR: =C2=A0cannot use type poc.mystr= ing in IS JSON predicate

I have = reviewed the patch , i think the error message might be
something like
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/par= se_expr.c
index 89d0f348303..59e34f082e4 100644
--- a/src/backend/par= ser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -4203,6 +42= 03,13 @@ transformJsonParseArg(ParseState *pstate, Node *jsexpr, JsonFormat= *format,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0TEXTOID, -1,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0COERCION_IMPLICIT,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0COERCE_IMPLICIT_CAST, -1);
+ =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(expr =3D=3D = NULL)
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ereport(ERROR,
+ =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 (errcode(ERRCODE_CANNOT_COERCE),
+ =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0errmsg("cannot cast type %s to %s",
+ =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 format_type_be(*exprtype),
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 format_type_be(TEXT= OID)),
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0parser_errposition(pstate, = exprLocation(raw_expr))));
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 *exprtype =3D TEXTOID;
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }=C2=A0

<= /div>--
Thanks,
Srinath Reddy Sadipiralla
EDB:=C2=A0ht= tps://www.enterprisedb.com/
--00000000000001b9690652a6fa78--