*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/int.c,v 1.72 2006/03/11 01:19:22 neilc Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/int.c,v 1.73 2006/06/12 16:09:11 momjian Exp $
*
*-------------------------------------------------------------------------
*/
int32 arg2 = PG_GETARG_INT32(1);
int32 result;
+#ifdef WIN32
+ /*
+ * Win32 doesn't throw a catchable exception for
+ * SELECT -2147483648 /* INT_MIN */ * (-1);
+ */
+ if (arg2 == -1 && arg1 == INT_MIN)
+ ereport(ERROR,
+ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+ errmsg("integer out of range")));
+#endif
+
result = arg1 * arg2;
/*
(errcode(ERRCODE_DIVISION_BY_ZERO),
errmsg("division by zero")));
+#ifdef WIN32
+ /*
+ * Win32 doesn't throw a catchable exception for
+ * SELECT -2147483648 /* INT_MIN */ / (-1);
+ */
+ if (arg2 == -1 && arg1 == INT_MIN)
+ ereport(ERROR,
+ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+ errmsg("integer out of range")));
+#endif
+
result = arg1 / arg2;
/*