Обсуждение: BUG #18993: [BUG] Unreachable code in pg_next_dst_boundary()
The following bug has been logged on the website: Bug reference: 18993 Logged by: Eugeny Goryachev Email address: gorcom2012@gmail.com PostgreSQL version: 17.4 Operating system: Ubuntu Description: Hello, In pg_next_dst_boundary() (src/timezone/localtime.c), the following condition can never be true: ``` if (tcycles - icycles >= 1 || icycles - tcycles >= 1) return -1; ``` This is unreachable because icycles is assigned directly from tcycles. Suggested fix: Remove this condition entirely The change is safe as it only removes dead code. All timezone transition cases are already properly handled by other paths. Best regards, Eugeny Goryachev
On Mon, Jul 21, 2025 at 12:29:16PM +0000, PG Bug reporting form wrote: > In pg_next_dst_boundary() (src/timezone/localtime.c), the following > condition can never be true: > ``` > if (tcycles - icycles >= 1 || icycles - tcycles >= 1) > return -1; > ``` > This is unreachable because icycles is assigned directly from tcycles. I see the following upstream commit and discussion related to this: https://github.com/eggert/tz/commit/b0bf6d8 https://mm.icann.org/pipermail/tz/2013-August/019493.html -- nathan
Nathan Bossart <nathandbossart@gmail.com> writes: > On Mon, Jul 21, 2025 at 12:29:16PM +0000, PG Bug reporting form wrote: >> This is unreachable because icycles is assigned directly from tcycles. > I see the following upstream commit and discussion related to this: Yeah. The short answer here is that this code is meant to deal with cases where time_t is wider than int[64]. Perhaps we're uninterested in dealing with that case ... but we also don't want to deviate too far from the upstream tzdb code. So I'm inclined to leave it alone. As the function's comment mentions, * A function result of -1 indicates failure (this case does not actually * occur in our current implementation). so presumably both "return -1" lines are unreachable. regards, tom lane