Attached is a patch to make factorial(0::int2) return 1.
Index: backend/utils/adt/int.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/utils/adt/int.c,v
retrieving revision 1.48
diff -u -3 -p -r1.48 int.c
--- backend/utils/adt/int.c 2002/02/23 01:01:30 1.48
+++ backend/utils/adt/int.c 2002/05/29 15:56:11
@@ -800,7 +800,9 @@ int2fac(PG_FUNCTION_ARGS)
int16 arg1 = PG_GETARG_INT16(0);
int32 result;
- if (arg1 < 1)
+ if (arg1 == 0)
+ result = 1;
+ else if (arg1 < 1)
result = 0;
else
for (result = 1; arg1 > 0; --arg1)