Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0a40563

Browse files
committed
Disallow factorial of negative numbers
The previous implementation returned 1 for all negative numbers, whichis not sensible under any definition.Discussion:https://www.postgresql.org/message-id/flat/6ce1df0e-86a3-e544-743a-f357ff663f68%402ndquadrant.com
1 parent9d402c7 commit0a40563

File tree

2 files changed

+6
-10
lines changed

2 files changed

+6
-10
lines changed

‎src/backend/utils/adt/numeric.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2946,6 +2946,10 @@ numeric_fac(PG_FUNCTION_ARGS)
29462946
NumericVarfact;
29472947
NumericVarresult;
29482948

2949+
if (num<0)
2950+
ereport(ERROR,
2951+
(errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
2952+
errmsg("factorial of a negative number is undefined")));
29492953
if (num <=1)
29502954
{
29512955
res=make_result(&const_one);

‎src/test/regress/expected/numeric.out

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2345,14 +2345,6 @@ SELECT 0!;
23452345
(1 row)
23462346

23472347
SELECT -4!;
2348-
?column?
2349-
----------
2350-
1
2351-
(1 row)
2352-
2348+
ERROR: factorial of a negative number is undefined
23532349
SELECT factorial(-4);
2354-
factorial
2355-
-----------
2356-
1
2357-
(1 row)
2358-
2350+
ERROR: factorial of a negative number is undefined

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp