Hi,

after upgrading from SQLite 3.7.13 to 3.7.14 our application crashed with a SEGFAULT located within SQLite. I boiled down the SQL statement and the tables used, and was able to reproduce this also with the SQLite standalone binary available at http://www.sqlite.org/sqlite-shell-linux-x86-3071400.zip
(Debian 6, AMD64).

I assume that the new optimizations on the query planner are causing this problem; with 3.7.13 everything works fine.


HOW TO REPRODUCE:
-- create these tables and fill with data:
CREATE TABLE GROUPCUSTOMERS (
    GC_GROUPID INTEGER NOT NULL,
    GC_CUSTOMERID INTEGER NOT NULL,
    GC_OBJECTTYPE INTEGER
);
INSERT INTO GROUPCUSTOMERS VALUES (1, 1, NULL);

CREATE TABLE GROUPPERMISSIONS (
    GP_GROUPID INTEGER NOT NULL,
    GP_MODULEID INTEGER NOT NULL,
    GP_PERMISSIONID INTEGER NOT NULL
);
INSERT INTO GROUPPERMISSIONS VALUES (1, 1, 1);

CREATE TABLE GROUPUSERS (
    GU_GROUPID INTEGER NOT NULL,
    GU_USERID INTEGER NOT NULL,
    GU_OBJECTTYPE INTEGER
);

-- then run this query:
SELECT * FROM
 ( SELECT GP_MODULEID AS CP_MODULEID, GP_PERMISSIONID AS CP_PERMISSIONID
     FROM GROUPCUSTOMERS, GROUPPERMISSIONS
     WHERE (GC_GROUPID = GP_GROUPID)
 ) AS A1
 LEFT JOIN
 ( SELECT GP_MODULEID AS UP_MODULEID, GP_PERMISSIONID AS UP_PERMISSIONID
     FROM GROUPUSERS, GROUPPERMISSIONS
     WHERE (GU_GROUPID = GP_GROUPID)
 ) AS A2
 ON (CP_MODULEID = UP_MODULEID)
    OR (UP_PERMISSIONID = 0)
 ;

=> SEGFAULT

-- note that it is important to have these two records inserted,
-- without them the SQL will work.

-- AND: when running "ANALYZE" before running the SQL statement, the
-- query also succeeds!

In our application, the error occured at the sqlite3VdbeExec function at "case OP_NullRow:" on the line "u.bn.pC->nullRow = 1;"
u.pn.pC is NULL at this point.
(tested with GDB and the original (bloated) SQL statement from within our application)
We did NOT use the flag SQLITE_ENABLE_STAT3.

For any questions don't hezitate to contact me.

Best regards

   -Klaus Keppler



--
______________________________________________________________________
Keppler IT GmbH - Die Hostingexperten.

Dipl.-Inf. Klaus Keppler    Tel. (09131) 691-480
Geschäftsführer             Fax: (09131) 691-489

Am Weichselgarten 7         UStID.-Nr. DE259788698
91058 Erlangen              Amtsgericht Fürth, HRB 11477
www.keppler-it.de           Sitz d. Gesellschaft: Erlangen
______________________________________________________________________
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to