Query with analytic function referencing a correlated subquery can fail
Details
| Detail name | Value |
|---|---|
| Changelog Number | 31567 |
| Type | Bug |
| Status | Resolved |
| Affected Versions | Exasol 6.2.0, Exasol 7.0.0, Exasol 7.1.0, Exasol 8.0.0, Exasol 8.29.0, Exasol 7.1.30, Exasol 2025.1.0, Exasol 2025.2.0, Exasol 2026.1.0 |
| Fix Versions | Exasol 2026.1.1, Exasol 2025.1.13 |
| Resolution Date | 2026-07-15 |
Description
Queries containing an analytic function that references a correlated scalar subquery may faill with an internal server error if the following conditions apply:
- The query contains an analytic function.
- The analytic function references a column from a correlated subquery in either the PARTITION BY or ORDER BY clause.
- The same column appears also in the select list of the query.
Example
SELECT c2, ROW_NUMBER() OVER (PARTITION BY c2)
FROM (SELECT (SELECT 1
FROM VALUES (101) AS a(a1)
WHERE a1 = c1) as c2
FROM (SELECT b1 c1
FROM VALUES (678) AS b(b1)));
Workaround
Option 1: Add ORDER BY FALSE:
SELECT c2, ROW_NUMBER() OVER (PARTITION BY c2)
FROM (SELECT (SELECT 1
FROM VALUES (101) AS a(a1)
WHERE a1 = c1) as c2
FROM (SELECT b1 c1
FROM VALUES (678) AS b(b1)) ORDER BY FALSE);
Option 2: Add ROWNUM:
SELECT /* workaround: */ ROWNUM, c2, ROW_NUMBER() OVER (PARTITION BY c2)
FROM (SELECT (SELECT 1
FROM VALUES (101) AS a(a1)
WHERE a1 = c1) as c2
FROM (SELECT b1 c1
FROM VALUES (678) AS b(b1)));
Fix
Affected queries no longer fail.