Re: Passing XML column in an array

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Garfield Lewis <garfield(dot)lewis(at)lzlabs(dot)com>
Cc: PostgreSQL mailing lists <pgsql-general(at)postgresql(dot)org>
Subject: Re: Passing XML column in an array
Date: 2022-02-10 17:53:27
Message-ID: 1693386.1644515607@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Garfield Lewis <garfield(dot)lewis(at)lzlabs(dot)com> writes:
> I am trying to pass an array into a new function I am creating called lzxmlexists via the following statement:

> wdbs=# SELECT "XT"."ROWKEY" , "XT"."XMLT1C1" FROM "LZQAAS"."T642_XML_T1" "XT" WHERE "ROWKEY"=64201 AND lzxmlexists( ' $XTX//DeptName[ . = $Dn ]', 'DEFAULT', ARRAY["XT"."XMLT1C1"] ) ORDER BY "ROWKEY";

> The column XT.XMLT1C1 exists because I can do a simple select to see the contents. The problem is that in the code above I hit the following error at line 161.

> 160 for ( size_t ix = 0; ix < iXmlCount; ++ix ) {
> (gdb)
> 163 xmltype *pX = DatumGetXmlP( pXmlData[ix] );
> (gdb)

> Program received signal SIGSEGV, Segmentation fault.
> 0x00000000008b3514 in pg_detoast_datum ()

The most obvious theory is that there are some nulls in the XT.XMLT1C1
column. Since your code isn't bothering to check pXmlDataNulls[ix],
it would hit a null-pointer dereference when accessing pXmlData[ix].

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Garfield Lewis 2022-02-10 18:13:58 Re: [EXT] Re: Passing XML column in an array
Previous Message Peter J. Holzer 2022-02-10 17:31:06 Re: Can we go beyond the standard to make Postgres radically better?