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
This commit is contained in:
drh 2016-02-26 04:13:39 +00:00
parent c9eaeef1fe
commit 26bcc7cf40
5 changed files with 23 additions and 11 deletions

View File

@ -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

View File

@ -1 +1 @@
beda0b8c76c2c7328a44156257c978cf8f5df59b
3ef6a3153267d5328202fea24fd29ff4d5409295

View File

@ -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;
}

View File

@ -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 */

View File

@ -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<rowid
ORDER BY 1;
} {0 1 6 0 1 7}
finish_test