dolt icon indicating copy to clipboard operation
dolt copied to clipboard

lateral join with aggregation returns wrong results

Open jycor opened this issue 1 year ago • 0 comments

lateral join with aggregation returns wrong results

Set up:

CREATE TABLE c (c_id INT PRIMARY KEY, bill TEXT);
CREATE TABLE o (o_id INT PRIMARY KEY, c_id INT, ship TEXT);
INSERT INTO c VALUES (1, 'CA'), (2, 'TX'), (3, 'MA'), (4, 'TX'), (5, NULL), (6, 'FL');
INSERT INTO o VALUES (10, 1, 'CA'), (20, 1, 'CA'), (30, 1, 'CA'), (40, 2, 'CA'), (50, 2, 'TX'), (60, 2, NULL), (70, 4, 'WY'), (80, 4, NULL), (90, 6, 'WA');
SELECT * FROM (SELECT c_id AS c_c_id, bill FROM c) sq1, LATERAL (SELECT row_number() OVER () AS rownum FROM o WHERE c_id = c_c_id) sq2 ORDER BY c_c_id, bill, rownum;
+--------+------+--------+
| c_c_id | bill | rownum |
+--------+------+--------+
|      1 | CA   |      1 |
|      1 | CA   |      2 |
|      1 | CA   |      3 |
|      2 | TX   |      1 |
|      2 | TX   |      2 |
|      2 | TX   |      3 |
|      4 | TX   |      1 |
|      4 | TX   |      2 |
|      6 | FL   |      1 |
+--------+------+--------+
9 rows in set (0.0008 sec)
SELECT * FROM (SELECT c_id AS c_c_id, bill FROM c) sq1, LATERAL (SELECT row_number() OVER () AS rownum FROM o WHERE c_id = c_c_id) sq2 ORDER BY c_c_id, bill, rownum;
+--------+------+--------+
| c_c_id | bill | rownum |
+--------+------+--------+
| 1      | CA   | 1      |
| 1      | CA   | 2      |
| 1      | CA   | 3      |
| 2      | TX   | 1      |
| 2      | TX   | 2      |
| 2      | TX   | 3      |
| 3      | MA   | NULL   |
| 4      | TX   | 1      |
| 4      | TX   | 2      |
| 5      | NULL | NULL   |
| 6      | FL   | 1      |
+--------+------+--------+
11 rows in set (0.00 sec)

There are skipped tests in gms/enginetest/queries/lgoic_test_scripts.go

jycor avatar Oct 26 '23 23:10 jycor