Robert Haas <robertmhaas@gmail.com> writes:
> On Thu, Aug 10, 2017 at 10:36 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> Yeah ... however, if that's there, then there's something wrong with
>> Ashutosh's explanation, because that means we *are* building with
>> _USE_32BIT_TIME_T in 32-bit builds. It's just getting there in a
>> roundabout way. (Or, alternatively, this code is somehow not doing
>> anything at all.)
> I don't follow.
The stanzas you pointed to in the MSVC build scripts should mean that
a 32-bit PG build is using _USE_32BIT_TIME_T, no? And Ashutosh stated
that he saw _USE_32BIT_TIME_T in "perl -V" output. So how are they
not ending up compatible?
Now, if that statement was wrong and his 32-bit Perl actually *isn't*
built with _USE_32BIT_TIME_T, then this is clearly what's causing the
problem.
>> Really? We try to avoid touching "time_t" at all in most of the code.
>> I bet that we could drop the above-cited code, and compile only plperl
>> with _USE_32BIT_TIME_T, taken (if present) from the Perl flags, and
>> it'd be fine. At least, that's my first instinct for what to try.
> Oh. Well, if that's an OK thing to do, then sure, wfm. I guess we've
> got pg_time_t plastered all over the backend but that's not actually
> time_t under the hood, so it's fine. I do see time_t being used in
> frontend code, but that won't matter for this.
Yeah. I think this should work as long as plperl itself doesn't use
time_t, or at least doesn't exchange time_t with any other part of the
system, and since we don't use that type in any common APIs that seems
like an OK assumption.
regards, tom lane