Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef _PG_NUMERIC_H_
00015 #define _PG_NUMERIC_H_
00016
00017 #include "fmgr.h"
00018
00019
00020
00021
00022
00023 #define NUMERIC_MAX_PRECISION 1000
00024
00025
00026
00027
00028 #define NUMERIC_MAX_DISPLAY_SCALE NUMERIC_MAX_PRECISION
00029 #define NUMERIC_MIN_DISPLAY_SCALE 0
00030
00031 #define NUMERIC_MAX_RESULT_SCALE (NUMERIC_MAX_PRECISION * 2)
00032
00033
00034
00035
00036
00037
00038 #define NUMERIC_MIN_SIG_DIGITS 16
00039
00040
00041 struct NumericData;
00042 typedef struct NumericData *Numeric;
00043
00044
00045
00046
00047
00048 #define DatumGetNumeric(X) ((Numeric) PG_DETOAST_DATUM(X))
00049 #define DatumGetNumericCopy(X) ((Numeric) PG_DETOAST_DATUM_COPY(X))
00050 #define NumericGetDatum(X) PointerGetDatum(X)
00051 #define PG_GETARG_NUMERIC(n) DatumGetNumeric(PG_GETARG_DATUM(n))
00052 #define PG_GETARG_NUMERIC_COPY(n) DatumGetNumericCopy(PG_GETARG_DATUM(n))
00053 #define PG_RETURN_NUMERIC(x) return NumericGetDatum(x)
00054
00055
00056
00057
00058 extern bool numeric_is_nan(Numeric num);
00059 int32 numeric_maximum_size(int32 typmod);
00060 extern char *numeric_out_sci(Numeric num, int scale);
00061
00062 #endif