In case you are not following the ticket at
https://www.sqlite.org/src/tktview/787fa716be3a7f650cac1b1413f12f95f5e7639d,
we have simplified the test case to the following:

CREATE TABLE t5(a, b, c, d);
CREATE INDEX t5a ON t5(a);
CREATE INDEX t5b ON t5(b);
CREATE TABLE t6(e);
INSERT INTO t6 VALUES(1);
INSERT INTO t5 VALUES(1,1,1,1), (2,2,2,2);
SELECT * FROM t5 WHERE (a=1 OR b=2) AND c IN (
  SELECT e FROM (SELECT DISTINCT e FROM t6) WHERE e=1
);

The above fails going back to SQLite version 3.8.11 (2015-07-27).

On 11/7/18, Jeremy Evans <c...@jeremyevans.net> wrote:
> The following SQL causes a segmentation fault on:
>
> * OpenBSD -current (3.25.1 and 3.25.3)
> * MacOS 10.14 (3.25.2)
>
> No segmentation fault using the precompiled Windows binary, though.
>
> CREATE TABLE `artists` (
>   `id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
>   `name` varchar(255)
> );
> CREATE TABLE `albums` (
>   `id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
>   `name` varchar(255),
>   `artist_id` integer REFERENCES `artists`
> );
> INSERT INTO `artists` (`name`) VALUES ('Ar');
> INSERT INTO `albums` (`name`, `artist_id`) VALUES ('Al', 1);
> SELECT `artists`.*
> FROM `artists`
> INNER JOIN `artists` AS 'b' ON (`b`.`id` = `artists`.`id`)
> WHERE (`artists`.`id` IN (
>   SELECT `albums`.`artist_id`
>   FROM `albums`
>   WHERE ((`name` = 'Al')
>     AND (`albums`.`artist_id` IS NOT NULL)
>     AND (`albums`.`id` IN (
>       SELECT `id`
>       FROM (
>         SELECT `albums`.`id`,
>                row_number() OVER (
>                  PARTITION BY `albums`.`artist_id`
>                  ORDER BY `name`
>                ) AS 'x'
>         FROM `albums`
>         WHERE (`name` = 'Al')
>       ) AS 't1'
>       WHERE (`x` = 1)
>     ))
>     AND (`albums`.`id` IN (1, 2)))
> ));
>
> gdb output from OpenBSD-current:
>
> (gdb) bt
> #0  0x000016ae6e4a888d in sqlite3VdbeExec (p=0x16ae5cb282c8) at
> sqlite3.c:87803
> #1  0x000016ae6e46dd33 in sqlite3Step (p=0x16ae5cb282c8) at sqlite3.c:81043
> #2  0x000016ae6e46d95a in sqlite3_step (pStmt=0x16ae5cb282c8) at
> sqlite3.c:81106
> #3  0x000016abb6a3a6e6 in ?? () from /usr/local/bin/sqlite3
> #4  0x000016abb6a20e6d in ?? () from /usr/local/bin/sqlite3
> #5  0x000016abb6a3d0da in ?? () from /usr/local/bin/sqlite3
> #6  0x000016abb6a21b6a in ?? () from /usr/local/bin/sqlite3
> #7  0x000016abb6a17717 in ?? () from /usr/local/bin/sqlite3
> #8  0x000016abb6a10056 in ?? () from /usr/local/bin/sqlite3
> #9  0x0000000000000000 in ?? ()
> (gdb) info locals
> pC = (VdbeCursor *) 0x0
> pCrsr = (BtCursor *) 0x16ae5cb29ac8
> res = 1
> azType = 0x16ae6e5a8c00
> aLTb = 0x16ae6e422130 "\001"
> aEQb = 0x16ae6e422136 ""
> aGTb = 0x16ae6e42213c "\001"
> and_logic = 0x16ae6e422142 ""
> or_logic = 0x16ae6e42214b ""
> aFlag = 0x16ae6e422154
> aZero = 0x16ae6e5ac3e0 ""
> vfsFlags = 1054
> aOp = (Op *) 0x16ae54417008
> pOp = (Op *) 0x16ae54417ff8
> rc = 0
> db = (sqlite3 *) 0x16ae921ec408
> resetSchemaOnFault = 0 '\0'
> encoding = 1 '\001'
> iCompare = 1
> nVmStep = 291
> nProgressLimit = 4294967295
> aMem = (Mem *) 0x16ae544184b0
> pIn1 = (Mem *) 0x16ae54418600
> pIn2 = (Mem *) 0x16ae544187f8
> pIn3 = (Mem *) 0x16ae54418590
> pOut = (Mem *) 0x16ae54418a60
>
> If other gdb information would be helpful, please let me know.
>
> Thanks,
> Jeremy
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>


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

Reply via email to