Skip to content

Commit e25d49a

Browse files
Add test cases for CALCITE-6504
1 parent f451b2a commit e25d49a

1 file changed

Lines changed: 223 additions & 0 deletions

File tree

core/src/test/resources/sql/sub-query.iq

Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8467,5 +8467,228 @@ ON t2.a = foo.a
84678467
+---+---+---+
84688468
(1 row)
84698469

8470+
!ok
8471+
8472+
WITH
8473+
A(id) AS (VALUES (101), (102)),
8474+
C(id) AS (VALUES (301), (302)),
8475+
B(id, fk_A, fk_C) AS (VALUES (201, 101, 301), (202, 101, 999), (203, 999, 301), (204, 999, 999))
8476+
SELECT A.id, C.id
8477+
FROM A
8478+
INNER JOIN C
8479+
ON (
8480+
SELECT min(B.fk_C)
8481+
FROM B
8482+
WHERE A.id = B.fk_A
8483+
) = C.id;
8484+
+-----+-----+
8485+
| ID | ID |
8486+
+-----+-----+
8487+
| 101 | 301 |
8488+
+-----+-----+
8489+
(1 row)
8490+
8491+
!ok
8492+
8493+
WITH
8494+
A(id) AS (VALUES (101), (102)),
8495+
C(id) AS (VALUES (301), (302)),
8496+
B(id, fk_A, fk_C) AS (VALUES (201, 101, 301), (202, 101, 999), (203, 999, 301), (204, 999, 999))
8497+
SELECT A.id, C.id
8498+
FROM (
8499+
SELECT
8500+
*,
8501+
(SELECT min(B.fk_C) FROM B WHERE A.id = B.fk_A) AS fk_C
8502+
FROM A
8503+
) AS A
8504+
INNER JOIN C
8505+
ON fk_c = C.id;
8506+
+-----+-----+
8507+
| ID | ID |
8508+
+-----+-----+
8509+
| 101 | 301 |
8510+
+-----+-----+
8511+
(1 row)
8512+
8513+
!ok
8514+
8515+
WITH
8516+
A(id) AS (VALUES (101), (102)),
8517+
C(id) AS (VALUES (301), (302)),
8518+
B(id, fk_A, fk_C) AS (VALUES (201, 101, 301), (202, 101, 999), (203, 999, 301), (204, 999, 999))
8519+
SELECT A.id, C.id
8520+
FROM A
8521+
LEFT JOIN C
8522+
ON (
8523+
SELECT min(B.fk_C)
8524+
FROM B
8525+
WHERE A.id = B.fk_A
8526+
) = C.id;
8527+
+-----+-----+
8528+
| ID | ID |
8529+
+-----+-----+
8530+
| 101 | 301 |
8531+
| 102 | |
8532+
+-----+-----+
8533+
(2 rows)
8534+
8535+
!ok
8536+
8537+
WITH
8538+
A(id) AS (VALUES (101), (102)),
8539+
C(id) AS (VALUES (301), (302)),
8540+
B(id, fk_A, fk_C) AS (VALUES (201, 101, 301), (202, 101, 999), (203, 999, 301), (204, 999, 999))
8541+
SELECT A.id, C.id
8542+
FROM (
8543+
SELECT
8544+
*,
8545+
(SELECT min(B.fk_C) FROM B WHERE A.id = B.fk_A) AS fk_C
8546+
FROM A
8547+
) AS A
8548+
LEFT JOIN C
8549+
ON fk_c = C.id;
8550+
+-----+-----+
8551+
| ID | ID |
8552+
+-----+-----+
8553+
| 101 | 301 |
8554+
| 102 | |
8555+
+-----+-----+
8556+
(2 rows)
8557+
8558+
!ok
8559+
8560+
WITH
8561+
A(id) AS (VALUES (101), (102)),
8562+
C(id) AS (VALUES (301), (302)),
8563+
B(id, fk_A, fk_C) AS (VALUES (201, 101, 301), (202, 101, 999), (203, 999, 301), (204, 999, 999))
8564+
SELECT A.id, C.id
8565+
FROM C
8566+
RIGHT JOIN A
8567+
ON (
8568+
SELECT min(B.fk_C)
8569+
FROM B
8570+
WHERE A.id = B.fk_A
8571+
) = C.id;
8572+
+-----+-----+
8573+
| ID | ID |
8574+
+-----+-----+
8575+
| 101 | 301 |
8576+
| 102 | |
8577+
+-----+-----+
8578+
(2 rows)
8579+
8580+
!ok
8581+
8582+
WITH
8583+
A(id) AS (VALUES (101), (102)),
8584+
C(id) AS (VALUES (301), (302)),
8585+
B(id, fk_A, fk_C) AS (VALUES (201, 101, 301), (202, 101, 999), (203, 999, 301), (204, 999, 999))
8586+
SELECT A.id, C.id
8587+
FROM C
8588+
RIGHT JOIN (
8589+
SELECT
8590+
*,
8591+
(SELECT min(B.fk_C) FROM B WHERE A.id = B.fk_A) AS fk_C
8592+
FROM A
8593+
) AS A
8594+
ON fk_c = C.id;
8595+
+-----+-----+
8596+
| ID | ID |
8597+
+-----+-----+
8598+
| 101 | 301 |
8599+
| 102 | |
8600+
+-----+-----+
8601+
(2 rows)
8602+
8603+
!ok
8604+
8605+
WITH
8606+
A(id) AS (VALUES (101), (102)),
8607+
C(id) AS (VALUES (301), (302)),
8608+
B(id, fk_A, fk_C) AS (VALUES (201, 101, 301), (202, 101, 999), (203, 999, 301), (204, 999, 999))
8609+
SELECT A.id, C.id
8610+
FROM C
8611+
LEFT JOIN A
8612+
ON (
8613+
SELECT min(B.fk_C)
8614+
FROM B
8615+
WHERE A.id = B.fk_A
8616+
) = C.id;
8617+
+-----+-----+
8618+
| ID | ID |
8619+
+-----+-----+
8620+
| 101 | 301 |
8621+
| | 302 |
8622+
+-----+-----+
8623+
(2 rows)
8624+
8625+
!ok
8626+
8627+
WITH
8628+
A(id) AS (VALUES (101), (102)),
8629+
C(id) AS (VALUES (301), (302)),
8630+
B(id, fk_A, fk_C) AS (VALUES (201, 101, 301), (202, 101, 999), (203, 999, 301), (204, 999, 999))
8631+
SELECT A.id, C.id
8632+
FROM C
8633+
LEFT JOIN (
8634+
SELECT
8635+
*,
8636+
(SELECT min(B.fk_C) FROM B WHERE A.id = B.fk_A) AS fk_C
8637+
FROM A
8638+
) AS A
8639+
ON fk_c = C.id;
8640+
+-----+-----+
8641+
| ID | ID |
8642+
+-----+-----+
8643+
| 101 | 301 |
8644+
| | 302 |
8645+
+-----+-----+
8646+
(2 rows)
8647+
8648+
!ok
8649+
8650+
WITH
8651+
A(id) AS (VALUES (101), (102)),
8652+
C(id) AS (VALUES (301), (302)),
8653+
B(id, fk_A, fk_C) AS (VALUES (201, 101, 301), (202, 101, 999), (203, 999, 301), (204, 999, 999))
8654+
SELECT A.id, C.id
8655+
FROM A
8656+
RIGHT JOIN C
8657+
ON (
8658+
SELECT min(B.fk_C)
8659+
FROM B
8660+
WHERE A.id = B.fk_A
8661+
) = C.id;
8662+
+-----+-----+
8663+
| ID | ID |
8664+
+-----+-----+
8665+
| 101 | 301 |
8666+
| | 302 |
8667+
+-----+-----+
8668+
(2 rows)
8669+
8670+
!ok
8671+
8672+
WITH
8673+
A(id) AS (VALUES (101), (102)),
8674+
C(id) AS (VALUES (301), (302)),
8675+
B(id, fk_A, fk_C) AS (VALUES (201, 101, 301), (202, 101, 999), (203, 999, 301), (204, 999, 999))
8676+
SELECT A.id, C.id
8677+
FROM (
8678+
SELECT
8679+
*,
8680+
(SELECT min(B.fk_C) FROM B WHERE A.id = B.fk_A) AS fk_C
8681+
FROM A
8682+
) AS A
8683+
RIGHT JOIN C
8684+
ON fk_c = C.id;
8685+
+-----+-----+
8686+
| ID | ID |
8687+
+-----+-----+
8688+
| 101 | 301 |
8689+
| | 302 |
8690+
+-----+-----+
8691+
(2 rows)
8692+
84708693
!ok
84718694
# End sub-query.iq

0 commit comments

Comments
 (0)