summaryrefslogtreecommitdiff
path: root/src/test/regress
diff options
context:
space:
mode:
authorTom Lane2018-04-29 22:15:16 +0000
committerTom Lane2018-04-29 22:15:16 +0000
commit59c2df3ae8947c4c06217d1b330cfa529f480e17 (patch)
tree508641935235fa356a9f6d9bf51291c3a9bc653c /src/test/regress
parent37c02b2b0a146e623ff6d350f89310a5cfad25e0 (diff)
Avoid wrong results for power() with NaN input on more platforms.
Buildfarm results show that the modern POSIX rule that 1 ^ NaN = 1 is not honored on *BSD until relatively recently, and really old platforms don't believe that NaN ^ 0 = 1 either. (This is unsurprising, perhaps, since SUSv2 doesn't require either behavior.) In hopes of getting to platform independent behavior, let's deal with all the NaN-input cases explicitly in dpow(). Note that numeric_power() doesn't know either of these special cases. But since that behavior is platform-independent, I think it should be addressed separately, and probably not back-patched. Discussion: https://postgr.es/m/75DB81BEEA95B445AE6D576A0A5C9E936A73E741@BPXM05GP.gisp.nec.co.jp
Diffstat (limited to 'src/test/regress')
-rw-r--r--src/test/regress/expected/float8-exp-three-digits-win32.out6
-rw-r--r--src/test/regress/expected/float8-small-is-zero.out6
-rw-r--r--src/test/regress/expected/float8-small-is-zero_1.out6
-rw-r--r--src/test/regress/expected/float8.out6
-rw-r--r--src/test/regress/sql/float8.sql1
5 files changed, 25 insertions, 0 deletions
diff --git a/src/test/regress/expected/float8-exp-three-digits-win32.out b/src/test/regress/expected/float8-exp-three-digits-win32.out
index 8e4cbb05042..1d0e3a46f2d 100644
--- a/src/test/regress/expected/float8-exp-three-digits-win32.out
+++ b/src/test/regress/expected/float8-exp-three-digits-win32.out
@@ -358,6 +358,12 @@ SELECT power(float8 'NaN', float8 'NaN');
NaN
(1 row)
+SELECT power(float8 '-1', float8 'NaN');
+ power
+-------
+ NaN
+(1 row)
+
SELECT power(float8 '1', float8 'NaN');
power
-------
diff --git a/src/test/regress/expected/float8-small-is-zero.out b/src/test/regress/expected/float8-small-is-zero.out
index e3e004451c1..fa47c9d2759 100644
--- a/src/test/regress/expected/float8-small-is-zero.out
+++ b/src/test/regress/expected/float8-small-is-zero.out
@@ -362,6 +362,12 @@ SELECT power(float8 'NaN', float8 'NaN');
NaN
(1 row)
+SELECT power(float8 '-1', float8 'NaN');
+ power
+-------
+ NaN
+(1 row)
+
SELECT power(float8 '1', float8 'NaN');
power
-------
diff --git a/src/test/regress/expected/float8-small-is-zero_1.out b/src/test/regress/expected/float8-small-is-zero_1.out
index e9487cffa64..15d48dfc399 100644
--- a/src/test/regress/expected/float8-small-is-zero_1.out
+++ b/src/test/regress/expected/float8-small-is-zero_1.out
@@ -362,6 +362,12 @@ SELECT power(float8 'NaN', float8 'NaN');
NaN
(1 row)
+SELECT power(float8 '-1', float8 'NaN');
+ power
+-------
+ NaN
+(1 row)
+
SELECT power(float8 '1', float8 'NaN');
power
-------
diff --git a/src/test/regress/expected/float8.out b/src/test/regress/expected/float8.out
index 1bf225ca2b6..2d5f0247408 100644
--- a/src/test/regress/expected/float8.out
+++ b/src/test/regress/expected/float8.out
@@ -358,6 +358,12 @@ SELECT power(float8 'NaN', float8 'NaN');
NaN
(1 row)
+SELECT power(float8 '-1', float8 'NaN');
+ power
+-------
+ NaN
+(1 row)
+
SELECT power(float8 '1', float8 'NaN');
power
-------
diff --git a/src/test/regress/sql/float8.sql b/src/test/regress/sql/float8.sql
index 2b2e175c6d7..78bec137e2f 100644
--- a/src/test/regress/sql/float8.sql
+++ b/src/test/regress/sql/float8.sql
@@ -111,6 +111,7 @@ SELECT power(float8 '144', float8 '0.5');
SELECT power(float8 'NaN', float8 '0.5');
SELECT power(float8 '144', float8 'NaN');
SELECT power(float8 'NaN', float8 'NaN');
+SELECT power(float8 '-1', float8 'NaN');
SELECT power(float8 '1', float8 'NaN');
SELECT power(float8 'NaN', float8 '0');