SQLite

View Ticket
Login
Ticket Hash: d63523637517386191d634eaa71de2c7ecf1e96e
Title: Assertion fault on a join with a repeated column
Status: Closed Type: Code_Defect
Severity: Minor Priority: Immediate
Subsystem: Unknown Resolution: Fixed
Last Modified: 2011-09-19 17:37:47
13.81 years ago
Created: 2011-08-03 16:33:42
13.94 years ago
Version Found In: 3.7.7
Description:
When SQLite is compiled with -DSQLITE_DEBUG, an assert() fault occurs when the following SQL is run:
   CREATE TABLE t1(id1 INTEGER PRIMARY KEY);
   INSERT INTO t1 VALUES(9999);
   CREATE TABLE t2(id2 INTEGER PRIMARY KEY);
   INSERT INTO t2 VALUES(12345);
   INSERT INTO t2 VALUES(54321);
   SELECT count(*) FROM t1, t2 GROUP BY id1, id1;

The failing assert() is checking to ensure that when a "shallow copy" of a value is used, that the original hard copy of the object that the shallow copy is pointing to is unchanged from when the shallow copy was first made. In this case, both the shallow copy and the original are moving together, though, so the assertion fault does not indicate a real malfunction. The work-around is to not compile with SQLITE_DEBUG. A proper fix is forthcoming.