diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2000-02-24 02:05:30 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2000-02-24 02:05:30 +0000 |
| commit | 9110b33f46bf371909b5366c0e05464ccba6ebd9 (patch) | |
| tree | 56d9ea5e2d6c17252f1749bbfddff247740a713e /src/include | |
| parent | 512669db9ee465cf3b2bf9c8817381696aa7c5fb (diff) | |
| download | postgresql-9110b33f46bf371909b5366c0e05464ccba6ebd9.tar.gz | |
Add numeric <-> int8 and numeric <-> int2 conversion functions, as well
as a unary minus operator for numeric. Now that long numeric constants
will get converted to NUMERIC in early parsing, it's essential to have
numeric->int8 conversion to avoid 'can't convert' errors on undecorated
int8 constants. Threw in the rest for completeness while I was in the
area.
I did not force an initdb for this, since the system will still run
without the new pg_proc/pg_operator entries. Possibly I should've.
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/catalog/pg_operator.h | 3 | ||||
| -rw-r--r-- | src/include/catalog/pg_proc.h | 32 | ||||
| -rw-r--r-- | src/include/utils/builtins.h | 171 |
3 files changed, 115 insertions, 91 deletions
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h index 965c7860e4..d8bc91f52e 100644 --- a/src/include/catalog/pg_operator.h +++ b/src/include/catalog/pg_operator.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: pg_operator.h,v 1.69 2000/02/17 03:39:48 tgl Exp $ + * $Id: pg_operator.h,v 1.70 2000/02/24 02:05:28 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -682,6 +682,7 @@ DATA(insert OID = 1760 ( "*" PGUID 0 b t f 1700 1700 1700 1760 0 0 0 numeric DATA(insert OID = 1761 ( "/" PGUID 0 b t f 1700 1700 1700 0 0 0 0 numeric_div - - )); DATA(insert OID = 1762 ( "%" PGUID 0 b t f 1700 1700 1700 0 0 0 0 numeric_mod - - )); DATA(insert OID = 1763 ( "@" PGUID 0 l t f 0 1700 1700 0 0 0 0 numeric_abs - - )); +DATA(insert OID = 1788 ( "-" PGUID 0 l t f 0 1700 1700 0 0 0 0 numeric_uminus - - )); /* diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h index 56423e0c93..f36b2b8c97 100644 --- a/src/include/catalog/pg_proc.h +++ b/src/include/catalog/pg_proc.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: pg_proc.h,v 1.124 2000/02/21 03:36:55 tgl Exp $ + * $Id: pg_proc.h,v 1.125 2000/02/24 02:05:27 tgl Exp $ * * NOTES * The script catalog/genbki.sh reads this file and generates .bki @@ -430,7 +430,7 @@ DESCR("addition"); DATA(insert OID = 205 ( float4mi PGUID 11 f t t 2 f 700 "700 700" 100 0 0 100 float4mi - )); DESCR("subtract"); DATA(insert OID = 206 ( float4um PGUID 11 f t t 1 f 700 "700" 100 0 0 100 float4um - )); -DESCR("subtract"); +DESCR("negate"); DATA(insert OID = 207 ( float4abs PGUID 11 f t t 1 f 700 "700" 100 0 0 100 float4abs - )); DESCR("absolute value"); DATA(insert OID = 208 ( float4inc PGUID 11 f t t 1 f 700 "700" 100 0 0 100 float4inc - )); @@ -441,9 +441,9 @@ DATA(insert OID = 211 ( float4smaller PGUID 11 f t t 2 f 700 "700 700" 100 0 DESCR("smaller of two"); DATA(insert OID = 212 ( int4um PGUID 11 f t t 1 f 23 "23" 100 0 0 100 int4um - )); -DESCR("subtract"); +DESCR("negate"); DATA(insert OID = 213 ( int2um PGUID 11 f t t 1 f 21 "21" 100 0 0 100 int2um - )); -DESCR("subtract"); +DESCR("negate"); DATA(insert OID = 214 ( float8in PGUID 11 f t t 1 f 701 "0" 100 0 0 100 float8in - )); DESCR("(internal)"); @@ -458,7 +458,7 @@ DESCR("addition"); DATA(insert OID = 219 ( float8mi PGUID 11 f t t 2 f 701 "701 701" 100 0 0 100 float8mi - )); DESCR("subtract"); DATA(insert OID = 220 ( float8um PGUID 11 f t t 1 f 701 "701" 100 0 0 100 float8um - )); -DESCR("subtract"); +DESCR("negate"); DATA(insert OID = 221 ( float8abs PGUID 11 f t t 1 f 701 "701" 100 0 0 100 float8abs - )); DESCR("absolute value"); DATA(insert OID = 222 ( float8inc PGUID 11 f t t 1 f 701 "701" 100 0 0 100 float8inc - )); @@ -847,7 +847,7 @@ DESCR("(internal)"); DATA(insert OID = 461 ( int8out PGUID 11 f t t 1 f 23 "0" 100 0 0 100 int8out - )); DESCR("(internal)"); DATA(insert OID = 462 ( int8um PGUID 11 f t t 1 f 20 "20" 100 0 0 100 int8um - )); -DESCR("unary minus"); +DESCR("negate"); DATA(insert OID = 463 ( int8pl PGUID 11 f t t 2 f 20 "20 20" 100 0 0 100 int8pl - )); DESCR("addition"); DATA(insert OID = 464 ( int8mi PGUID 11 f t t 2 f 20 "20 20" 100 0 0 100 int8mi - )); @@ -2333,6 +2333,24 @@ DATA(insert OID = 1767 ( numeric_larger PGUID 11 f t t 2 f 1700 "1700 1700" 10 DESCR("larger of two numbers"); DATA(insert OID = 1769 ( numeric_cmp PGUID 11 f t t 2 f 23 "1700 1700" 100 0 0 100 numeric_cmp - )); DESCR("compare two numbers"); +DATA(insert OID = 1771 ( numeric_uminus PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_uminus - )); +DESCR("negate"); +DATA(insert OID = 1779 ( int8_numeric PGUID 11 f t t 1 f 1700 "20" 100 0 0 100 int8_numeric - )); +DESCR("(internal)"); +DATA(insert OID = 1781 ( numeric PGUID 11 f t t 1 f 1700 "20" 100 0 0 100 int8_numeric - )); +DESCR("(internal)"); +DATA(insert OID = 1782 ( numeric_int8 PGUID 11 f t t 1 f 20 "1700" 100 0 0 100 numeric_int8 - )); +DESCR("(internal)"); +DATA(insert OID = 1783 ( int8 PGUID 11 f t t 1 f 20 "1700" 100 0 0 100 numeric_int8 - )); +DESCR("(internal)"); +DATA(insert OID = 1784 ( int2_numeric PGUID 11 f t t 1 f 1700 "21" 100 0 0 100 int2_numeric - )); +DESCR("(internal)"); +DATA(insert OID = 1785 ( numeric PGUID 11 f t t 1 f 1700 "21" 100 0 0 100 int2_numeric - )); +DESCR("(internal)"); +DATA(insert OID = 1786 ( numeric_int2 PGUID 11 f t t 1 f 21 "1700" 100 0 0 100 numeric_int2 - )); +DESCR("(internal)"); +DATA(insert OID = 1787 ( int2 PGUID 11 f t t 1 f 21 "1700" 100 0 0 100 numeric_int2 - )); +DESCR("(internal)"); /* formatting */ DATA(insert OID = 1770 ( to_char PGUID 11 f t f 2 f 25 "1184 25" 100 0 0 100 timestamp_to_char - )); @@ -2349,7 +2367,7 @@ DATA(insert OID = 1776 ( to_char PGUID 11 f t f 2 f 25 "701 25" 100 0 0 100 DESCR("convert / formatting float8 to text"); DATA(insert OID = 1777 ( to_number PGUID 11 f t f 2 f 1700 "25 25" 100 0 0 100 numeric_to_number - )); DESCR("convert text to numeric"); -DATA(insert OID = 1778 ( to_timestamp PGUID 11 f t f 2 f 1184 "25 25" 100 0 0 100 to_timestamp - )); +DATA(insert OID = 1778 ( to_timestamp PGUID 11 f t f 2 f 1184 "25 25" 100 0 0 100 to_timestamp - )); DESCR("convert text to timestamp"); DATA(insert OID = 1780 ( to_date PGUID 11 f t f 2 f 1082 "25 25" 100 0 0 100 to_date - )); DESCR("convert text to date"); diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h index b6e9cee499..5f132cdfb6 100644 --- a/src/include/utils/builtins.h +++ b/src/include/utils/builtins.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: builtins.h,v 1.103 2000/02/21 03:36:59 tgl Exp $ + * $Id: builtins.h,v 1.104 2000/02/24 02:05:24 tgl Exp $ * * NOTES * This should normally only be included by fmgr.h. @@ -474,97 +474,102 @@ extern text *translate(text *string, char from, char to); /* acl.c */ /* inet_net_ntop.c */ -char *inet_net_ntop(int af, const void *src, int bits, char *dst, size_t size); -char *inet_cidr_ntop(int af, const void *src, int bits, char *dst, size_t size); +extern char *inet_net_ntop(int af, const void *src, int bits, char *dst, size_t size); +extern char *inet_cidr_ntop(int af, const void *src, int bits, char *dst, size_t size); /* inet_net_pton.c */ -int inet_net_pton(int af, const char *src, void *dst, size_t size); +extern int inet_net_pton(int af, const char *src, void *dst, size_t size); /* network.c */ -inet *inet_in(char *str); -char *inet_out(inet *addr); -inet *cidr_in(char *str); -char *cidr_out(inet *addr); -bool network_lt(inet *a1, inet *a2); -bool network_le(inet *a1, inet *a2); -bool network_eq(inet *a1, inet *a2); -bool network_ge(inet *a1, inet *a2); -bool network_gt(inet *a1, inet *a2); -bool network_ne(inet *a1, inet *a2); -bool network_sub(inet *a1, inet *a2); -bool network_subeq(inet *a1, inet *a2); -bool network_sup(inet *a1, inet *a2); -bool network_supeq(inet *a1, inet *a2); -int4 network_cmp(inet *a1, inet *a2); - -text *network_network(inet *addr); -text *network_netmask(inet *addr); -int4 network_masklen(inet *addr); -text *network_broadcast(inet *addr); -text *network_host(inet *addr); +extern inet *inet_in(char *str); +extern char *inet_out(inet *addr); +extern inet *cidr_in(char *str); +extern char *cidr_out(inet *addr); +extern bool network_lt(inet *a1, inet *a2); +extern bool network_le(inet *a1, inet *a2); +extern bool network_eq(inet *a1, inet *a2); +extern bool network_ge(inet *a1, inet *a2); +extern bool network_gt(inet *a1, inet *a2); +extern bool network_ne(inet *a1, inet *a2); +extern bool network_sub(inet *a1, inet *a2); +extern bool network_subeq(inet *a1, inet *a2); +extern bool network_sup(inet *a1, inet *a2); +extern bool network_supeq(inet *a1, inet *a2); +extern int4 network_cmp(inet *a1, inet *a2); + +extern text *network_network(inet *addr); +extern text *network_netmask(inet *addr); +extern int4 network_masklen(inet *addr); +extern text *network_broadcast(inet *addr); +extern text *network_host(inet *addr); /* mac.c */ -macaddr *macaddr_in(char *str); -char *macaddr_out(macaddr *addr); -bool macaddr_lt(macaddr *a1, macaddr *a2); -bool macaddr_le(macaddr *a1, macaddr *a2); -bool macaddr_eq(macaddr *a1, macaddr *a2); -bool macaddr_ge(macaddr *a1, macaddr *a2); -bool macaddr_gt(macaddr *a1, macaddr *a2); -bool macaddr_ne(macaddr *a1, macaddr *a2); -int4 macaddr_cmp(macaddr *a1, macaddr *a2); -text *macaddr_manuf(macaddr *addr); +extern macaddr *macaddr_in(char *str); +extern char *macaddr_out(macaddr *addr); +extern bool macaddr_lt(macaddr *a1, macaddr *a2); +extern bool macaddr_le(macaddr *a1, macaddr *a2); +extern bool macaddr_eq(macaddr *a1, macaddr *a2); +extern bool macaddr_ge(macaddr *a1, macaddr *a2); +extern bool macaddr_gt(macaddr *a1, macaddr *a2); +extern bool macaddr_ne(macaddr *a1, macaddr *a2); +extern int4 macaddr_cmp(macaddr *a1, macaddr *a2); +extern text *macaddr_manuf(macaddr *addr); /* numeric.c */ -Numeric numeric_in(char *str, int dummy, int32 typmod); -char *numeric_out(Numeric num); -Numeric numeric(Numeric num, int32 typmod); -Numeric numeric_abs(Numeric num); -Numeric numeric_sign(Numeric num); -Numeric numeric_round(Numeric num, int32 scale); -Numeric numeric_trunc(Numeric num, int32 scale); -Numeric numeric_ceil(Numeric num); -Numeric numeric_floor(Numeric num); -int32 numeric_cmp(Numeric num1, Numeric num2); -bool numeric_eq(Numeric num1, Numeric num2); -bool numeric_ne(Numeric num1, Numeric num2); -bool numeric_gt(Numeric num1, Numeric num2); -bool numeric_ge(Numeric num1, Numeric num2); -bool numeric_lt(Numeric num1, Numeric num2); -bool numeric_le(Numeric num1, Numeric num2); -Numeric numeric_add(Numeric num1, Numeric num2); -Numeric numeric_sub(Numeric num1, Numeric num2); -Numeric numeric_mul(Numeric num1, Numeric num2); -Numeric numeric_div(Numeric num1, Numeric num2); -Numeric numeric_mod(Numeric num1, Numeric num2); -Numeric numeric_inc(Numeric num); -Numeric numeric_dec(Numeric num); -Numeric numeric_smaller(Numeric num1, Numeric num2); -Numeric numeric_larger(Numeric num1, Numeric num2); -Numeric numeric_sqrt(Numeric num); -Numeric numeric_exp(Numeric num); -Numeric numeric_ln(Numeric num); -Numeric numeric_log(Numeric num1, Numeric num2); -Numeric numeric_power(Numeric num1, Numeric num2); -Numeric int4_numeric(int32 val); -int32 numeric_int4(Numeric num); -Numeric float4_numeric(float32 val); -float32 numeric_float4(Numeric num); -Numeric float8_numeric(float64 val); -float64 numeric_float8(Numeric num); +extern Numeric numeric_in(char *str, int dummy, int32 typmod); +extern char *numeric_out(Numeric num); +extern Numeric numeric(Numeric num, int32 typmod); +extern Numeric numeric_abs(Numeric num); +extern Numeric numeric_uminus(Numeric num); +extern Numeric numeric_sign(Numeric num); +extern Numeric numeric_round(Numeric num, int32 scale); +extern Numeric numeric_trunc(Numeric num, int32 scale); +extern Numeric numeric_ceil(Numeric num); +extern Numeric numeric_floor(Numeric num); +extern int32 numeric_cmp(Numeric num1, Numeric num2); +extern bool numeric_eq(Numeric num1, Numeric num2); +extern bool numeric_ne(Numeric num1, Numeric num2); +extern bool numeric_gt(Numeric num1, Numeric num2); +extern bool numeric_ge(Numeric num1, Numeric num2); +extern bool numeric_lt(Numeric num1, Numeric num2); +extern bool numeric_le(Numeric num1, Numeric num2); +extern Numeric numeric_add(Numeric num1, Numeric num2); +extern Numeric numeric_sub(Numeric num1, Numeric num2); +extern Numeric numeric_mul(Numeric num1, Numeric num2); +extern Numeric numeric_div(Numeric num1, Numeric num2); +extern Numeric numeric_mod(Numeric num1, Numeric num2); +extern Numeric numeric_inc(Numeric num); +extern Numeric numeric_dec(Numeric num); +extern Numeric numeric_smaller(Numeric num1, Numeric num2); +extern Numeric numeric_larger(Numeric num1, Numeric num2); +extern Numeric numeric_sqrt(Numeric num); +extern Numeric numeric_exp(Numeric num); +extern Numeric numeric_ln(Numeric num); +extern Numeric numeric_log(Numeric num1, Numeric num2); +extern Numeric numeric_power(Numeric num1, Numeric num2); +extern Numeric int4_numeric(int32 val); +extern int32 numeric_int4(Numeric num); +extern Numeric int8_numeric(int64 *val); +extern int64 *numeric_int8(Numeric num); +extern Numeric int2_numeric(int16 val); +extern int16 numeric_int2(Numeric num); +extern Numeric float4_numeric(float32 val); +extern float32 numeric_float4(Numeric num); +extern Numeric float8_numeric(float64 val); +extern float64 numeric_float8(Numeric num); /* ri_triggers.c */ -HeapTuple RI_FKey_check_ins(FmgrInfo *proinfo); -HeapTuple RI_FKey_check_upd(FmgrInfo *proinfo); -HeapTuple RI_FKey_noaction_del(FmgrInfo *proinfo); -HeapTuple RI_FKey_noaction_upd(FmgrInfo *proinfo); -HeapTuple RI_FKey_cascade_del(FmgrInfo *proinfo); -HeapTuple RI_FKey_cascade_upd(FmgrInfo *proinfo); -HeapTuple RI_FKey_restrict_del(FmgrInfo *proinfo); -HeapTuple RI_FKey_restrict_upd(FmgrInfo *proinfo); -HeapTuple RI_FKey_setnull_del(FmgrInfo *proinfo); -HeapTuple RI_FKey_setnull_upd(FmgrInfo *proinfo); -HeapTuple RI_FKey_setdefault_del(FmgrInfo *proinfo); -HeapTuple RI_FKey_setdefault_upd(FmgrInfo *proinfo); +extern HeapTuple RI_FKey_check_ins(FmgrInfo *proinfo); +extern HeapTuple RI_FKey_check_upd(FmgrInfo *proinfo); +extern HeapTuple RI_FKey_noaction_del(FmgrInfo *proinfo); +extern HeapTuple RI_FKey_noaction_upd(FmgrInfo *proinfo); +extern HeapTuple RI_FKey_cascade_del(FmgrInfo *proinfo); +extern HeapTuple RI_FKey_cascade_upd(FmgrInfo *proinfo); +extern HeapTuple RI_FKey_restrict_del(FmgrInfo *proinfo); +extern HeapTuple RI_FKey_restrict_upd(FmgrInfo *proinfo); +extern HeapTuple RI_FKey_setnull_del(FmgrInfo *proinfo); +extern HeapTuple RI_FKey_setnull_upd(FmgrInfo *proinfo); +extern HeapTuple RI_FKey_setdefault_del(FmgrInfo *proinfo); +extern HeapTuple RI_FKey_setdefault_upd(FmgrInfo *proinfo); #endif /* BUILTINS_H */ |
