#define SQLITE_ENABLE_EXPLAIN_COMMENTS 1

makes it work properly.  neither NDEBUG nor SQLITE_DEBUG explicitly defined.

Over to Richard ...

> -----Original Message-----
> From: sqlite-users [mailto:sqlite-users-boun...@mailinglists.sqlite.org]
> On Behalf Of Keith Medcalf
> Sent: Tuesday, 11 October, 2016 19:22
> To: SQLite mailing list
> Subject: Re: [sqlite] LIMIT doesn't return expected rows
> 
> 
> By default, I do not see the query being flattened.  Flattening it
> manually produces the same right results independant of something config.h
> does...
> 
> SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags DESC limit
> 3;
> 1
> 2
> 3
> sqlite> select i.id from i, m where i.id=m.id order by flags desc limit 3;
> select i.id from i, m where i.id=m.id order by flags desc limit 3;
> 6
> 5
> 7
> 
> > Well I can reproduce the wrong answer.  If I compile the amalgamation
> > code:
> >
> >   with no config.h I get the same result as you,
> >   but with the following config.h, the result is correct
> >
> >  (this is with the code from the head of trunk):
> >
> > #ifndef _CONFIG_H
> > #define _CONFIG_H
> >
> > // Values of WINVER and _WIN32_WINNT for various minimum levels of Win32
> > Compatability
> > //
> > // WIN10    0x0A00      WIN6     0x0600      W2K      0x0500     NT4
> > 0x0400
> > //                      VISTA    0x0600      WXP      0x0501     W95
> > 0x0400
> > //                      W2K8     0x0600      W2K3     0x0502     NT4E
> > 0x0401
> > //                      WIN7     0x0601                          W98
> > 0x0410
> > //                      WIN8     0x0602                          WME
> > 0x0490
> > //                      WIN81    0x0603
> >
> > #ifndef _WIN32_WINNT
> > #define _WIN32_WINNT 0x0600
> > #endif
> > #ifndef WINVER
> > #define WINVER _WIN32_WINNT
> > #endif
> >
> > // General Platform Compilation Support Options
> >
> > #define HAVE_MALLOC_USABLE_SIZE 1
> > #define HAVE_USLEEP 1
> >
> > // *** SQLITE GENERAL CONFIGURATION OPTIONS ***
> >
> > // #define SQLITE_DEFAULT_AUTOMATIC_INDEX      1               //
> default:
> > 1
> > // #define SQLITE_DEFAULT_AUTOVACUUM           0               //
> default:
> > 0
> > #define SQLITE_DEFAULT_CACHE_SIZE           65536           // 256 MB
> > // #define SQLITE_DEFAULT_FILE_FORMAT          4               //
> default:
> > 4
> > // #define SQLITE_DEFAULT_FILE_PERMISSIONS     0644            //
> default:
> > 0644
> > #define SQLITE_DEFAULT_FOREIGN_KEYS         1               // default:
> 0
> > // #define SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT   4194304         //
> default:
> > -1
> > // #define SQLITE_DEFAULT_LOCKING_MODE         0               //
> default:
> > 0
> > // #define SQLITE_DEFAULT_MEMSTATUS            1               //
> default:
> > 1
> > #define SQLITE_DEFAULT_PAGE_SIZE            4096            // default:
> > 4096 max: 65536
> > // #define SQLITE_DEFAULT_SYNCHRONOUS          2               //
> default:
> > 2
> > // #define SQLITE_DEFAULT_WAL_SYNCHRONOUS      2               //
> default:
> > same as default synchronous
> > // #define SQLITE_DEFAULT_WORKER_THREADS       4               //
> default:
> > 0
> > #define SQLITE_DEFAULT_WAL_AUTOCHECKPOINT   256             // default:
> > 1000 pages
> > #define SQLITE_DEFAULT_PROXYDIR_PERMISSIONS 0755            // default:
> > 0755
> > #define SQLITE_DEFAULT_RECURSIVE_TRIGGERS   1               // default:
> 0
> > #define SQLITE_DEFAULT_TEMP_CACHE_SIZE      65536           // default:
> > 500 pages
> > #define SQLITE_DEFAULT_SHARED_CACHE         0               // default:
> 0
> > #define SQLITE_DEFAULT_MMAP_SIZE            0               // default:
> 0
> > // #define SQLITE_LIKE_DOESNT_MATCH_BLOBS      1               //
> default:
> > undefined
> > // #define SQLITE_SORTER_PMASZ                 64              //
> default:
> > 250
> > // #define SQLITE_EXTRA_DURABLE                1               // Extra
> > DirSync's default not defined
> >
> >
> > // *** SQLITE FEATURE CONFIGURATION OPTIONS ***
> >
> > //#define SQLITE_ALLOW_COVERING_INDEX_SCAN 1
> > #define SQLITE_ENABLE_8_3_NAMES 1
> > // #define SQLITE_ENABLE_ATOMIC_WRITE 1
> > #define SQLITE_ENABLE_API_ARMOR 1                           // Enable
> API
> > Armour
> > #define SQLITE_ENABLE_COLUMN_METADATA 1
> > #define SQLITE_ENABLE_COSTMULT 1
> > #define SQLITE_ENABLE_CURSOR_HINTS 1
> > #define SQLITE_ENABLE_DBSTAT_VTAB 1
> > #define SQLITE_ENABLE_EXPLAIN_COMMENTS 1
> > #define SQLITE_ENABLE_FTS3 1
> > #define SQLITE_ENABLE_FTS3_PARENTHESIS 1
> > // #define SQLITE_DISABLE_FTS3_UNICODE 1
> > #define SQLITE_ENABLE_FTS4 1
> > #define SQLITE_ENABLE_FTS5 1
> > // #define SQLITE_ENABLE_ICU 1                                 // Set in
> > BUILD Command additional Libs required
> > #define SQLITE_ENABLE_JSON1 1                               // Enable
> > JSON1 -- when standard extension
> > #define SQLITE_ENABLE_LOAD_EXTENSION 1
> > #define SQLITE_ENABLE_LOCKING_STYLE 1
> > #define SQLITE_ENABLE_MEMORY_MANAGEMENT 1                   // Enable
> > Memory Management (sqlite3_release_memory)
> > // #define SQLITE_ENABLE_MEMSYS3 1
> > // #define SQLITE_ENABLE_MEMSYS5 1
> > #define SQLITE_ENABLE_MODULE_COMMENTS 1
> > #define SQLITE_ENABLE_PREUPDATE_HOOK 1
> > // #define SQLITE_ENABLE_RBU 1                                 // Enable
> > Resumable Bulk Update
> > #define SQLITE_ENABLE_RTREE 1
> > // #define SQLITE_RTREE_INT_ONLY 1
> > // #define SQLITE_ENABLE_SESSION 1                             // Enable
> > the SESSION feature
> > // #define SQLITE_ENABLE_SNAPSHOT 1                            // Enable
> > the SNAPSHOT feature
> > #define SQLITE_ENABLE_STAT_VTAB 1                           // Enable
> > dbstat_register called from shell
> > #define SQLITE_ENABLE_STAT1 1
> > #define SQLITE_ENABLE_STAT2 1
> > #define SQLITE_ENABLE_STAT3 1
> > #define SQLITE_ENABLE_STAT4 1
> > // #define SQLITE_ENABLE_VFSSTAT 1                             // Enable
> > vftstat extension
> > // #define SQLITE_LIKE_DOESNT_MATCH_BLOBS      1               //
> default:
> > 0 (undefined)
> > #define SQLITE_STAT4_SAMPLES 64                             // default:
> 24
> > samples
> > // #define SQLITE_64BIT_STATS 1
> > // #define SQLITE_ENABLE_UNLOCK_NOTIFY 1                       // See
> > Documentation before enabling
> > // #define SQLITE_ENABLE_UPDATE_DELETE_LIMIT 1                 //
> Requires
> > Special Amalgamation / Parser Support
> > #define SQLITE_SOUNDEX 1
> > // #define SQLITE_DISABLE_LFS 1
> > // #define SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS 1
> > // #define SQLITE_DISABLE_DIRSYNC 1
> > // #define SQLITE_CASE_SENSITIVE_LIKE 1
> > // #define SQLITE_NOW_STABILITY_STEP 1                         // Make
> > 'now' stable only within step, not entire statement
> > // #define SQLITE_SECURE_DELETE 1
> > #define SQLITE_TEMP_STORE 2                                 // 0 = Files
> > Always, 1 = Files, 2 = Memory, 3 Memory Always
> > #define SQLITE_USE_URI 1                                    // Enable
> URI
> > Filenames
> > #define SQLITE_ALLOW_URI_AUTHORITY 1                        // Allow
> > Authority (Host) in URI
> > // #define SQLITE_MMAP_READWRITE 1                             // mmaps
> > are writeable as well as readable
> >
> > //  *** SQLITE MAXIMUMS AND LIMITS CONFIGURATION ***
> >
> > // #define SQLITE_FTS3_MAX_EXPR_DEPTH          15              //
> default:
> > 12
> > #define SQLITE_MAX_ATTACHED                 15              // default:
> 10
> > max: 62
> > // #define SQLITE_MAX_COLUMN                   2000            //
> default:
> > 2000        max: 32767
> > // #define SQLITE_MAX_COMPOUND_SELECT          500             //
> default:
> > 500
> > // #define SQLITE_MAX_EXPR_DEPTH               1000            //
> default:
> > 1000
> > // #define SQLITE_FTS3_MAX_EXPR_DEPTH          12              //
> default:
> > 12
> > // #define SQLITE_MAX_FUNCTION_ARG             100             //
> default:
> > 100         max: 127
> > // #define SQLITE_MAX_LENGTH                   0x3fffffff      //
> default:
> > 1000000000  max: 2147483647 (2^31-1)
> > // #define SQLITE_MAX_LIKE_PATTERN_LENGTH      16384           //
> default:
> > 50000
> > // #define SQLITE_MAX_MMAP_SIZE                0x7fff0000      //
> default:
> > 0x7fff0000
> > // #define SQLITE_MAX_PAGE_COUNT               1073741823      //
> default:
> > 1073741823  max: 2147483646 (2^31-2)
> > // #define SQLITE_MAX_SQL_LENGTH               131072          //
> default:
> > 1000000     max: 2^30
> > // #define SQLITE_MAX_TRIGGER_DEPTH            1000            //
> default:
> > 1000
> > // #define SQLITE_MAX_VARIABLE_NUMBER          999             //
> default:
> > 999
> > // #define SQLITE_MAX_SCHEMA_RETRY             50              //
> default:
> > 50
> > // #define SQLITE_MAX_WORKER_THREADS           8               //
> default:
> > 11
> > // #define YYSTACKDEPTH                        100             //
> defautl:
> > 100
> >
> > //  *** SQLITE OPERATING SYSTEM AND INTERNALS CONFIGURATION ***
> >
> > //  #define SQLITE_OS_OTHER 0
> > #define SQLITE_OS_WIN 1
> > #define SQLITE_OS_WINNT 1
> > // #define SQLITE_OS_WINCE 1
> > // #define SQLITE_OS_WINRT 1
> > #define SQLITE_WIN32_MALLOC 1                               // Use Win32
> > Heap Allocator
> > #define SQLITE_WIN32_HEAP_CREATE 1                          // Use
> > Separate Win32 Heap
> > // #define SQLITE_WIN32_MALLOC_VALIDATE 1                      //
> Validate
> > Win32 Heap during SQLITE_DEBUG assert
> > #define SQLITE_WIN32_HEAP_INIT_SIZE 268435456               // Initial
> > Win32 Heap Size = 256 MB
> > #define SQLITE_WIN32_HEAP_MAX_SIZE 0                        // Max Win32
> > Heap Size (No Limit)
> > // #define SQLITE_WIN32_HEAP_FLAGS 0
> > // #define SQLITE_WIN32_FILE_SEQUENTIAL 1                      // Force
> > Windows SEQUENTIAL access cache behaviour
> > #define SQLITE_WIN32_FILE_RANDOM 1                          // Force
> > Windows RANDOM access cache behaviour
> > // #define SQLITE_WIN32_FILE_WRITETHROUGH 1                    // Force
> > Windows WRITE-THROUGH Behaviour
> > // #define SQLITE_DIRECT_OVERFLOW_READ 1                       // Do Not
> > PageCache Overflow Pages
> > // #define SQLITE_SYSTEM_MALLOC 1                              // Use
> > Default System Heap (default if no other specified)
> > // #define SQLITE_MALLOC_SOFT_LIMIT 1024
> > // #define SQLITE_POWERSAFE_OVERWRITE 0
> > // #define SQLITE_4_BYTE_ALIGNED_MALLOC 1
> > // #define SQLITE_USE_ALLOCA 1                                 // Use
> > AllocA to Allocate Parse object os Stack
> > #define SQLITE_USE_QUADMATH 1                               // Use 128-
> bit
> > Floats if available
> >
> >
> > // *** SQLITE OMIT FEATURES ***
> >
> > // #define SQLITE_OMIT_ALTERTABLE
> > // #define SQLITE_OMIT_ANALYZE
> > // #define SQLITE_OMIT_ATTACH
> > // #define SQLITE_OMIT_AUTHORIZATION
> > // #define SQLITE_OMIT_AUTOINCREMENT
> > // #define SQLITE_OMIT_AUTOINIT
> > // #define SQLITE_OMIT_AUTOMATIC_INDEX
> > // #define SQLITE_OMIT_AUTORESET
> > // #define SQLITE_OMIT_AUTOVACUUM
> > // #define SQLITE_OMIT_BETWEEN_OPTIMIZATION
> > // #define SQLITE_OMIT_BLOB_LITERAL
> > // #define SQLITE_OMIT_BTREECOUNT
> > // #define SQLITE_OMIT_BUILTIN_TEST
> > // #define SQLITE_OMIT_CAST
> > // #define SQLITE_OMIT_CHECK
> > // #define SQLITE_OMIT_COMPILEOPTION_DIAGS
> > // #define SQLITE_OMIT_COMPLETE
> > // #define SQLITE_OMIT_COMPOUND_SELECT
> > // #define SQLITE_OMIT_DATETIME_FUNCS
> > // #define SQLITE_OMIT_DECLTYPE
> > // #define SQLITE_OMIT_DEPRECATED
> > // #define SQLITE_OMIT_DISKIO
> > // #define SQLITE_OMIT_EXPLAIN
> > // #define SQLITE_OMIT_FLAG_PRAGMAS
> > // #define SQLITE_OMIT_FLOATING_POINT
> > // #define SQLITE_OMIT_FOREIGN_KEY
> > // #define SQLITE_OMIT_GET_TABLE
> > // #define SQLITE_OMIT_INCRBLOB
> > // #define SQLITE_OMIT_INTEGRITY_CHECK
> > // #define SQLITE_OMIT_LIKE_OPTIMIZATION
> > // #define SQLITE_OMIT_LOAD_EXTENSION
> > // #define SQLITE_OMIT_LOCALTIME
> > // #define SQLITE_OMIT_LOOKASIDE
> > // #define SQLITE_OMIT_MEMORYDB
> > // #define SQLITE_OMIT_MERGE_SORT
> > // #define SQLITE_OMIT_OR_OPTIMIZATION
> > // #define SQLITE_OMIT_PAGER_PRAGMAS
> > // #define SQLITE_OMIT_PRAGMA
> > // #define SQLITE_OMIT_PROGRESS_CALLBACK
> > // #define SQLITE_OMIT_QUICKBALANCE
> > // #define SQLITE_OMIT_REINDEX
> > // #define SQLITE_OMIT_SCHEMA_PRAGMAS
> > // #define SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
> > // #define SQLITE_OMIT_SHARED_CACHE
> > // #define SQLITE_OMIT_SHUTDOWN_DIRECTORIES
> > // #define SQLITE_OMIT_SUBQUERY
> > // #define SQLITE_OMIT_TCL_VARIABLE
> > // #define SQLITE_OMIT_TEMPDB
> > // #define SQLITE_OMIT_TRACE
> > // #define SQLITE_OMIT_TRIGGER
> > // #define SQLITE_OMIT_TRUNCATE_OPTIMIZATION
> > // #define SQLITE_OMIT_UTF16
> > // #define SQLITE_OMIT_VACUUM
> > // #define SQLITE_OMIT_VIEW
> > // #define SQLITE_OMIT_VIRTUALTABLE
> > // #define SQLITE_OMIT_WAL
> > // #define SQLITE_OMIT_WSD
> > // #define SQLITE_OMIT_XFER_OPT
> >
> > // *** SQLITE DEBUGGING FEATURES ***
> >
> > // #define SQLITE_DEBUG 1
> > // #define SQLITE_ENABLE_EXPENSIVE_ASSERT 1
> > // #define SQLITE_ENABLE_OVERSIZE_CELL_CHECK 1
> > // #define SQLITE_ENABLE_SELECTTRACE 1                         // Enable
> > Select Trace (.selecttrace 0x100) needs SQLITE_DEBUG
> > // #define SQLITE_ENABLE_SQLLOG 1                              // Enable
> > SQLITE_CONFIG_SQLLOG (see documentation)
> > // #define SQLITE_ENABLE_STMT_SCANSTATUS 1                     // Enable
> > Collection of Statement Scan Status
> > // #define SQLITE_ENABLE_WHERETRACE 1
> > // #define SQLITE_IOTRACE 1
> > // #define SQLITE_MEMDEBUG 1
> > // #define SQLITE_REVERSE_UNORDERED_SELECTS 1
> > // #define SQLITE_USE_FCNTL_TRACE 1                            // Enable
> > extra vfslog fcntrl trace
> > // #define SQLITE_YYTRACKMAXSTACKDEPTH 1
> >
> > #if defined(_WIN32) && defined(__GNUC__)
> > #define UNICODE_STRING_MAX_BYTES ((WORD) 65534)
> > #define UNICODE_STRING_MAX_CHARS (32767)
> > #define HAVE_FDATASYNC 1
> > #define HAVE_GMTIME_R 1
> > #define HAVE_LOCALTIME_S 1
> > #define HAVE_ISNAN 1
> > #define HAVE_MALLOC_USABLE_SIZE 1
> > #define HAVE_USLEEP 1
> > #define HAVE_UTIME 1
> > #endif
> >
> > #if defined(_MSC_VER)
> > #define HAVE_FDATASYNC 1
> > #define HAVE_GMTIME_R 1
> > #define HAVE_LOCALTIME_S 1
> > #define HAVE_MALLOC_USABLE_SIZE 1
> > #define HAVE_USLEEP 1
> > #define HAVE_UTIME 1
> > #endif
> >
> > #if defined(__GNUC__) && defined(SQLITE_USE_QUADMATH)
> > #define LONGDOUBLE_TYPE __float128
> > #endif
> > #endif
> >
> >
> > > -----Original Message-----
> > > From: sqlite-users [mailto:sqlite-users-
> boun...@mailinglists.sqlite.org]
> > > On Behalf Of David Empson
> > > Sent: Tuesday, 11 October, 2016 18:41
> > > To: SQLite mailing list
> > > Subject: Re: [sqlite] LIMIT doesn't return expected rows
> > >
> > > Following up: same for the Mac distribution of 3.14.2 command line
> tool.
> > > Using the pre-release snapshot of 3.15.0 from the main download page
> to
> > > build the sqlite3 3.15.0 on the Mac, I get the same answer: 1,2,3.
> > >
> > > SQLite version 3.15.0 2016-10-10 14:34:00
> > > Enter ".help" for usage hints.
> > > Connected to a transient in-memory database.
> > > Use ".open FILENAME" to reopen on a persistent database.
> > > sqlite> .read test.sql
> > > select sqlite_source_id();
> > > 2016-10-10 14:34:00 aebe429e52ffef026cb0803fb164339d61bd2e88
> > > create table i (id integer primary key autoincrement, flags integer);
> > > insert into i values (1,1),(2,1),(3,1),(4,1),(5,5),(6,6),(7,4);
> > > create table m (id integer);
> > > insert into m values (1),(2),(3),(4),(5),(6),(7);
> > > SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags DESC;
> > > 6
> > > 5
> > > 7
> > > 1
> > > 2
> > > 3
> > > 4
> > > SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags DESC
> > limit
> > > 3;
> > > 1
> > > 2
> > > 3
> > >
> > >
> > > > On 12/10/2016, at 1:23 PM, David Empson <demp...@emptech.co.nz>
> wrote:
> > > >
> > > > Keith - using your example, I get the same result as Tobias: the
> > second
> > > select produces 1,2,3. This is with the sqlite3.exe Windows command
> line
> > > tool for SQLite 3.14.2 downloaded from sqlite.org. Same
> > sqlite_source_id()
> > > too. I’m not set up to build SQLite from source, so can’t easily test
> > > 3.15.0, but If I do the same with a copy of 3.8.11.1 I have handy I
> get
> > > the correct result: 6, 5, 7.
> > > >
> > > > SQLite version 3.14.2 2016-09-12 18:50:49
> > > > Enter ".help" for usage hints.
> > > > Connected to a transient in-memory database.
> > > > Use ".open FILENAME" to reopen on a persistent database.
> > > > sqlite> .read test.sql
> > > > select sqlite_source_id();
> > > > 2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6
> > > > create table i (id integer primary key autoincrement, flags
> integer);
> > > > insert into i values (1,1),(2,1),(3,1),(4,1),(5,5),(6,6),(7,4);
> > > > create table m (id integer);
> > > > insert into m values (1),(2),(3),(4),(5),(6),(7);
> > > > SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags DESC;
> > > > 6
> > > > 5
> > > > 7
> > > > 1
> > > > 2
> > > > 3
> > > > 4
> > > > SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags DESC
> > > limit 3;
> > > > 1
> > > > 2
> > > > 3
> > > >
> > > >> On 12/10/2016, at 12:59 PM, Keith Medcalf <kmedc...@dessus.com>
> > wrote:
> > > >>
> > > >> SQLite version 3.14.2 2016-09-12 18:50:49
> > > >> Enter ".help" for usage hints.
> > > >> Connected to a transient in-memory database.
> > > >> Use ".open FILENAME" to reopen on a persistent database.
> > > >> sqlite> .read \\test.sql
> > > >> select sqlite_source_id();
> > > >> 2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6
> > > >> create table i (id integer primary key autoincrement, flags
> integer);
> > > >> insert into i values (1,1),(2,1),(3,1),(4,1),(5,5),(6,6),(7,4);
> > > >> create table m (id integer);
> > > >> insert into m values (1),(2),(3),(4),(5),(6),(7);
> > > >> SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags
> DESC;
> > > >> 6
> > > >> 5
> > > >> 7
> > > >> 1
> > > >> 2
> > > >> 3
> > > >> 4
> > > >> SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags DESC
> > > limit 3;
> > > >> 6
> > > >> 5
> > > >> 7
> > > >>
> > > >> I just compiled 3.14.2 from my source repository and it works
> > > correctly.
> > > >>
> > > >> Can you check the result of "select sqlite_source_id();", which
> > should
> > > be:
> > > >>
> > > >> 2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6
> > > >>
> > > >> https://www.sqlite.org/src/info/29dbef4b8585f753
> > > >>
> > > >>> -----Original Message-----
> > > >>> From: sqlite-users [mailto:sqlite-users-
> > > boun...@mailinglists.sqlite.org]
> > > >>> On Behalf Of Tobias Ellinghaus
> > > >>> Sent: Tuesday, 11 October, 2016 11:41
> > > >>> To: sqlite-users@mailinglists.sqlite.org
> > > >>> Subject: Re: [sqlite] LIMIT doesn't return expected rows
> > > >>>
> > > >>> Am Dienstag, 11. Oktober 2016, 06:50:01 CEST schrieb Keith
> Medcalf:
> > > >>>> This was fixed September 7.  The fix appears in 3.14.2 and also
> on
> > > the
> > > >>>> current 3.15.0.
> > > >>>
> > > >>> Does that mean that 3.14.2 is supposed to give the "6, 5, 7"
> result
> > in
> > > the
> > > >>> last query? I am asking as that's the version I am using
> (installed
> > > from
> > > >>> Debian/sid) and I get "1, 2, 3" here.
> > > >>>
> > > >>>> https://www.sqlite.org/releaselog/3_14_2.html
> > > >>>>
> > > >>>> The ORDER BY LIMIT optimization is not valid unless the inner-
> most
> > IN
> > > >>>> operator loop is actually used by the query plan. Ticket
> > > >>>> https://sqlite.org/src/info/0c4df46116e90f92
> > > >>>>
> > > >>>>
> > > >>>> SQLite version 3.15.0 2016-10-10 14:48:36
> > > >>>> Enter ".help" for usage hints.
> > > >>>> Connected to a transient in-memory database.
> > > >>>> Use ".open FILENAME" to reopen on a persistent database.
> > > >>>> sqlite> create table i (id integer primary key, flags integer);
> > > >>>> sqlite> insert into i values
> > > (1,1),(2,1),(3,1),(4,1),(5,5),(6,6),(7,4);
> > > >>>> sqlite> create table m (id integer);
> > > >>>> sqlite> insert into m values (1),(2),(3),(4),(5),(6),(7);
> > > >>>> sqlite> SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY
> > > flags
> > > >>> DESC;
> > > >>>> 6
> > > >>>> 5
> > > >>>> 7
> > > >>>> 1
> > > >>>> 2
> > > >>>> 3
> > > >>>> 4
> > > >>>> sqlite> SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY
> > > flags
> > > >>> DESC
> > > >>>> limit 3; 6
> > > >>>> 5
> > > >>>> 7
> > > >>>
> > > >>> Tobias
> > > >>>
> > > >>> [...]
> > > >>
> > > >>
> > > >>
> > > >> _______________________________________________
> > > >> sqlite-users mailing list
> > > >> sqlite-users@mailinglists.sqlite.org
> > > >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-
> users
> > > >
> > > > _______________________________________________
> > > > sqlite-users mailing list
> > > > sqlite-users@mailinglists.sqlite.org
> > > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> > >
> > > --
> > > David Empson
> > > demp...@emptech.co.nz
> > > Snail mail: P.O. Box 27-103, Wellington 6141, New Zealand
> > >
> > > _______________________________________________
> > > sqlite-users mailing list
> > > sqlite-users@mailinglists.sqlite.org
> > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> >
> >
> >
> > _______________________________________________
> > sqlite-users mailing list
> > sqlite-users@mailinglists.sqlite.org
> > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> 
> 
> 
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



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

Reply via email to