Case with division in group by may lead to invalid error
Details
| Detail name | Value |
|---|---|
| Changelog Number | 31566 |
| Type | Bug |
| Status | Resolved |
| Affected Versions | Exasol 2026.1.0, Exasol 2025.1.11 |
| Fix Versions | Exasol 2026.1.1, Exasol 2025.1.13 |
| Resolution Date | 2026-07-15 |
Description
A valid query containing a GROUP BY clause may lead to a “data exception - division by zero” error if the following conditions apply:
- The query contains a case expression (e.g., CASE, IF) in the GROUP BY clause.
- The query contains the same expression in the select list.
- The query contains a column or expression in the GROUP BY that is not necessary to form the groups of the GROUP BY.
- The case expression contains a division.
WITH W1 AS ( SELECT a1, a1 AS x FROM (VALUES BETWEEN -1 AND 1) T1(a1) GROUP BY a1 ) SELECT a1, x, CASE WHEN y != 0 THEN 1/ y ELSE NULL END FROM W1, (VALUES BETWEEN -1 AND 2 ) T(y) GROUP BY a1, /*the column x is not necessary*/ x, CASE WHEN y != 0 THEN 1/ y ELSE NULL END;
Workaround
The workaround is to break any of the above conditions. For example, to remove x:
WITH W1 AS ( SELECT a1, a1 AS x FROM (VALUES BETWEEN -1 AND 1) T1(a1) GROUP BY a1 ) SELECT a1, a1, CASE WHEN y != 0 THEN 1/ y ELSE NULL END FROM W1, (VALUES BETWEEN -1 AND 2 ) T(y) GROUP BY a1, CASE WHEN y != 0 THEN 1/ y ELSE NULL END;
Fix
The query no longer throws an error.