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
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? |