|
14 | 14 | * Copyright (c) 1998-2008, PostgreSQL Global Development Group
|
15 | 15 | *
|
16 | 16 | * IDENTIFICATION
|
17 |
| - * $PostgreSQL: pgsql/src/backend/utils/adt/numeric.c,v 1.113 2008/05/09 15:36:06 momjian Exp $ |
| 17 | + * $PostgreSQL: pgsql/src/backend/utils/adt/numeric.c,v 1.114 2008/05/09 21:31:23 momjian Exp $ |
18 | 18 | *
|
19 | 19 | *-------------------------------------------------------------------------
|
20 | 20 | */
|
@@ -1897,13 +1897,17 @@ numeric_power(PG_FUNCTION_ARGS)
|
1897 | 1897 | * certain error conditions. Specifically, we don't return a divide-by-zero
|
1898 | 1898 | * error code for 0 ^ -1.
|
1899 | 1899 | */
|
1900 |
| - if ((cmp_var(&arg1, &const_zero) == 0 && |
1901 |
| - cmp_var(&arg2, &const_zero) < 0) || |
1902 |
| - (cmp_var(&arg1, &const_zero) < 0 && |
1903 |
| - cmp_var(&arg2, &arg2_trunc) != 0)) |
| 1900 | + if (cmp_var(&arg1, &const_zero) == 0 && |
| 1901 | + cmp_var(&arg2, &const_zero) < 0) |
1904 | 1902 | ereport(ERROR,
|
1905 | 1903 | (errcode(ERRCODE_INVALID_ARGUMENT_FOR_POWER_FUNCTION),
|
1906 |
| - errmsg("invalid argument for power function"))); |
| 1904 | + errmsg("zero raised to a negative power is undefined"))); |
| 1905 | + |
| 1906 | + if (cmp_var(&arg1, &const_zero) < 0 && |
| 1907 | + cmp_var(&arg2, &arg2_trunc) != 0) |
| 1908 | + ereport(ERROR, |
| 1909 | + (errcode(ERRCODE_INVALID_ARGUMENT_FOR_POWER_FUNCTION), |
| 1910 | + errmsg("a negative number raised to a non-integer power yields a complex result"))); |
1907 | 1911 |
|
1908 | 1912 | /*
|
1909 | 1913 | * Call power_var() to compute and return the result; note it handles
|
|
0 commit comments