BUG #18248: Expression is always zero
The following bug has been logged on the website:
Bug reference: 18248
Logged by: RekGRpth
Email address: rekgrpth@gmail.com
PostgreSQL version: 16.1
Operating system: docker alpine
Description:
The value of expression 'thistimecnt >> 31 >> 31 >> 2' (in
src/timezone/zic.c) is zero regardless of the value of the left operand
'thistimecnt', because it is shifted by 64 (in total) bits, which is greater
or equal to its size of 64 bits.
Maybe this was what was meant?
thistimecnt >> 31 >> 2
On Thu, 2023-12-14 at 05:32 +0000, PG Bug reporting form wrote:
The value of expression 'thistimecnt >> 31 >> 31 >> 2' (in
src/timezone/zic.c) is zero regardless of the value of the left operand
'thistimecnt', because it is shifted by 64 (in total) bits, which is greater
or equal to its size of 64 bits.Maybe this was what was meant?
thistimecnt >> 31 >> 2
This code is just taken from the GNU C library, and it's in our interest to
keep it as much aligned with upstram code as possible.
Yours,
Laurenz Albe
Hi,
On Thu, Dec 14, 2023 at 05:32:49AM +0000, PG Bug reporting form wrote:
The value of expression 'thistimecnt >> 31 >> 31 >> 2' (in
src/timezone/zic.c) is zero regardless of the value of the left operand
'thistimecnt', because it is shifted by 64 (in total) bits, which is greater
or equal to its size of 64 bits.Maybe this was what was meant?
thistimecnt >> 31 >> 2
Note that this is code imported as-is from upstream IANA tzcode, so we wouldn't
make any change ourself.
Looking at their git history they added it to remove some theoretical int
limits:
https://github.com/eggert/tz/commit/cc8aec6ecb1ecc3099f173e2bca9785ae8359c03
Hello Georgy,
14.12.2023 08:32, PG Bug reporting form wrote:
The following bug has been logged on the website:
Bug reference: 18248
Logged by: RekGRpth
Email address: rekgrpth@gmail.comThe value of expression 'thistimecnt >> 31 >> 31 >> 2' (in
src/timezone/zic.c) is zero regardless of the value of the left operand
'thistimecnt', because it is shifted by 64 (in total) bits, which is greater
or equal to its size of 64 bits.Maybe this was what was meant?
thistimecnt >> 31 >> 2
I see the same in
https://github.com/eggert/tz/blob/main/zic.c
So maybe you would like to report that to the tz mailing list?:
https://www.iana.org/time-zones
Best regards,
Alexander
Julien Rouhaud <rjuju123@gmail.com> writes:
On Thu, Dec 14, 2023 at 05:32:49AM +0000, PG Bug reporting form wrote:
The value of expression 'thistimecnt >> 31 >> 31 >> 2' (in
src/timezone/zic.c) is zero regardless of the value of the left operand
Note that this is code imported as-is from upstream IANA tzcode, so we wouldn't
make any change ourself.
Looking at their git history they added it to remove some theoretical int
limits:
https://github.com/eggert/tz/commit/cc8aec6ecb1ecc3099f173e2bca9785ae8359c03
Yeah, the tzcode crew have a wider range of (possibly theoretical)
target systems in mind than we do. They probably won't think this
is a bug, and we're unlikely to diverge from whatever they do.
regards, tom lane