parent
419400c5da
commit
abb1733922
|
@ -849,6 +849,19 @@
|
|||
<entry><literal>42.44</literal></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>
|
||||
<indexterm>
|
||||
<primary>scale</primary>
|
||||
</indexterm>
|
||||
<literal><function>scale(<type>numeric</type>)</function></literal>
|
||||
</entry>
|
||||
<entry><type>numeric</type></entry>
|
||||
<entry>scale of the argument (the number of decimal digits in the fractional part)</entry>
|
||||
<entry><literal>scale(8.41)</literal></entry>
|
||||
<entry><literal>2</literal></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>
|
||||
<indexterm>
|
||||
|
|
|
@ -2825,6 +2825,23 @@ numeric_power(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_NUMERIC(res);
|
||||
}
|
||||
|
||||
/*
|
||||
* numeric_scale() -
|
||||
*
|
||||
* Returns the scale, i.e. the count of decimal digits in the fractional part
|
||||
*/
|
||||
Datum
|
||||
numeric_scale(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Numeric num = PG_GETARG_NUMERIC(0);
|
||||
|
||||
if (NUMERIC_IS_NAN(num))
|
||||
PG_RETURN_NULL();
|
||||
|
||||
PG_RETURN_INT32(NUMERIC_DSCALE(num));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
*
|
||||
|
|
|
@ -53,6 +53,6 @@
|
|||
*/
|
||||
|
||||
/* yyyymmddN */
|
||||
#define CATALOG_VERSION_NO 201601051
|
||||
#define CATALOG_VERSION_NO 201601052
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2361,6 +2361,8 @@ DESCR("exponentiation");
|
|||
DATA(insert OID = 2169 ( power PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ ));
|
||||
DESCR("exponentiation");
|
||||
DATA(insert OID = 1739 ( numeric_power PGNSP PGUID 12 1 0 0 0 f f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ ));
|
||||
DATA(insert OID = 8888 ( scale PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 23 "1700" _null_ _null_ _null_ _null_ _null_ numeric_scale _null_ _null_ _null_ ));
|
||||
DESCR("number of decimal digits in the fractional part");
|
||||
DATA(insert OID = 1740 ( numeric PGNSP PGUID 12 1 0 0 0 f f f f t f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ int4_numeric _null_ _null_ _null_ ));
|
||||
DESCR("convert int4 to numeric");
|
||||
DATA(insert OID = 1741 ( log PGNSP PGUID 14 1 0 0 0 f f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.log(10, $1)" _null_ _null_ _null_ ));
|
||||
|
|
|
@ -1022,6 +1022,7 @@ extern Datum numeric_exp(PG_FUNCTION_ARGS);
|
|||
extern Datum numeric_ln(PG_FUNCTION_ARGS);
|
||||
extern Datum numeric_log(PG_FUNCTION_ARGS);
|
||||
extern Datum numeric_power(PG_FUNCTION_ARGS);
|
||||
extern Datum numeric_scale(PG_FUNCTION_ARGS);
|
||||
extern Datum int4_numeric(PG_FUNCTION_ARGS);
|
||||
extern Datum numeric_int4(PG_FUNCTION_ARGS);
|
||||
extern Datum int8_numeric(PG_FUNCTION_ARGS);
|
||||
|
|
|
@ -1852,3 +1852,60 @@ select log(3.1954752e47, 9.4792021e-73);
|
|||
-1.51613372350688302142917386143459361608600157692779164475351842333265418126982165
|
||||
(1 row)
|
||||
|
||||
--
|
||||
-- Tests for scale()
|
||||
--
|
||||
select scale(numeric 'NaN');
|
||||
scale
|
||||
-------
|
||||
|
||||
(1 row)
|
||||
|
||||
select scale(NULL::numeric);
|
||||
scale
|
||||
-------
|
||||
|
||||
(1 row)
|
||||
|
||||
select scale(1.12);
|
||||
scale
|
||||
-------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
select scale(0);
|
||||
scale
|
||||
-------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
select scale(0.00);
|
||||
scale
|
||||
-------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
select scale(1.12345);
|
||||
scale
|
||||
-------
|
||||
5
|
||||
(1 row)
|
||||
|
||||
select scale(110123.12475871856128);
|
||||
scale
|
||||
-------
|
||||
14
|
||||
(1 row)
|
||||
|
||||
select scale(-1123.12471856128);
|
||||
scale
|
||||
-------
|
||||
11
|
||||
(1 row)
|
||||
|
||||
select scale(-13.000000000000000);
|
||||
scale
|
||||
-------
|
||||
15
|
||||
(1 row)
|
||||
|
||||
|
|
|
@ -983,3 +983,17 @@ select log(1.23e-89, 6.4689e45);
|
|||
select log(0.99923, 4.58934e34);
|
||||
select log(1.000016, 8.452010e18);
|
||||
select log(3.1954752e47, 9.4792021e-73);
|
||||
|
||||
--
|
||||
-- Tests for scale()
|
||||
--
|
||||
|
||||
select scale(numeric 'NaN');
|
||||
select scale(NULL::numeric);
|
||||
select scale(1.12);
|
||||
select scale(0);
|
||||
select scale(0.00);
|
||||
select scale(1.12345);
|
||||
select scale(110123.12475871856128);
|
||||
select scale(-1123.12471856128);
|
||||
select scale(-13.000000000000000);
|
||||
|
|
Loading…
Reference in New Issue