Search Postgresql Archives

Re: preferred way to use PG_GETARG_BYTEA_P in SPI

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/10/07, Tom Lane <tgl@xxxxxxxxxxxxx> wrote:
> "Merlin Moncure" <mmoncure@xxxxxxxxx> writes:
> > I'm curious what's considered the best way to invoke PG_GETARG_BYTEA_P
> > in an SPI routine and properly check for null input in non 'strict'
> > routines.  Right now, I'm looking at PG_GETARG_POINTER to check for
> > null value before using PG_GETARG_BYTEA_P to assign to the bytea
> > pointer.
>
> That would be entirely wrong.  In a non-strict function, test
> PG_ARGISNULL(n) before attempting any variant of PG_GETARG(n).
> Grepping for PG_ARGISNULL will yield lots of examples.

well, there aren't all that many examples in contrib, and some of the
ones that are there look like this (edited) from tsearch2:

Datum
rewrite_accum(PG_FUNCTION_ARGS)
{
	QUERYTYPE  *acc = (QUERYTYPE *) PG_GETARG_POINTER(0);
	ArrayType  *qa = (ArrayType *)
DatumGetPointer(PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(1)));
	if (acc == NULL || PG_ARGISNULL(0))
	{

...I since found the place in the documentation which explains this
though, at the end of the portion describing the V1 calling
convention.

merlin

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux