Обсуждение: 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