diff --git a/src/vector.c b/src/vector.c index 3b4d0f2..7aa75d0 100644 --- a/src/vector.c +++ b/src/vector.c @@ -5,7 +5,6 @@ #include "vector.h" #include "fmgr.h" #include "catalog/pg_type.h" -#include "common/shortest_dec.h" #include "lib/stringinfo.h" #include "libpq/pqformat.h" #include "utils/array.h" @@ -14,7 +13,10 @@ #include "utils/numeric.h" #if PG_VERSION_NUM >= 120000 +#include "common/shortest_dec.h" #include "utils/float.h" +#else +#include #endif #if PG_VERSION_NUM < 130000 @@ -195,6 +197,15 @@ vector_out(PG_FUNCTION_ARGS) int i; int n; +#if PG_VERSION_NUM < 120000 + int ndig = FLT_DIG + extra_float_digits; + + if (ndig < 1) + ndig = 1; + +#define FLOAT_SHORTEST_DECIMAL_LEN ndig + 10 +#endif + /* * Need: * @@ -218,7 +229,11 @@ vector_out(PG_FUNCTION_ARGS) ptr++; } +#if PG_VERSION_NUM >= 120000 n = float_to_shortest_decimal_bufn(vector->x[i], ptr); +#else + n = sprintf(ptr, "%.*g", ndig, vector->x[i]); +#endif ptr += n; } *ptr = ']';