Re: pg_dump throwing "column number -1 is out of range 0..36" on HEAD

From: Andres Freund <andres(at)anarazel(dot)de>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Michael Paquier <michael(at)paquier(dot)xyz>, Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Andrew Dunstan <andrew(at)dunslane(dot)net>
Subject: Re: pg_dump throwing "column number -1 is out of range 0..36" on HEAD
Date: 2019-05-22 18:06:16
Message-ID: 20190522180616.hcuwmwhwjg6cv7so@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 2019-05-22 09:46:19 -0400, Tom Lane wrote:
> Michael Paquier <michael(at)paquier(dot)xyz> writes:
> > Trying to do pg_dump[all] on a 9.5 or older server results in spurious
> > failures:
> > pg_dump: column number -1 is out of range 0..36
>
> > After looking around, the problem comes from
> > check_tuple_field_number(), more specifically from getTables() where
> > someone has forgotten to add NULL values for amname when querying
> > older server versions.

Thanks for catching!

> > Attached is a patch to fix that.

Wouldn't the better fix be to change

if (PQgetisnull(res, i, i_amname))
tblinfo[i].amname = NULL;

into

if (i_amname == -1 || PQgetisnull(res, i, i_amname))
tblinfo[i].amname = NULL;

it's much more scalable than adding useless columns everywhere, and we
already use that approach with i_checkoption (and at a number of other
places).

> > Attached is a patch to fix that. I am not seeing other failures with
> > an instance that includes all the contents of installcheck, so it
> > seems that the rest is fine.
>
> Looks like the right fix. I'm sad that the buildfarm did not catch
> this ... why wouldn't the cross-version-upgrade tests have seen it?

I suspect we just didn't notice that it saw that:

if (field_num < 0 || field_num >= res->numAttributes)
{
pqInternalNotice(&res->noticeHooks,
"column number %d is out of range 0..%d",
field_num, res->numAttributes - 1);
return false;
}

as it's just a notice, not a failure.

Greetings,

Andres Freund

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2019-05-22 18:06:47 Re: Teach pg_upgrade test to honor NO_TEMP_INSTALL
Previous Message Andres Freund 2019-05-22 17:51:50 Re: Teach pg_upgrade test to honor NO_TEMP_INSTALL