Обсуждение: 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
Re: [COMMITTERS] pgsql: Don't use OidIsValid to check the return value of
От
Heikki Linnakangas
Дата:
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