Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
5.5.40, 10.0.14
-
None
Description
DROP TABLE IF EXISTS t1,t2;
|
CREATE TABLE t1 (a TIME(6) PRIMARY KEY);
|
INSERT INTO t1 VALUES ('10:20:30');
|
DROP TABLE IF EXISTS t2;
|
CREATE TABLE t2 (a DOUBLE);
|
INSERT INTO t2 VALUES (102030),(102030.000000001);
|
SELECT t1.* FROM t1 JOIN t2 USING(a);
|
SELECT t1.* FROM t1 LEFT JOIN t2 USING(a);
|
Both SELECT queries correctly return 2 rows.
If I add a primary key on t2 and return the same queries:
ALTER TABLE t2 ADD PRIMARY KEY(a); |
SELECT t1.* FROM t1 JOIN t2 USING(a); |
SELECT t1.* FROM t1 LEFT JOIN t2 USING(a); |
both SELECT queries return only one row.
This is wrong. Two rows are expected for both queries.
The same problem is repeatable if I change t2.a from DOUBLE to DECIMAL(30,10).
Attachments
Activity
Field | Original Value | New Value |
---|---|---|
Summary | Bad results with joins comparing TIME and DOUBLE columns | Bad results with joins comparing TIME and DOUBLE/DECIMAL columns |
Description |
{code} DROP TABLE IF EXISTS t1,t2; CREATE TABLE t1 (a TIME(6) PRIMARY KEY); INSERT INTO t1 VALUES ('10:20:30'); DROP TABLE IF EXISTS t2; CREATE TABLE t2 (a DOUBLE); INSERT INTO t2 VALUES (102030),(102030.000000001); SELECT t1.* FROM t1 JOIN t2 USING(a); SELECT t1.* FROM t1 LEFT JOIN t2 USING(a); {code} Both SELECT queries correctly return 2 rows. If I add a primary key on t2 and return the same queries: {code:sql} ALTER TABLE t2 ADD PRIMARY KEY(a); SELECT t1.* FROM t1 JOIN t2 USING(a); SELECT t1.* FROM t1 LEFT JOIN t2 USING(a); {code} both SELECT queries return only one row. This is wrong. Two rows are expected for both queries. |
{code} DROP TABLE IF EXISTS t1,t2; CREATE TABLE t1 (a TIME(6) PRIMARY KEY); INSERT INTO t1 VALUES ('10:20:30'); DROP TABLE IF EXISTS t2; CREATE TABLE t2 (a DOUBLE); INSERT INTO t2 VALUES (102030),(102030.000000001); SELECT t1.* FROM t1 JOIN t2 USING(a); SELECT t1.* FROM t1 LEFT JOIN t2 USING(a); {code} Both SELECT queries correctly return 2 rows. If I add a primary key on t2 and return the same queries: {code:sql} ALTER TABLE t2 ADD PRIMARY KEY(a); SELECT t1.* FROM t1 JOIN t2 USING(a); SELECT t1.* FROM t1 LEFT JOIN t2 USING(a); {code} both SELECT queries return only one row. This is wrong. Two rows are expected for both queries. The same problem is repeatable if I change t2.a from DOUBLE to DECIMAL(30,10). |
Fix Version/s | 10.0 [ 16000 ] |
Component/s | Optimizer [ 10200 ] | |
Fix Version/s | 10.0.15 [ 17300 ] | |
Fix Version/s | 10.0 [ 16000 ] | |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |
Workflow | MariaDB v2 [ 57002 ] | MariaDB v3 [ 64900 ] |
Workflow | MariaDB v3 [ 64900 ] | MariaDB v4 [ 148373 ] |