From 04a4821adef38155b7920ba9eb83c4c3c29156f8 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Mon, 1 Dec 2003 21:52:38 +0000 Subject: 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/test/regress/expected/create_operator.out | 14 ++++++-------- src/test/regress/sql/create_operator.sql | 14 ++++++-------- 2 files changed, 12 insertions(+), 16 deletions(-) (limited to 'src/test') diff --git a/src/test/regress/expected/create_operator.out b/src/test/regress/expected/create_operator.out index 7685dbe802..df25f35ae7 100644 --- a/src/test/regress/expected/create_operator.out +++ b/src/test/regress/expected/create_operator.out @@ -15,19 +15,17 @@ CREATE OPERATOR <% ( negator = >=% ); CREATE OPERATOR @#@ ( - rightarg = int4, -- left unary - procedure = int4fac + rightarg = int8, -- left unary + procedure = numeric_fac ); CREATE OPERATOR #@# ( - leftarg = int4, -- right unary - procedure = int4fac + leftarg = int8, -- right unary + procedure = numeric_fac ); CREATE OPERATOR #%# ( - leftarg = int4, -- right unary - procedure = int4fac + leftarg = int8, -- right unary + procedure = numeric_fac ); -- Test comments COMMENT ON OPERATOR ###### (int4, NONE) IS 'bad right unary'; ERROR: operator does not exist: integer ###### -COMMENT ON OPERATOR #%# (int4, NONE) IS 'right unary'; -COMMENT ON OPERATOR #%# (int4, NONE) IS NULL; diff --git a/src/test/regress/sql/create_operator.sql b/src/test/regress/sql/create_operator.sql index 4167bf3ab8..6637629ea4 100644 --- a/src/test/regress/sql/create_operator.sql +++ b/src/test/regress/sql/create_operator.sql @@ -18,23 +18,21 @@ CREATE OPERATOR <% ( ); CREATE OPERATOR @#@ ( - rightarg = int4, -- left unary - procedure = int4fac + rightarg = int8, -- left unary + procedure = numeric_fac ); CREATE OPERATOR #@# ( - leftarg = int4, -- right unary - procedure = int4fac + leftarg = int8, -- right unary + procedure = numeric_fac ); CREATE OPERATOR #%# ( - leftarg = int4, -- right unary - procedure = int4fac + leftarg = int8, -- right unary + procedure = numeric_fac ); -- Test comments COMMENT ON OPERATOR ###### (int4, NONE) IS 'bad right unary'; -COMMENT ON OPERATOR #%# (int4, NONE) IS 'right unary'; -COMMENT ON OPERATOR #%# (int4, NONE) IS NULL; -- cgit v1.2.1