Hi, On Saturday, December 10, 2022 12:08 AM Takamichi Osumi (Fujitsu) <osumi.takami...@fujitsu.com> wrote: > On Friday, December 9, 2022 3:38 PM Kuroda, Hayato/黒田 隼人 > <kuroda.hay...@fujitsu.com> wrote: > > Thanks for reporting! I have analyzed the problem and found the root cause. > > > > This feature seemed not to work on 32-bit OSes. This was because the > > calculation of delay_time was wrong. The first argument of this should > > be TimestampTz datatype, not Datum: > > > > ``` > > + /* Set apply delay */ > > + delay_until = > > TimestampTzPlusMilliseconds(TimestampTzGetDatum(ts), > > + > > + MySubscription->applydelay); > > ``` > > > > In more detail, the datum representation of int64 contains the value > > itself on 64-bit OSes, but it contains the pointer to the value on 32-bit. > > > > After modifying the issue, this will work on 32-bit environments. > Thank you for your analysis. > > Yeah, it seems we conduct addition of values to the pointer value, which is > returned from the call of TimestampTzGetDatum(), on 32-bit machine by > mistake. > > I'll remove the call in my next version. Applied this fix in the last version, shared in [1].
[1] - https://www.postgresql.org/message-id/TYCPR01MB83730C23CB7D29E57368BECDEDE29%40TYCPR01MB8373.jpnprd01.prod.outlook.com Best Regards, Takamichi Osumi