]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure internal queries are well ordered, even when the
authordrh <drh@noemail.net>
Tue, 12 Jan 2010 23:54:14 +0000 (23:54 +0000)
committerdrh <drh@noemail.net>
Tue, 12 Jan 2010 23:54:14 +0000 (23:54 +0000)
reverse_unordered_selects pragma is in effect.
Ticket [eb942c64a157].

FossilOrigin-Name: 0209f17180065d9c213b6c437be1c3c40660665f

manifest
manifest.uuid
src/prepare.c
src/vacuum.c
src/vdbe.c
test/auth2.test
test/whereA.test

index 60737b79d7047461ac33069516d5fba2a89fee9c..54188966ef0332c83f34aba288e3432e56e0e92a 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-C Fix\sthe\simplementation\sof\sCURRENT_TIMESTAME\sand\sCURRENT_DATE\swhen\s\nSQLITE_OMIT_DATETIME_FUNCS\sis\sdefined.
-D 2010-01-12T19:28:20
+C Make\ssure\sinternal\squeries\sare\swell\sordered,\seven\swhen\sthe\s\nreverse_unordered_selects\spragma\sis\sin\seffect.\nTicket\s[eb942c64a157].
+D 2010-01-12T23:54:15
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in c5827ead754ab32b9585487177c93bb00b9497b3
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -160,7 +160,7 @@ F src/pcache.c 3b079306376e0e04c0d3df40c0a4b750a1839310
 F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
 F src/pcache1.c 2bb2261190b42a348038f5b1c285c8cef415fcc8
 F src/pragma.c 6936d7df5e04b9f996f8f320d15e65b6944b2caa
-F src/prepare.c 170bd953058efe1c46b8ad9020d49cd6f40f0b45
+F src/prepare.c d4cd38ccfb51f1424d0e61d4878a810b7e1ebb60
 F src/printf.c 644bc7d59df3dc56d6d8b9a510914bfc6b51bc69
 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
 F src/resolve.c 56ecd50851afa9dbcc1803ef86a9b17b3f3d3b89
@@ -211,8 +211,8 @@ F src/trigger.c d46f9389e3bf3dd1cc1d288aba2f289c96b34200
 F src/update.c c0dc6b75ad28b76b619042d934f337b02acee208
 F src/utf.c dad16adcc0c35ef2437dca125a4b07419d361052
 F src/util.c ad4f03079ba0fe83590d1cc9197e8e4844e38592
-F src/vacuum.c db6415fd0f1be191e16228457a6deb9f232e6ad6
-F src/vdbe.c 9035d0ec1ba8e9268d024c9c08fd258479a7fdb6
+F src/vacuum.c 28ee5a4963d16cf2477075d85966c0f461cd79de
+F src/vdbe.c 1e2c66f2612275a26e156889ec123e8e13c4821d
 F src/vdbe.h bea1f0cd530775bdb58a340265f3cf3ee920e9b2
 F src/vdbeInt.h d7ea821ac7813c9bea0fe87558c35e07b2c7c44d
 F src/vdbeapi.c fc3787eb2f5487d4cc3444de42d56f2e39d311f5
@@ -244,7 +244,7 @@ F test/attach2.test a295d2d7061adcee5884ef4a93c7c96a82765437
 F test/attach3.test bd9830bc3a0d22ed1310c9bff6896927937017dc
 F test/attachmalloc.test cf8cf17d183de357b1147a9baacbdfc85b940b61
 F test/auth.test 8f21c160a4562f54f27618e85bac869efcecbcaf
-F test/auth2.test ee3ba272e2b975e913afc9b041ee75706e190005
+F test/auth2.test 270baddc8b9c273682760cffba6739d907bd2882
 F test/auth3.test a4755e6a2a2fea547ffe63c874eb569e60a28eb5
 F test/autoinc.test 85ef3180a737e6580086a018c09c6f1a52759b46
 F test/autovacuum.test 25f891bc343a8bf5d9229e2e9ddab9f31a9ab5ec
@@ -755,7 +755,7 @@ F test/where7.test fdd58ab9dec9f97679e65d4414bf5e07d725d79f
 F test/where8.test 2bb8ea44b745fcc93db150fac9ce33d12e499760
 F test/where8m.test da346596e19d54f0aba35ebade032a7c47d79739
 F test/where9.test be19e1a92f80985c1a121b4678bf7d2123eaa623
-F test/whereA.test 1d1674254614147c866ab9b59af6582f454a858c
+F test/whereA.test 24c234263c8fe358f079d5e57d884fb569d2da0a
 F test/whereB.test 0def95db3bdec220a731c7e4bec5930327c1d8c5
 F test/wherelimit.test 5e9fd41e79bb2b2d588ed999d641d9c965619b31
 F test/zeroblob.test caaecfb4f908f7bc086ed238668049f96774d688
@@ -788,14 +788,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P dd9689b7c31861484f8d8062478ae73d3c940902
-R e91e57338cb8f293a4bb9b23c125a66b
+P eb98265b59db59965b468a7070739921da55efc4
+R ed4967f5e7e47f15b9f1daec9413d761
 U drh
-Z 53dae532f59a801426d68826b9c81461
+Z 07b5603b06b78d336c9358d46fc99880
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.6 (GNU/Linux)
 
