diff --git a/contrib/btree_gist/btree_cash.c b/contrib/btree_gist/btree_cash.c index 6ac97e2b12..546b948ea4 100644 --- a/contrib/btree_gist/btree_cash.c +++ b/contrib/btree_gist/btree_cash.c @@ -106,7 +106,7 @@ cash_dist(PG_FUNCTION_ARGS) (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), errmsg("money out of range"))); - ra = Abs(r); + ra = i64abs(r); PG_RETURN_CASH(ra); } diff --git a/contrib/btree_gist/btree_int8.c b/contrib/btree_gist/btree_int8.c index df2b0d174b..7c63a5b6dc 100644 --- a/contrib/btree_gist/btree_int8.c +++ b/contrib/btree_gist/btree_int8.c @@ -106,7 +106,7 @@ int8_dist(PG_FUNCTION_ARGS) (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), errmsg("bigint out of range"))); - ra = Abs(r); + ra = i64abs(r); PG_RETURN_INT64(ra); } diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index a8b025f43f..4e9935e01d 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4468,7 +4468,7 @@ AddVerboseIntPart(char *cp, int64 value, const char *units, if (*is_zero) { *is_before = (value < 0); - value = Abs(value); + value = i64abs(value); } else if (*is_before) value = -value; @@ -4569,8 +4569,8 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", year_sign, abs(year), abs(mon), - day_sign, (long long) Abs(mday), - sec_sign, (long long) Abs(hour), abs(min)); + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); cp += strlen(cp); cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; @@ -4642,7 +4642,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) sprintf(cp, "%s%s%02lld:%02d:", is_zero ? "" : " ", (minus ? "-" : (is_before ? "+" : "")), - (long long) Abs(hour), abs(min)); + (long long) i64abs(hour), abs(min)); cp += strlen(cp); cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c index 34efa121b4..0a9b93f263 100644 --- a/src/backend/utils/adt/dbsize.c +++ b/src/backend/utils/adt/dbsize.c @@ -564,7 +564,7 @@ pg_size_pretty(PG_FUNCTION_ARGS) uint8 bits; /* use this unit if there are no more units or we're below the limit */ - if (unit[1].name == NULL || Abs(size) < unit->limit) + if (unit[1].name == NULL || i64abs(size) < unit->limit) { if (unit->round) size = half_rounded(size); diff --git a/src/include/c.h b/src/include/c.h index c8f72e44d8..405d53cb56 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -1282,6 +1282,15 @@ extern int fdatasync(int fildes); #define strtou64(str, endptr, base) ((uint64) strtoull(str, endptr, base)) #endif +/* + * Similarly, wrappers around labs()/llabs() matching our int64. + */ +#ifdef HAVE_LONG_INT_64 +#define i64abs(i) labs(i) +#else +#define i64abs(i) llabs(i) +#endif + /* * Use "extern PGDLLIMPORT ..." to declare variables that are defined * in the core backend and need to be accessible by loadable modules.