-C Add\sthe\s--changeset\soption\sto\sthe\ssqldiff\sutility\sprogram,\sfor\sgenerating\na\ssessions\schangeset\sfile\sinstead\sof\san\sSQL\sdiff.
-D 2015-04-11T13:49:16.216
+C Fix\sa\sproblem\swith\ssorting\slarge\samounts\sof\spartially\sordered\sdata.
+D 2015-04-11T20:20:29.810
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 5f78b1ab81b64e7c57a75d170832443e66c0880a
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
F src/vdbeaux.c 413dc496248ac18eb0c19e35e86bb1ffd47b8907
F src/vdbeblob.c 4f2e8e075d238392df98c5e03a64342465b03f90
F src/vdbemem.c c0dc81285b7571b0a31c40f17846fe2397ec1cd9
-F src/vdbesort.c 919717d7599fa31d343ec28bffd0f9e91a4ff5f6
+F src/vdbesort.c a9d39d99969462908f50d09918791883c5b067ab
F src/vdbetrace.c 7e4222955e07dd707a2f360c0eb73452be1cb010
F src/vtab.c 9ca557215e8591ceb66e0b7c0a579c6df1e54b2d
F src/vxworks.h c18586c8edc1bddbc15c004fa16aeb1e1342b4fb
F test/null.test 0dcce4f04284ec66108c503327ad6d224c0752b3
F test/numcast.test 5d126f7f581432e86a90d1e35cac625164aec4a1
F test/openv2.test 0d3040974bf402e19b7df4b783e447289d7ab394
-F test/orderby1.test eb246e377612b21a418fbea57047ba8ea88aaa6b
+F test/orderby1.test d69a2c99c023c85b014ece2cf691caec16a40d6d
F test/orderby2.test bc11009f7cd99d96b1b11e57b199b00633eb5b04
F test/orderby3.test 8619d06a3debdcd80a27c0fdea5c40b468854b99
F test/orderby4.test 4d39bfbaaa3ae64d026ca2ff166353d2edca4ba4
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P da49700ca148d91e1b8863c2eb6ee79144e83ac9 1a2e2803920dcf64190d81d8a487d6c3c9bb28ee
-R c078ada2bdea31973177a0bd82842009
-T +closed 1a2e2803920dcf64190d81d8a487d6c3c9bb28ee
-U drh
-Z 157b78d075c326a9e01bf8b58e910074
+P f9a3a8391c28cf13d76ec54f471735d35059acea
+R 20d1ab6a886883435eefbe113ce65f82
+U dan
+Z 26f0ad0889bc54d15cfec6237366d6c5
-f9a3a8391c28cf13d76ec54f471735d35059acea
\ No newline at end of file
+acca97efda86a0c020854d2dd9da16f5879986b1
\ No newline at end of file
*/
static void vdbeSortSubtaskCleanup(sqlite3 *db, SortSubtask *pTask){
sqlite3DbFree(db, pTask->pUnpacked);
- pTask->pUnpacked = 0;
#if SQLITE_MAX_WORKER_THREADS>0
/* pTask->list.aMemory can only be non-zero if it was handed memory
** from the main thread. That only occurs SQLITE_MAX_WORKER_THREADS>0 */
if( pTask->list.aMemory ){
sqlite3_free(pTask->list.aMemory);
- pTask->list.aMemory = 0;
}else
#endif
{
assert( pTask->list.aMemory==0 );
vdbeSorterRecordFree(0, pTask->list.pList);
}
- pTask->list.pList = 0;
if( pTask->file.pFd ){
sqlite3OsCloseFree(pTask->file.pFd);
- pTask->file.pFd = 0;
- pTask->file.iEof = 0;
}
if( pTask->file2.pFd ){
sqlite3OsCloseFree(pTask->file2.pFd);
- pTask->file2.pFd = 0;
- pTask->file2.iEof = 0;
}
+ memset(pTask, 0, sizeof(SortSubtask));
}
#ifdef SQLITE_DEBUG_SORTER_THREADS
for(i=0; i<pSorter->nTask; i++){
SortSubtask *pTask = &pSorter->aTask[i];
vdbeSortSubtaskCleanup(db, pTask);
+ pTask->pSorter = pSorter;
}
if( pSorter->list.aMemory==0 ){
vdbeSorterRecordFree(0, pSorter->list.pList);
SELECT * FROM t7 WHERE a=?1 ORDER BY rowid;
} {~/ORDER BY/}
+#-------------------------------------------------------------------------
+# Test a partial sort large enough to cause the sorter to spill data
+# to disk.
+#
+reset_db
+do_execsql_test 8.0 {
+ PRAGMA cache_size = 5;
+ CREATE TABLE t1(a, b);
+ CREATE INDEX i1 ON t1(a);
+}
+
+do_eqp_test 8.1 {
+ SELECT * FROM t1 ORDER BY a, b;
+} {
+ 0 0 0 {SCAN TABLE t1 USING INDEX i1}
+ 0 0 0 {USE TEMP B-TREE FOR RIGHT PART OF ORDER BY}
+}
+
+do_execsql_test 8.2 {
+ WITH cnt(i) AS (
+ SELECT 1 UNION ALL SELECT i+1 FROM cnt WHERE i<10000
+ )
+ INSERT INTO t1 SELECT i%2, randomblob(500) FROM cnt;
+}
+
+do_test 8.3 {
+ db eval { SELECT * FROM t1 ORDER BY a, b } { incr res $a }
+ set res
+} 5000
finish_test