Hi, We found some assertion bugs in sqlite. Here’s the pocs:
#1 — CREATE TABLE v0 ( v1 , v2 PRIMARY KEY ON CONFLICT REPLACE ) ; CREATE TEMP TRIGGER x BEFORE INSERT ON v0 BEGIN INSERT INTO v0 ( v1 ) VALUES ( 10 ) ; END ; CREATE VIRTUAL TABLE v3 USING rtree ( v4 AS( v2 = 'MED PACK' ) , v5 AS( v2 + v2 ) , v6 AS( v2 ) CHECK( v5 ) ) ; CREATE TABLE v7 ( v8 TEXT , v9 ) ; VACUUM ; INSERT INTO v7 VALUES ( 10 , 10 ) ; INSERT INTO v0 VALUES ( 10 , 10 ) ; UPDATE v0 SET v1 = '1995-03-15' WHERE ( substr ( v1 / 10 , 10 ) % 2 ) == 2 ; SELECT * FROM v7 LEFT JOIN v3 ON v6 = 3 OR v4 = 1 WHERE v6 = v4 AND v4 = 10 GROUP BY 3 ; Bitmask sqlite3WhereCodeOneLoopStart(Parse *, Vdbe *, WhereInfo *, int, WhereLevel *, Bitmask): Assertion `(pTerm->prereqRight & pLevel->notReady)!=0' failed. — This bug seems to be incompletely fixed and still exists in the latest development code. #2 — CREATE TABLE v0 ( v1 , v2 FLOAT ) ; CREATE TEMP TRIGGER x BEFORE INSERT ON v0 BEGIN INSERT INTO v0 ( v1 , v2 ) VALUES ( 10 , 1.100000 ) ,( 10 , 0.100000 ) ,( 10 , 1.100000 ) ,( 10 , 10.100000 ) ,( 1 , 10.100000 ) ; END ; CREATE TRIGGER x AFTER INSERT ON v0 BEGIN INSERT INTO v0 ( v2 , v1 ) VALUES ( 10 , 9223372036854775807 ) ,( 1 , 10 ) ,( 1 , 10 ) ,( 10 , 2 ) ,( 3 , 2 ) ,( 3 , 3 ) ; END ; INSERT INTO v0 ( v1 ) VALUES ( 8 ) ,( 10 ) ,( 2 ) ,( 10.100000 ) ,( 10.100000 ) ,( 2 ) ,( 0 ) ,( 10 ) ,( 10.100000 ) ON CONFLICT DO NOTHING ; SELECT v1 FROM v0 WHERE v1 IN ( 10.100000 , v1 ) ORDER BY v1 LIMIT 0 ; UPDATE v0 SET v1 = 'LG CASE' WHERE v1 = NULL OR v1 > 0 AND unlikely ( DISTINCT v1 ) ; CREATE INDEX v3 ON v0 ( v1 , v2 , v1 , v1 , v1 , v1 , v1 , v1 , v1 , v1 , v1 , v2 ) ; ANALYZE v3 ; SELECT v1 , v2 FROM v0 WHERE v2 IN ( 10 ) ORDER BY v1 , v1 NULLS LAST , v2 , v2 DESC , 1.100000 ; Bitmask sqlite3WhereCodeOneLoopStart(Parse *, Vdbe *, WhereInfo *, int, WhereLevel *, Bitmask): Assertion `pLoop->nSkip==0' failed. — This bug exists in the latest development code and release code. #3 — CREATE TABLE v0 ( v2 VARCHAR(20) , v1 FLOAT ) ; INSERT INTO v0 ( v2 , v1 ) VALUES ( 1 , 10 ) ; INSERT INTO v0 VALUES ( 'bbbbbbbbaaaaaaaaaaaaaaaaaaaabbbbbbbbaaaaaaaaaaaaaaaaaaaa' , 10 ) ,( 1.100000 , 10 ) ,( '1994-01-01' , 4294967295 ) ,( '29' , 10 ) ; SELECT AVG ( 10 ) OVER( ORDER BY v2 ) AS xyz FROM v0 ORDER BY v2 ASC ; SELECT DISTINCT CAST ( round ( zipfile ( v1 , v2 ) , zeroblob ( v1 ) ) AS INTEGER ) FROM v0 ; CREATE VIEW v3 ( v4 ) AS SELECT sum ( v1 ) OVER( ) FROM v0 UNION ALL SELECT v1 FROM v0 ; SELECT ( SELECT v4 FROM v3 WHERE 10 = v4 ) , * FROM v3 WHERE v4 > 10 ; int sqlite3VdbeExec(Vdbe *): Assertion `pOp->p3>0' failed. — This bug exist in the latest development code and release code. Yongheng & Rui _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users