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

Commit357cfef

Browse files
committed
Use C library functions instead of Abs() for int64
Instead of Abs() for int64, use the C standard functions labs() orllabs() as appropriate. Define a small wrapper around them thatmatches our definition of int64. (labs() is C90, llabs() is C99.)Reviewed-by: Zhang Mingli <zmlpostgres@gmail.com>Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>Discussion:https://www.postgresql.org/message-id/flat/4beb42b5-216b-bce8-d452-d924d5794c63%40enterprisedb.com
1 parent06dbd61 commit357cfef

File tree

5 files changed

+16
-7
lines changed

5 files changed

+16
-7
lines changed

‎contrib/btree_gist/btree_cash.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ cash_dist(PG_FUNCTION_ARGS)
106106
(errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
107107
errmsg("money out of range")));
108108

109-
ra=Abs(r);
109+
ra=i64abs(r);
110110

111111
PG_RETURN_CASH(ra);
112112
}

‎contrib/btree_gist/btree_int8.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ int8_dist(PG_FUNCTION_ARGS)
106106
(errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
107107
errmsg("bigint out of range")));
108108

109-
ra=Abs(r);
109+
ra=i64abs(r);
110110

111111
PG_RETURN_INT64(ra);
112112
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4468,7 +4468,7 @@ AddVerboseIntPart(char *cp, int64 value, const char *units,
44684468
if (*is_zero)
44694469
{
44704470
*is_before= (value<0);
4471-
value=Abs(value);
4471+
value=i64abs(value);
44724472
}
44734473
elseif (*is_before)
44744474
value=-value;
@@ -4569,8 +4569,8 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
45694569

45704570
sprintf(cp,"%c%d-%d %c%lld %c%lld:%02d:",
45714571
year_sign,abs(year),abs(mon),
4572-
day_sign, (long long)Abs(mday),
4573-
sec_sign, (long long)Abs(hour),abs(min));
4572+
day_sign, (long long)i64abs(mday),
4573+
sec_sign, (long long)i64abs(hour),abs(min));
45744574
cp+=strlen(cp);
45754575
cp=AppendSeconds(cp,sec,fsec,MAX_INTERVAL_PRECISION, true);
45764576
*cp='\0';
@@ -4642,7 +4642,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
46424642
sprintf(cp,"%s%s%02lld:%02d:",
46434643
is_zero ?"" :" ",
46444644
(minus ?"-" : (is_before ?"+" :"")),
4645-
(long long)Abs(hour),abs(min));
4645+
(long long)i64abs(hour),abs(min));
46464646
cp+=strlen(cp);
46474647
cp=AppendSeconds(cp,sec,fsec,MAX_INTERVAL_PRECISION, true);
46484648
*cp='\0';

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ pg_size_pretty(PG_FUNCTION_ARGS)
564564
uint8bits;
565565

566566
/* use this unit if there are no more units or we're below the limit */
567-
if (unit[1].name==NULL||Abs(size)<unit->limit)
567+
if (unit[1].name==NULL||i64abs(size)<unit->limit)
568568
{
569569
if (unit->round)
570570
size=half_rounded(size);

‎src/include/c.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1282,6 +1282,15 @@ extern intfdatasync(int fildes);
12821282
#definestrtou64(str,endptr,base) ((uint64) strtoull(str, endptr, base))
12831283
#endif
12841284

1285+
/*
1286+
* Similarly, wrappers around labs()/llabs() matching our int64.
1287+
*/
1288+
#ifdefHAVE_LONG_INT_64
1289+
#definei64abs(i) labs(i)
1290+
#else
1291+
#definei64abs(i) llabs(i)
1292+
#endif
1293+
12851294
/*
12861295
* Use "extern PGDLLIMPORT ..." to declare variables that are defined
12871296
* in the core backend and need to be accessible by loadable modules.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp