Michael Paquier <michael@xxxxxxxxxxx> writes: > On Thu, Feb 22, 2018 at 08:00:45PM -0500, Demitri Muna wrote: >> Out of curiosity, how does one read a numeric type from within a C >> extension (i.e. get a number value out of the Datum type)? > PG_GETARG_NUMERIC(), no? I think the core point here is that PG's "numeric" type *isn't* any primitive C type; it's a variable-length BCD encoding. If you want to deal with it you can, but you must spend some time reading src/backend/utils/adt/numeric.c, as Michael suggests. If you just want a convenient C approximation, then work with float8 and let the implicit-coercion machinery do the conversion for you. regards, tom lane