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.