pgsql: Don't use OidIsValid to check the return value of
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)
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
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