]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Increase the upper bound on SQLITE_MAX_ATTACHED from 30 to 62.
authordrh <drh@noemail.net>
Wed, 23 Mar 2011 18:22:34 +0000 (18:22 +0000)
committerdrh <drh@noemail.net>
Wed, 23 Mar 2011 18:22:34 +0000 (18:22 +0000)
FossilOrigin-Name: 7aaf8772274422f5020fad9eea490e195170720f

manifest
manifest.uuid
src/build.c
src/main.c
src/sqliteInt.h
src/vdbeInt.h
src/vdbeaux.c
test/attach.test

index 4ecb663b1edd4d44496ee0862e69f71185a1ccab..03f32c272f8b0d79ad4d3466bc6c1211307d3305 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,8 @@
-C Fix\sa\sbug\sin\sfts4\sto\sdo\swith\smatchinfo\sand\sdeferred\stokens.
-D 2011-03-23T17:10:44
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+C Increase\sthe\supper\sbound\son\sSQLITE_MAX_ATTACHED\sfrom\s30\sto\s62.
+D 2011-03-23T18:22:34.232
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 27701a1653595a1f2187dc61c8117e00a6c1d50f
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -124,7 +127,7 @@ F src/btmutex.c 96a12f50f7a17475155971a241d85ec5171573ff
 F src/btree.c 43302cc4f3de6479b90fa6bb271b65d86333d00e
 F src/btree.h e2f2cd9933bf30724f53ffa12c4c5a3a864bbd6e
 F src/btreeInt.h 20f73dc93b1eeb83afd7259fbc6bd7dcf2df7fe4
-F src/build.c 3b86c8efc0cbe716d82c510463f448b9cdee0619
+F src/build.c 821d4b3c6b1da068a4eb1e9c8c414b75612d34c2
 F src/callback.c 5069f224882cbdccd559f591271d28d7f37745bc
 F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
 F src/ctime.c 52ff72f966cee3087e0138a3ec69371c22be3c01
@@ -143,7 +146,7 @@ F src/journal.c 552839e54d1bf76fb8f7abe51868b66acacf6a0e
 F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f
 F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e
 F src/loadext.c 8af9fcc75708d60b88636ccba38b4a7b3c155c3e
-F src/main.c 6d10370bfc2235b7d6cf78510b20c94c00123357
+F src/main.c 3679460ba5ee8f842e32def2117d5bd2260cdbf0
 F src/malloc.c 92d59a007d7a42857d4e9454aa25b6b703286be1
 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
 F src/mem1.c 00bd8265c81abb665c48fea1e0c234eb3b922206
@@ -180,7 +183,7 @@ F src/select.c d24406c45dd2442eb2eeaac413439066b149c944
 F src/shell.c 9dc0b4bb59290c0a35256d278cab0f314987ad6a
 F src/sqlite.h.in 9d85096265a53db6c9d452eb478d5ced15308275
 F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754
-F src/sqliteInt.h 1de0edab31cc9e5c2f3540e08e8b97926f84bfeb
+F src/sqliteInt.h f8f1d00a22c98fd3f2fbc94da74eeb880879f89f
 F src/sqliteLimit.h a17dcd3fb775d63b64a43a55c54cb282f9726f44
 F src/status.c 4997380fbb915426fef9e500b4872e79c99267fc
 F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e
@@ -233,9 +236,9 @@ F src/util.c cd997077bad039efc0597eb027c929658f93c018
 F src/vacuum.c 924bd1bcee2dfb05376f79845bd3b4cec7b54b2f
 F src/vdbe.c 8430780c643bf67d4b5da27f24d6ad39804fdaf4
 F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2
-F src/vdbeInt.h 6e6f28e9bccc6c703dca1372fd661c57b5c15fb0
+F src/vdbeInt.h e1c6254641168507d25b46affb6dfb53c782f553
 F src/vdbeapi.c a09ad9164cafc505250d5dd6b69660c960f1308c
-F src/vdbeaux.c 00439455c80ff7b37d7f2e5be5c0cf02de732a42
+F src/vdbeaux.c cfd3f3ac674691ba1166ceb9a2698b0d00b2ef91
 F src/vdbeblob.c c3ccb7c8732858c680f442932e66ad06bb036562
 F src/vdbemem.c 0498796b6ffbe45e32960d6a1f5adfb6e419883b
 F src/vdbetrace.c 3ba13bc32bdf16d2bdea523245fd16736bed67b5
@@ -263,7 +266,7 @@ F test/async2.test bf5e2ca2c96763b4cba3d016249ad7259a5603b6
 F test/async3.test 93edaa9122f498e56ea98c36c72abc407f4fb11e
 F test/async4.test 1787e3952128aa10238bf39945126de7ca23685a
 F test/async5.test f3592d79c84d6e83a5f50d3fd500445f7d97dfdf
