Re: Checking return value of SPI_execute

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Mark Dilger <hornschnorter(at)gmail(dot)com>
Cc: Michael Paquier <michael(at)paquier(dot)xyz>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Checking return value of SPI_execute
Date: 2019-11-06 15:57:47
Message-ID: CAFj8pRBk1UqzkyEv8enmnkZK0TnwfiRiPTQD=h2Ga6WKhV=RiQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

st 6. 11. 2019 v 16:38 odesílatel Mark Dilger <hornschnorter(at)gmail(dot)com>
napsal:

>
>
> On 11/5/19 9:54 PM, Pavel Stehule wrote:
> >
> >
> > st 6. 11. 2019 v 5:28 odesílatel Michael Paquier <michael(at)paquier(dot)xyz
> > <mailto:michael(at)paquier(dot)xyz>> napsal:
> >
> > On Tue, Nov 05, 2019 at 05:21:25PM -0800, Mark Dilger wrote:
> > > please find attached a patch fixing a problem previously
> > discussed [1] about
> > > the code inappropriately ignoring the return value from
> SPI_execute.
> > >
> > > I will be adding this to https://commitfest.postgresql.org/26/
> > > shortly.
> >
> > Yes, this should be fixed.
> >
> > > - SPI_execute(query, true, 0);
> > > + spi_result = SPI_execute(query, true, 0);
> > > + if (spi_result < 0)
> > > + elog(ERROR, "SPI_execute returned %s",
> > SPI_result_code_string(spi_result));
> >
> > Any queries processed in xml.c are plain SELECT queries, so it seems
> > to me that you need to check after SPI_OK_SELECT as only valid
> > result.
> >
> >
> > Is generic question if this exception should not be raised somewhere in
> > spi.c - maybe at SPI_execute
> >
> > When you look to SPI_execute_plan, then checked errors has a character
> > +/- assertions. All SQL errors are ended by a exception. This API is not
> > too consistent after years what is used.
> >
> > I agree so this result code should be tested for better code quality.
> > But this API is not consistent now, and should be refactored to use a
> > exceptions instead result codes. Or instead error checking, a assertions
> > should be used.
> >
> > What do you think about it?
>
> I am creating another patch which removes most of the error codes from
> the interface and uses elog(ERROR) or ereport(ERROR) instead, but I
> anticipate a lot of debate about that design and wanted to get this
> simpler patch into the queue. I don't think we need to reject this
> patch in favor of redesigning the entire SPI API. Instead, we can apply
> this patch as a simple bug fix, and then if it gets removed later when
> the other, larger patch is committed, so be it.
>
> Does that plan seem acceptable?
>

I am not against these fix.

Regards

Pavel

>
> Mark Dilger
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2019-11-06 16:07:30 Re: let's make the list of reportable GUCs configurable (was Re: Add %r substitution for psql prompts to show recovery status)
Previous Message Robert Haas 2019-11-06 15:38:58 Re: tableam vs. TOAST