From 6556961a0876817ac6e648d962850cac21df2c1e Mon Sep 17 00:00:00 2001 From: zhoujiaqi Date: Thu, 18 Apr 2024 11:32:41 +0800 Subject: [PATCH] Fix: pgrx cannot find function after numeric change interface --- src/backend/utils/adt/numeric.c | 45 +++++++++++++++++++++++++++++++++ src/include/utils/numeric.h | 10 ++++++++ 2 files changed, 55 insertions(+) diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index 7109e0e2049..72597c1caf2 100644 --- a/src/backend/utils/adt/numeric.c +++ b/src/backend/utils/adt/numeric.c @@ -546,6 +546,51 @@ numeric_is_integral(Numeric num) return (arg.ndigits == 0 || arg.ndigits <= arg.weight + 1); } + +/* + * numeric_is_nan() - + * + * Is Numeric value a NaN? + */ +bool +numeric_is_nan(Numeric num) +{ + return NUMERIC_IS_NAN(num); +} + +/* + * numeric_digits() - + * + * Output function for numeric's digits + */ +NumericDigit * +numeric_digits(Numeric num) +{ + return NUMERIC_DIGITS(num); +} + +/* + * numeric_len() - + * + * Output size of digits in bytes + */ +int +numeric_len(Numeric num) +{ + return NUMERIC_NDIGITS(num) * sizeof(NumericDigit); +} + +/* + * numeric_is_inf() - + * + * Is Numeric value an infinity? + */ +bool +numeric_is_inf(Numeric num) +{ + return NUMERIC_IS_INF(num); +} + /* * numeric_maximum_size() - * diff --git a/src/include/utils/numeric.h b/src/include/utils/numeric.h index 8391677a572..58a5a6066ac 100644 --- a/src/include/utils/numeric.h +++ b/src/include/utils/numeric.h @@ -342,6 +342,16 @@ extern float8 numeric_li_fraction(Numeric x, Numeric x0, Numeric x1, bool *eq_bounds, bool *eq_abscissas); extern Numeric numeric_li_value(float8 f, Numeric y0, Numeric y1); +/* + * Some of utility functions. which have same definition as the macro, + * but some of extension will these function rather than use the marco + * like `pgrx`. + */ +extern int16 *numeric_digits(Numeric num); +extern int numeric_len(Numeric num); +extern bool numeric_is_nan(Numeric num); +extern bool numeric_is_inf(Numeric num); + /* * Utility functions in numeric.c */