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

Commit35f9b46

Browse files
committed
Repair two TIME WITH TIME ZONE bugs found by Dennis Vshivkov. Comparison
of timetz values misbehaved in --enable-integer-datetime cases, andEXTRACT(EPOCH) subtracted the zone instead of adding it in all cases.Backpatch to all supported releases (except --enable-integer-datetime codedoes not exist in 7.2).
1 parent0e99be1 commit35f9b46

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.104 2004/12/31 22:01:21 pgsql Exp $
11+
* $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.105 2005/04/23 22:53:05 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -1869,12 +1869,20 @@ timetz_scale(PG_FUNCTION_ARGS)
18691869
staticint
18701870
timetz_cmp_internal(TimeTzADT*time1,TimeTzADT*time2)
18711871
{
1872+
/* Primary sort is by true (GMT-equivalent) time */
1873+
#ifdefHAVE_INT64_TIMESTAMP
1874+
int64t1,
1875+
t2;
1876+
1877+
t1=time1->time+ (time1->zone*INT64CONST(1000000));
1878+
t2=time2->time+ (time2->zone*INT64CONST(1000000));
1879+
#else
18721880
doublet1,
18731881
t2;
18741882

1875-
/* Primary sort is by true (GMT-equivalent) time */
18761883
t1=time1->time+time1->zone;
18771884
t2=time2->time+time2->zone;
1885+
#endif
18781886

18791887
if (t1>t2)
18801888
return1;
@@ -2443,9 +2451,9 @@ timetz_part(PG_FUNCTION_ARGS)
24432451
elseif ((type==RESERV)&& (val==DTK_EPOCH))
24442452
{
24452453
#ifdefHAVE_INT64_TIMESTAMP
2446-
result= ((time->time /1000000e0)-time->zone);
2454+
result= ((time->time /1000000e0)+time->zone);
24472455
#else
2448-
result= (time->time-time->zone);
2456+
result= (time->time+time->zone);
24492457
#endif
24502458
}
24512459
else

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp