You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Soumyakanti Das (Jira)" <ji...@apache.org> on 2021/06/07 18:13:00 UTC
[jira] [Created] (HIVE-25212) Precision of the result set varying
depending on the predicate
Soumyakanti Das created HIVE-25212:
--------------------------------------
Summary: Precision of the result set varying depending on the predicate
Key: HIVE-25212
URL: https://issues.apache.org/jira/browse/HIVE-25212
Project: Hive
Issue Type: Bug
Reporter: Soumyakanti Das
Assignee: Soumyakanti Das
Hive: Precision of the result set varying depending on the predicate
Problem Statement:
{noformat}
SELECT t1.c1 FROM t1 WHERE ((0.26568513289718753700441311593749560415744781494140625)!=(t1.c1)) UNION ALL SELECT t1.c1 FROM t1 WHERE NOT (((0.26568513289718753700441311593749560415744781494140625)!=(t1.c1))) UNION ALL SELECT ALL t1.c1 FROM t1 WHERE (((0.26568513289718753700441311593749560415744781494140625)!=(t1.c1))) IS NULL;
-- result: [ 0.1593230600000000000000000000000000000, 0.8522372800000000000000000000000000000 ]
SELECT t1.c1 FROM t1 WHERE ((0.265)!=(t1.c1)) UNION ALL SELECT t1.c1 FROM t1 WHERE NOT (((0.265)!=(t1.c1))) UNION ALL SELECT ALL t1.c1 FROM t1 WHERE (((0.265)!=(t1.c1))) IS NULL;
-- result: [ 0.15932306, 0.85223728] {noformat}
Steps to reproduce:
{noformat}
DROP DATABASE IF EXISTS database0 CASCADE;
CREATE DATABASE database0;
use database0;
CREATE TABLE t1(c0 FLOAT NOT NULL, c1 DECIMAL(9,8) NOT NULL);
-- Number of Inserts for this run: 2;
INSERT INTO t1(c0, c1) VALUES(0.037977062, 0.15932306);
INSERT INTO t1(c0, c1) VALUES(0.65065473, 0.85223728);
SELECT t1.c1 FROM t1 WHERE ((0.26568513289718753700441311593749560415744781494140625)!=(t1.c1)) UNION ALL SELECT t1.c1 FROM t1 WHERE NOT (((0.26568513289718753700441311593749560415744781494140625)!=(t1.c1))) UNION ALL SELECT ALL t1.c1 FROM t1 WHERE (((0.26568513289718753700441311593749560415744781494140625)!=(t1.c1))) IS NULL;
-- result: [ 0.1593230600000000000000000000000000000, 0.8522372800000000000000000000000000000 ]
SELECT t1.c1 FROM t1 WHERE ((0.265)!=(t1.c1)) UNION ALL SELECT t1.c1 FROM t1 WHERE NOT (((0.265)!=(t1.c1))) UNION ALL SELECT ALL t1.c1 FROM t1 WHERE (((0.265)!=(t1.c1))) IS NULL;
-- result: [ 0.15932306, 0.85223728] {noformat}
Observations:
If the NOT NULL constraint is removed then the result sets match (ideal case is, it should not depend on the constraint)
Similarity with Impala:
Result is as expected
{noformat}
impala database0> SELECT t1.c1 FROM t1 WHERE ((0.26568513289718753700441311593749560415744781494140625)!=(t1.c1)) UNION ALL SELECT t1.c1 FROM t1 WHERE NOT (((0.26568513289718753700441311593749560415744781494140625)!=(t1.c1))) UNION ALL SELECT ALL t1.c1 FROM t1 WHERE (((0.26568513289718753700441311593749560415744781494140625)!=(t1.c1))) IS NULL;
+------------+
| c1 |
+------------+
| 0.15932306 |
| 0.85223728 |
+------------+
rows_count: 2 Time taken: 936ms
impala database0> SELECT t1.c1 FROM t1 WHERE ((0.265)!=(t1.c1)) UNION ALL SELECT t1.c1 FROM t1 WHERE NOT (((0.265)!=(t1.c1))) UNION ALL SELECT ALL t1.c1 FROM t1 WHERE (((0.265)!=(t1.c1))) IS NULL;
+------------+
| c1 |
+------------+
| 0.85223728 |
| 0.15932306 |
+------------+
rows_count: 2 Time taken: 887ms{noformat}
Similarity with Postgres:
{noformat}
temp=# SELECT t1.c1 FROM t1 WHERE ((0.26568513289718753700441311593749560415744781494140625)!=(t1.c1)) UNION ALL SELECT t1.c1 FROM t1 WHERE NOT (((0.26568513289718753700441311593749560415744781494140625)!=(t1.c1))) UNION ALL SELECT ALL t1.c1 FROM t1 WHERE (((0.26568513289718753700441311593749560415744781494140625)!=(t1.c1))) IS NULL;
c1
------------
0.15932306
0.85223728
(2 rows)
temp=# SELECT t1.c1 FROM t1 WHERE ((0.265)!=(t1.c1)) UNION ALL SELECT t1.c1 FROM t1 WHERE NOT (((0.265)!=(t1.c1))) UNION ALL SELECT ALL t1.c1 FROM t1 WHERE (((0.265)!=(t1.c1))) IS NULL;
c1
------------
0.15932306
0.85223728
(2 rows) {noformat}
Is this expected in case of Hive?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)