SELECT INVALID with prepared parameters cause an error
Details
| Detail name | Value |
|---|---|
| Changelog Number | 28887 |
| Type | Bug |
| Status | Resolved |
| Affected Versions | Exasol 8.29.0, Exasol 8.21.0, Exasol 2025.1.0, Exasol 2025.2.0 |
| Fix Versions | Exasol 2026.1.0, Exasol 2025.2.1, Exasol 2025.1.10 |
| Resolution Date | 2026-02-18 |
Description
SELECT INVALID PRIMARY KEY/SELECT INVALID UNIQUE/SELECT INVALID FOREIGN KEY statements lead to an internal server error if used with prepared parameters.
Example:
CREATE TABLE t1 (u1 VARCHAR(1) UTF8 NOT NULL PRIMARY KEY);
INSERT INTO t1 VALUES ('x');
CREATE TABLE t_with_invalid_unique (c1 VARCHAR(1) UTF8);
INSERT INTO t_with_invalid_unique VALUES ('x'), ('x');
CREATE TABLE t_with_invalid_foreign_key (c1 VARCHAR(1) UTF8);
INSERT INTO t_with_invalid_foreign_key VALUES (NULL);
-- Expected: Resultset
-- Observed: Internal Server Error
SELECT INVALID PRIMARY KEY (dummy) FROM DUAL WHERE ? IS NOT NULL;
-- Expected: Resultset
-- Observed: Internal Server Error
SELECT INVALID UNIQUE (c1) FROM t_with_invalid_unique WHERE ? IS NOT NULL;
-- Expected: Resultset
-- Observed: Internal Server Error
SELECT INVALID FOREIGN KEY (c1) FROM t_with_invalid_foreign_key referencing t1(u1) WHERE ? IS NOT NULL;
Workaround
Wrap the queries in another SELECT.
-- Expected: Resultset -- Observed: Resultset SELECT * FROM (SELECT INVALID PRIMARY KEY (dummy) FROM DUAL WHERE ? IS NOT NULL); -- Expected: Resultset -- Observed: Resultset SELECT * FROM (SELECT INVALID UNIQUE (c1) FROM t_with_invalid_unique WHERE ? IS NOT NULL); -- Expected: Resultset -- Observed: Resultset SELECT * FROM (SELECT INVALID FOREIGN KEY (c1) FROM t_with_invalid_foreign_key referencing t1(u1) WHERE ? IS NOT NULL);
Fix
The statements work as intended.