From 26bcc7cf4084151d7926f48c8d3802eb6d611f93 Mon Sep 17 00:00:00 2001 From: drh Date: Fri, 26 Feb 2016 04:13:39 +0000 Subject: [PATCH] Ephemeral tables used to hold manifested views may not be unordered since they might be subject to an ordered comparison if they are part of a join. FossilOrigin-Name: 3ef6a3153267d5328202fea24fd29ff4d5409295 --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/select.c | 1 - src/vdbeInt.h | 2 +- test/misc8.test | 13 +++++++++++++ 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/manifest b/manifest index 38c37f9331..c74fbbede1 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Remove\sa\sdebuggin\s"exit"\scommand\smistakenly\sleft\sin\sthe\s"where.test"\smodule. -D 2016-02-26T04:04:07.156 +C Ephemeral\stables\sused\sto\shold\smanifested\sviews\smay\snot\sbe\sunordered\ssince\nthey\smight\sbe\ssubject\sto\san\sordered\scomparison\sif\sthey\sare\spart\sof\sa\sjoin. +D 2016-02-26T04:13:39.081 F Makefile.in 4e90dc1521879022aa9479268a4cd141d1771142 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 28fc4ee02333996d31b3602b39eeb8e609a89ce4 @@ -349,7 +349,7 @@ F src/printf.c 63e6fb12bbe702dd664dc3703776c090383a5a26 F src/random.c ba2679f80ec82c4190062d756f22d0c358180696 F src/resolve.c b8f7174e5f8c33c44ded3a25a973d0bb89228c20 F src/rowset.c 9fe4b3ad7cc00944386bb600233d8f523de07a6e -F src/select.c dbc73a63bee99bf7cfac6052477ffc21e899bb08 +F src/select.c 1bacfde7b7cec134d2b354cbcf67bafc67078431 F src/shell.c 89b73e894e737cc2f21e4bce0feb3ea21cc61124 F src/sqlite.h.in a7caa805a345d6a14136c11ccfa6f4c1a6ef6e7b F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 @@ -416,7 +416,7 @@ F src/util.c 6ed9d7bdd3b0a30742027b6d8e8e1a9e2b14f373 F src/vacuum.c feb1eabb20987983d9350cad98299b21fa811f52 F src/vdbe.c 87ae3a5657fefed7875f3eb30e7ababd48013d71 F src/vdbe.h c743791f723049db94f009e3e30958952bc2d512 -F src/vdbeInt.h 84827a809229917fdd3cc05af719dbb61314a5a3 +F src/vdbeInt.h 49a74fe5ece206d2d8666ba9afaf1abeda5f123b F src/vdbeapi.c 95b1f8e527240a18a9aea41a655b013bf07a7009 F src/vdbeaux.c 2c15cf88de4df97428318c8cfac0dea873dae451 F src/vdbeblob.c 3b570b730109e8f653d9d2081649f6e7015113db @@ -897,7 +897,7 @@ F test/misc4.test 0d8be3466adf123a7791a66ba2bc8e8d229e87f3 F test/misc5.test f96428ea95b3820aafc6f1c50cf48a09e4597ee1 F test/misc6.test 953cc693924d88e6117aeba16f46f0bf5abede91 F test/misc7.test edd0b63e2ee29a256900b0514f6fff27e19e9bb2 -F test/misc8.test fc2754d38892f7dac30c22db3616c2764f117d66 +F test/misc8.test 21ac9d35a5e110279ae9e1588b8914f54de1c60b F test/misuse.test 3c34719944ba045cc6c188a4852ba04680728912 F test/mmap1.test 44a5ff1c1bcc7dcf2de50227d1f997e75a8ef1ae F test/mmap2.test 9d6dd9ddb4ad2379f29cc78f38ce1e63ed418022 @@ -1450,7 +1450,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P c871473ffee6dbb0f5b47f1c1329c84b902368ae -R 6fc01093db6658e430bdeb2c14b7bd88 +P beda0b8c76c2c7328a44156257c978cf8f5df59b +R 5d471132c02d748b5b7a9c957a1aab1e U drh -Z 4d54711e77d505069a1e93ab6ffa4de0 +Z 02d11a44d61806b13a4d06a9e5d2f12b diff --git a/manifest.uuid b/manifest.uuid index 368053ee95..18803bd46f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -beda0b8c76c2c7328a44156257c978cf8f5df59b \ No newline at end of file +3ef6a3153267d5328202fea24fd29ff4d5409295 \ No newline at end of file diff --git a/src/select.c b/src/select.c index bde278b43c..aa1f214855 100644 --- a/src/select.c +++ b/src/select.c @@ -2225,7 +2225,6 @@ static int multiSelect( if( dest.eDest==SRT_EphemTab ){ assert( p->pEList ); sqlite3VdbeAddOp2(v, OP_OpenEphemeral, dest.iSDParm, p->pEList->nExpr); - sqlite3VdbeChangeP5(v, BTREE_UNORDERED); dest.eDest = SRT_Table; } diff --git a/src/vdbeInt.h b/src/vdbeInt.h index 710c725e62..b53952fd44 100644 --- a/src/vdbeInt.h +++ b/src/vdbeInt.h @@ -87,7 +87,7 @@ struct VdbeCursor { #endif Bool isEphemeral:1; /* True for an ephemeral table */ Bool useRandomRowid:1;/* Generate new record numbers semi-randomly */ - Bool isOrdered:1; /* True if the underlying table is BTREE_UNORDERED */ + Bool isOrdered:1; /* True if the table is not BTREE_UNORDERED */ Pgno pgnoRoot; /* Root page of the open btree cursor */ i16 nField; /* Number of fields in the header */ u16 nHdrParsed; /* Number of header fields parsed so far */ diff --git a/test/misc8.test b/test/misc8.test index 3ff52e56f1..3817cadf94 100644 --- a/test/misc8.test +++ b/test/misc8.test @@ -94,5 +94,18 @@ do_execsql_test misc8-2.1 { 0 10 {} 10 {} {} } +# 2016-02-26: An assertion fault found by the libFuzzer project +# +do_execsql_test misc8-3.0 { + SELECT * + FROM + ( + (SELECT 0 AS i) AS x1, + (SELECT 1) AS x2 + ) AS x3, + (SELECT 6 AS j UNION ALL SELECT 7) AS x4 + WHERE i