Attached is a patch implementing factorial(), returning numeric. Points
authorBruce Momjian <bruce@momjian.us>
Mon, 1 Dec 2003 21:52:38 +0000 (21:52 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 1 Dec 2003 21:52:38 +0000 (21:52 +0000)
commit04a4821adef38155b7920ba9eb83c4c3c29156f8
treec778c2d286441d98a2453f06f5af9c2b214ffc3e
parentaf03663878b257f7fb93a80eec03a8dd070b22b7
Attached is a patch implementing factorial(), returning numeric. Points
to note:

1) arttype is numeric. I thought this was the best way of allowing
arbitarily large factorials, even though factorial(2^63) is a large
number. Happy to change to integers if this is overkill.
2) since we're accepting numeric arguments, the patch tests for floats.
If a numeric is passed with non-zero decimal portion, an error is raised
since (from memory) they are undefined.

Gavin Sherry
src/backend/utils/adt/int.c
src/backend/utils/adt/int8.c
src/backend/utils/adt/numeric.c
src/include/catalog/pg_operator.h
src/include/catalog/pg_proc.h
src/include/utils/builtins.h
src/include/utils/int8.h
src/test/regress/expected/create_operator.out
src/test/regress/sql/create_operator.sql