-F test/attach.test f2b4ac6931f45695082b9f02be959c9c262e4f4d
+F test/attach.test 2bb09073d7d5499127db00f50780766dcea913e1
 F test/attach2.test a295d2d7061adcee5884ef4a93c7c96a82765437
 F test/attach3.test bd9830bc3a0d22ed1310c9bff6896927937017dc
 F test/attachmalloc.test 1d5b821a676f7bf0b00d87cc106b78966789ba57
@@ -915,7 +918,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 1ed5e361ca7bfa9226fec265704394e0f228f0c5
-R 2f8b1c68ec4ce4809965697dec333ba6
-U dan
-Z 998dcc0bc86840532e7dbf16c79e79d3
+P 30d42dc66f19ef5cc5b27d6273eadf56619a3ce8
+R 53e5c0654506b9d27fce0da478ef2182
+U drh
+Z af69b516e428dca392e47d50225e2cb4
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.6 (GNU/Linux)
+
+iD8DBQFNijptoxKgR168RlERAqbvAJ9dZZGQfzqQkUsnDColXnPTvyc73wCdHwqj
+BdLhxD0af4MbaUFMS6jVKTQ=
+=BE7n
+-----END PGP SIGNATURE-----
index 107f784eee881741fd6d5f99923d326bc9b1e93f..a416a0e5e305130489b9bdab81a26f8c21018b8f 100644 (file)
@@ -1 +1 @@
-30d42dc66f19ef5cc5b27d6273eadf56619a3ce8
\ No newline at end of file
+7aaf8772274422f5020fad9eea490e195170720f
\ No newline at end of file
index 79ac436f072634f2c60fcea504d8908a9a29614b..e7c56c9ab0feb44f49739ec61daa8bd43bd21ace 100644 (file)
@@ -148,7 +148,7 @@ void sqlite3FinishCoding(Parse *pParse){
     ** on each used database.
     */
     if( pParse->cookieGoto>0 ){
-      u32 mask;
+      tAttachMask mask;
       int iDb;
       sqlite3VdbeJumpHere(v, pParse->cookieGoto-1);
       for(iDb=0, mask=1; iDb<db->nDb; mask<<=1, iDb++){
@@ -3444,12 +3444,12 @@ void sqlite3CodeVerifySchema(Parse *pParse, int iDb){
   }
   if( iDb>=0 ){
     sqlite3 *db = pToplevel->db;
-    int mask;
+    tAttachMask mask;
 
     assert( iDb<db->nDb );
     assert( db->aDb[iDb].pBt!=0 || iDb==1 );
     assert( iDb<SQLITE_MAX_ATTACHED+2 );
-    mask = 1<<iDb;
+    mask = ((tAttachMask)1)<<iDb;
     if( (pToplevel->cookieMask & mask)==0 ){
       pToplevel->cookieMask |= mask;
       pToplevel->cookieValue[iDb] = db->aDb[iDb].pSchema->schema_cookie;
@@ -3476,7 +3476,7 @@ void sqlite3CodeVerifySchema(Parse *pParse, int iDb){
 void sqlite3BeginWriteOperation(Parse *pParse, int setStatement, int iDb){
   Parse *pToplevel = sqlite3ParseToplevel(pParse);
   sqlite3CodeVerifySchema(pParse, iDb);
-  pToplevel->writeMask |= 1<<iDb;
+  pToplevel->writeMask |= ((tAttachMask)1)<<iDb;
   pToplevel->isMultiWrite |= setStatement;
 }
 
index 4872efb520f34ed0bfb5939c52d809d5322aa5db..ac82256a98efa5ffd9ca1e3fb4012e574887fb58 100644 (file)
@@ -1723,8 +1723,8 @@ static const int aHardLimit[] = {
 #if SQLITE_MAX_FUNCTION_ARG<0 || SQLITE_MAX_FUNCTION_ARG>1000
 # error SQLITE_MAX_FUNCTION_ARG must be between 0 and 1000
 #endif
-#if SQLITE_MAX_ATTACHED<0 || SQLITE_MAX_ATTACHED>30
-# error SQLITE_MAX_ATTACHED must be between 0 and 30
+#if SQLITE_MAX_ATTACHED<0 || SQLITE_MAX_ATTACHED>62
+# error SQLITE_MAX_ATTACHED must be between 0 and 62
 #endif
 #if SQLITE_MAX_LIKE_PATTERN_LENGTH<1
 # error SQLITE_MAX_LIKE_PATTERN_LENGTH must be at least 1
index ec8ce936c5f183693524be8c6ec419cdd2596e16..0825af4cdf153de32a4201c769db114d92118f6a 100644 (file)
@@ -2125,6 +2125,13 @@ struct TriggerPrg {
   TriggerPrg *pNext;      /* Next entry in Parse.pTriggerPrg list */
 };
 
+/* Datatype for the bitmask of all attached databases */
+#if SQLITE_MAX_ATTACHED>30
+  typedef sqlite3_uint64 tAttachMask;
+#else
+  typedef unsigned int tAttachMask;
+#endif
+
 /*
 ** An SQL parser context.  A copy of this structure is passed through
 ** the parser and down into all the parser action routine in order to
@@ -2173,8 +2180,8 @@ struct Parse {
     int iReg;             /* Reg with value of this column. 0 means none. */
     int lru;              /* Least recently used entry has the smallest value */
   } aColCache[SQLITE_N_COLCACHE];  /* One for each column cache entry */
-  u32 writeMask;       /* Start a write transaction on these databases */
-  u32 cookieMask;      /* Bitmask of schema verified databases */
+  tAttachMask writeMask;  /* Start a write transaction on these databases */
+  tAttachMask cookieMask; /* Bitmask of schema verified databases */
   u8 isMultiWrite;     /* True if statement may affect/insert multiple rows */
   u8 mayAbort;         /* True if statement may throw an ABORT exception */
   int cookieGoto;      /* Address of OP_Goto to cookie verifier subroutine */
index b42729d23645d6f7949270d099ad6a8715b354ea..65cda0bcc584bb759cd3876990f916c78f205ee8 100644 (file)
@@ -302,7 +302,7 @@ struct Vdbe {
   u8 readOnly;            /* True for read-only statements */
   u8 isPrepareV2;         /* True if prepared with prepare_v2() */
   int nChange;            /* Number of db changes made since last reset */
-  int btreeMask;          /* Bitmask of db->aDb[] entries referenced */
+  tAttachMask btreeMask;  /* Bitmask of db->aDb[] entries referenced */
   int iStatement;         /* Statement number (or 0 if has not opened stmt) */
   int aCounter[3];        /* Counters used by sqlite3_stmt_status() */
   BtreeMutexArray aMutex; /* An array of Btree used here and needing locks */
index c7acbcb6466c8c247208d5fc47903d7d913010b5..36e0d260b3b6c1a61dfc763a9a59c08dc31fcbc3 100644 (file)
@@ -950,8 +950,8 @@ static char *displayP4(Op *pOp, char *zTemp, int nTemp){
 ** in order (and released in reverse order) to avoid deadlocks.
 */
 void sqlite3VdbeUsesBtree(Vdbe *p, int i){
-  int mask;
-  assert( i>=0 && i<p->db->nDb && i<sizeof(u32)*8 );
+  tAttachMask mask;
+  assert( i>=0 && i<p->db->nDb && i<sizeof(tAttachMask)*8 );
   assert( i<(int)sizeof(p->btreeMask)*8 );
   mask = ((u32)1)<<i;
   if( (p->btreeMask & mask)==0 ){
index a5af8f751d2a7979a335922b813da8001ee5fcca..1bb596cb90cba32be79224806fb69725da5c2634 100644 (file)
@@ -152,14 +152,16 @@ do_test attach-1.18 {
     ATTACH 'test.db' as db11;
   }
 } {0 {}}
-do_test attach-1.19 {
-  catchsql {
-    ATTACH 'test.db' as db12;
-  }
-} {1 {too many attached databases - max 10}}
-do_test attach-1.19.1 {
-  db errorcode
-} {1}
+if {$SQLITE_MAX_ATTACHED==10} {
+  do_test attach-1.19 {
+    catchsql {
+      ATTACH 'test.db' as db12;
+    }
+  } {1 {too many attached databases - max 10}}
+  do_test attach-1.19.1 {
+    db errorcode
+  } {1}
+}
 do_test attach-1.20.1 {
   execsql {
     DETACH db5;
@@ -179,14 +181,16 @@ do_test attach-1.21 {
     ATTACH 'test.db' as db12;
   }
 } {0 {}}
-do_test attach-1.22 {
-  catchsql {
-    ATTACH 'test.db' as db13;
-  }
-} {1 {too many attached databases - max 10}}
-do_test attach-1.22.1 {
-  db errorcode
-} {1}
+if {$SQLITE_MAX_ATTACHED==10} {
+  do_test attach-1.22 {
+    catchsql {
+      ATTACH 'test.db' as db13;
+    }
+  } {1 {too many attached databases - max 10}}
+  do_test attach-1.22.1 {
+    db errorcode
+  } {1}
+}
 do_test attach-1.23 {
   catchsql {
     DETACH "db14";