Skip to content

Сrash during partial index checking if the condition raises a conversion error #7998

@suyZhong

Description

@suyZhong

Consider the below test case.

CREATE TABLE t0(c0 VARCHAR(500), c1 INT); 
CREATE UNIQUE INDEX t0i0 ON t0(c0 , c1 ) WHERE (t0.c1 BETWEEN false AND true);
INSERT INTO t0(c0, c1) VALUES (1, 2);

When executing the above statements by using isql, the following error is returned, which I suppose is unexpected. I could not simply exit the isql session by Ctrl+C, and had to kill the process.

Statement failed, SQLSTATE = 22018
Error during savepoint backout - transaction invalidated
-conversion error from string "2"

Besides, if executes the above statements by using JDBC, the firebird server would crash.

Connection conn = DriverManager.getConnection("jdbc:firebirdsql://localhost:10009//app/default?user=SYSDBA&password=masterkey");
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE t0(c0 VARCHAR(500), c1 INT)");
stmt.execute("CREATE UNIQUE INDEX t0i0 ON t0(c0 , c1 ) WHERE (t0.c1 BETWEEN false AND true)");
stmt.execute("INSERT INTO t0(c0, c1) VALUES (1, 2)");

The environment I used: (I manually built the firebird from the source code in a docker image.)

  • Database version: LI-T6.0.0.253 (f4e725f)
  • JDBC: jaybird 5.0.3.java11
  • Java: 17.0.8.1

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions