Queries with scalar subqueries inside ON or WHERE conditions might crash
Details
| Detail name | Value |
|---|---|
| Changelog Number | 849 |
| Type | Bug |
| Status | Resolved |
| Affected Versions | |
| Fix Versions | Exasol 6.1.0 |
| Resolution Date | 2018-05-31 |
Problem
Some queries might lead to an internal server error if a scalar subquery is inside an ON or a WHERE condition. The problem might occur in the following cases:
- The subquery is used directly as a boolean expression. For instance, the following query crashes.
CREATE SCHEMA S; CREATE OR REPLACE TABLE T0(C0 INT); CREATE OR REPLACE TABLE T1(C1 BOOL); SELECT * FROM T0 JOIN T1 ON C1 = 1 AND (SELECT MAX(C1) FROM T1);
- The scalar subquery is contained in the WHERE clause and it is the argument of a function. For instance, the following query crashes.
CREATE SCHEMA S;
CREATE OR REPLACE TABLE T2 (A INT, B INT, D1 DATE);
CREATE OR REPLACE TABLE T3 (X INT, Y INT, D2 DATE);
SELECT * FROM T2 JOIN T3 ON A=X
WHERE TO_DATE( (SELECT MAX(D1) FROM T2) ) = TO_DATE('2000-01-01');
- The result of the scalar subquery is part of an IN condition. For instance, the following query crashes.
CREATE SCHEMA S;
CREATE OR REPLACE TABLE T2 (A INT, B INT, D1 DATE);
CREATE OR REPLACE TABLE T3 (X INT, Y INT, D2 DATE);
SELECT * FROM T2 JOIN T3 ON A=X
WHERE TO_DATE( (SELECT MAX(D1) FROM T2) ) IN ('2000-01-01');