-iD8DBQFLTM1XoxKgR168RlERAjdBAJ9w5UHXdiEuVz7cQHXUtE7S8TVG3gCgiDHp
-XJDT0231aWBlk4lbq8Tk25c=
-=U05+
+iD8DBQFLTQuqoxKgR168RlERAkKNAJ4qC7gYLFTHRR/AwFe8MLPwRiJ4+gCfSKF2
+WfQSwlim3QhCopfECpNmEtA=
+=Ri4P
 -----END PGP SIGNATURE-----
index f87b9f5faa6dd2a549f3d106f663f1a7cc7f0d16..65d45a00214d3c469c1d506cb03cc03592953a5c 100644 (file)
@@ -1 +1 @@
-eb98265b59db59965b468a7070739921da55efc4
\ No newline at end of file
+0209f17180065d9c213b6c437be1c3c40660665f
\ No newline at end of file
index 29f83e580880909accbf2fd8d811cb8ce9757861..15aafbeadb74faa7ac7a35a0add4044ae53e074d 100644 (file)
@@ -315,7 +315,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
   {
     char *zSql;
     zSql = sqlite3MPrintf(db, 
-        "SELECT name, rootpage, sql FROM '%q'.%s",
+        "SELECT name, rootpage, sql FROM '%q'.%s ORDER BY rowid",
         db->aDb[iDb].zName, zMasterName);
     (void)sqlite3SafetyOff(db);
 #ifndef SQLITE_OMIT_AUTHORIZATION
index c44a236def1afaede3f9ab8f90b00f18debfcebd..9d26da3dae67239027d8a9ba993c21bf3ba85cd6 100644 (file)
@@ -104,7 +104,7 @@ int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db){
   saved_nTotalChange = db->nTotalChange;
   saved_xTrace = db->xTrace;
   db->flags |= SQLITE_WriteSchema | SQLITE_IgnoreChecks;
-  db->flags &= ~SQLITE_ForeignKeys;
+  db->flags &= ~(SQLITE_ForeignKeys | SQLITE_ReverseOrder);
   db->xTrace = 0;
 
   pMain = db->aDb[0].pBt;
index fc66e6d5a328bd3c553a32d9e78723cf10eaab1d..a7d693d53a4b90a18eb05391f92947d8e18779d9 100644 (file)
@@ -4576,7 +4576,7 @@ case OP_ParseSchema: {
     initData.iDb = pOp->p1;
     initData.pzErrMsg = &p->zErrMsg;
     zSql = sqlite3MPrintf(db,
-       "SELECT name, rootpage, sql FROM '%q'.%s WHERE %s",
+       "SELECT name, rootpage, sql FROM '%q'.%s WHERE %s ORDER BY rowid",
        db->aDb[iDb].zName, zMaster, pOp->p4.z);
     if( zSql==0 ){
       rc = SQLITE_NOMEM;
index 98270ae73aebe024049e60f110efdc5fb97e8e46..f5dba1482ad627ab3fba7723709456595317dc20 100644 (file)
@@ -102,6 +102,7 @@ SQLITE_READ sqlite_master name main {}
 SQLITE_READ sqlite_master rootpage main {}
 SQLITE_READ sqlite_master sql main {}
 SQLITE_READ sqlite_master tbl_name main {}
+SQLITE_READ sqlite_master ROWID main {}
 }
 do_test auth2-2.2 {
   set ::authargs {}
@@ -121,6 +122,7 @@ SQLITE_READ sqlite_master name main {}
 SQLITE_READ sqlite_master rootpage main {}
 SQLITE_READ sqlite_master sql main {}
 SQLITE_READ sqlite_master tbl_name main {}
+SQLITE_READ sqlite_master ROWID main {}
 }
 do_test auth2-2.3 {
   set ::authargs {}
index 64253adcd32f57def44748c3af963a30cd4f243d..5d0aca591ca2790ced5ec27d801d4224df27026a 100644 (file)
@@ -33,11 +33,41 @@ do_test whereA-1.2 {
 } {3 4.53 {} 2 hello world 1 2 3}
 
 do_test whereA-1.3 {
+  db close
+  sqlite3 db test.db
   db eval {
     PRAGMA reverse_unordered_selects=1;
+    SELECT * FROM t1;
+  }
+} {3 4.53 {} 2 hello world 1 2 3}
+do_test whereA-1.4 {
+  db close
+  sqlite3 db test.db
+  db eval {
+    PRAGMA reverse_unordered_selects=1;
+    SELECT * FROM t1 ORDER BY rowid;
+  }
+} {1 2 3 2 hello world 3 4.53 {}}
+do_test whereA-1.5 {
+  db eval {
+    VACUUM;
     SELECT * FROM t1 ORDER BY rowid;
   }
 } {1 2 3 2 hello world 3 4.53 {}}
+do_test whereA-1.6 {
+  db eval {
+    PRAGMA reverse_unordered_selects;
+  }
+} {1}
+do_test whereA-1.7 {
+  db close
+  sqlite3 db test.db
+  db eval {
+    PRAGMA reverse_unordered_selects=1;
+    VACUUM;
+    SELECT * FROM t1;
+  }
+} {3 4.53 {} 2 hello world 1 2 3}
 
 do_test whereA-2.1 {
   db eval {