Trouble ticket is here:  http://www.sqlite.org/src/info/d02e1406a5

Tnx for the test script.

On Wed, Oct 3, 2012 at 2:57 PM, Klaus Keppler <k...@keppler-it.de> wrote:

> 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<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<http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users>
>



-- 
D. Richard Hipp
d...@sqlite.org
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to