pgsql: Don't use OidIsValid to check the return value of

Started by Heikki Linnakangasover 17 years ago3 messageshackers
Jump to latest
#1Heikki Linnakangas
heikki.linnakangas@enterprisedb.com

Log Message:
-----------
Don't use OidIsValid to check the return value of transformGenericOptions,
because transformGenericOptions returns an array, not an Oid. I'm not
sure if this fixes the crashes seen in buildfarm, but it should be fixed
anyway.

Modified Files:
--------------
pgsql/src/backend/commands:
foreigncmds.c (r1.1 -> r1.2)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/foreigncmds.c?r1=1.1&r2=1.2)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Heikki Linnakangas (#1)
Re: [COMMITTERS] pgsql: Don't use OidIsValid to check the return value of

heikki@postgresql.org (Heikki Linnakangas) writes:

Don't use OidIsValid to check the return value of transformGenericOptions,
because transformGenericOptions returns an array, not an Oid. I'm not
sure if this fixes the crashes seen in buildfarm, but it should be fixed
anyway.

Definitely a necessary fix, but you missed what I think is actually
causing the crashes:

if (PointerIsValid(DatumGetPointer(datum)))
! repl_val[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = ObjectIdGetDatum(datum);

should be

if (PointerIsValid(DatumGetPointer(datum)))
! repl_val[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = datum;

ObjectIdGetDatum probably is zeroing the high-order half of the pointer
datum.

I committed this along with some other cosmetic fixes.

Somebody still needs to fix the MSVC build scripts...

regards, tom lane

#3Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Tom Lane (#2)
Re: [COMMITTERS] pgsql: Don't use OidIsValid to check the return value of

Tom Lane wrote:

Definitely a necessary fix, but you missed what I think is actually
causing the crashes:

if (PointerIsValid(DatumGetPointer(datum)))
! repl_val[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = ObjectIdGetDatum(datum);

should be

if (PointerIsValid(DatumGetPointer(datum)))
! repl_val[Anum_pg_foreign_data_wrapper_fdwoptions - 1] = datum;

ObjectIdGetDatum probably is zeroing the high-order half of the pointer
datum.

Doh, how could I miss that, on the very next line :-)

I committed this along with some other cosmetic fixes.

Thanks.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com