Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5463319

Browse files
committed
Dodge a compiler bug affecting timetz_zone/timetz_izone.
This avoids a compiler bug occurring in AIX's xlc, even in prettylate-model revisions. Buildfarm testing has now confirmed thatonly 64-bit xlc is affected. Although we are contemplatingdropping support for xlc in v17, it's still supported in theback branches, so we need this fix.Back-patch of code changes from HEAD commit19fa977.(The test cases were already back-patched, in4a427b8 et al.)Discussion:https://postgr.es/m/CA+hUKGK=DOC+hE-62FKfZy=Ybt5uLkrg3zCZD-jFykM-iPn8yw@mail.gmail.com
1 parentd568d2f commit5463319

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

‎src/backend/utils/adt/date.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3089,10 +3089,11 @@ timetz_zone(PG_FUNCTION_ARGS)
30893089
result= (TimeTzADT*)palloc(sizeof(TimeTzADT));
30903090

30913091
result->time=t->time+ (t->zone-tz)*USECS_PER_SEC;
3092+
/* C99 modulo has the wrong sign convention for negative input */
30923093
while (result->time<INT64CONST(0))
30933094
result->time+=USECS_PER_DAY;
3094-
while (result->time >=USECS_PER_DAY)
3095-
result->time-=USECS_PER_DAY;
3095+
if (result->time >=USECS_PER_DAY)
3096+
result->time%=USECS_PER_DAY;
30963097

30973098
result->zone=tz;
30983099

@@ -3122,10 +3123,11 @@ timetz_izone(PG_FUNCTION_ARGS)
31223123
result= (TimeTzADT*)palloc(sizeof(TimeTzADT));
31233124

31243125
result->time=time->time+ (time->zone-tz)*USECS_PER_SEC;
3126+
/* C99 modulo has the wrong sign convention for negative input */
31253127
while (result->time<INT64CONST(0))
31263128
result->time+=USECS_PER_DAY;
3127-
while (result->time >=USECS_PER_DAY)
3128-
result->time-=USECS_PER_DAY;
3129+
if (result->time >=USECS_PER_DAY)
3130+
result->time%=USECS_PER_DAY;
31293131

31303132
result->zone=tz;
31313133

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp