Compare commits

...

1 Commits

Author SHA1 Message Date
drh d4f2a49ea5 Add an experimental pragma "PRAGMA preload;" that preloads the pcache with
the entire database file.

FossilOrigin-Name: 6dca23e64e9c8b7343082e2c7d6b7ba2d62fdb5b
2015-02-02 22:19:05 +00:00
5 changed files with 59 additions and 27 deletions
+11 -8
View File
@@ -1,5 +1,5 @@
C Break\sout\sthe\s(script-generated)\spragma\sparsing\stables\sinto\sa\sseparate\sfile,\npragma.h,\sto\smake\sediting\seasier.
D 2015-02-02T21:34:54.408
C Add\san\sexperimental\spragma\s"PRAGMA\spreload;"\sthat\spreloads\sthe\spcache\swith\nthe\sentire\sdatabase\sfile.
D 2015-02-02T22:19:05.803
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in cbe64ed4d90a19062b804f7fbd319080f851b004
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -223,8 +223,8 @@ F src/parse.y c5d0d964f9ac023e8154cad512e54b0b6058e086
F src/pcache.c d210cf90d04365a74f85d21374dded65af67b0cb
F src/pcache.h b44658c9c932d203510279439d891a2a83e12ba8
F src/pcache1.c 1e77432b40b7d3288327d9cdf399dcdfd2b6d3bf
F src/pragma.c 58044728a29a0240d14a850c3870e5ac3da436b2
F src/pragma.h 28804eae1286aab6f2ffa3682dc0b06b58c51834
F src/pragma.c a5b397bd62def3b4b1f670b512ca11a1d2805b29
F src/pragma.h 32eb95f87ccb49e7eec028d6e981b8cc2e0fa65c
F src/prepare.c 173a5a499138451b2561614ecb87d78f9f4644b9
F src/printf.c 05edc41450d0eb2c05ef7db113bf32742ae65325
F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
@@ -1203,7 +1203,7 @@ F tool/logest.c eef612f8adf4d0993dafed0416064cf50d5d33c6
F tool/mkautoconfamal.sh d1a2da0e15b2ed33d60af35c7e9d483f13a8eb9f
F tool/mkkeywordhash.c dfff09dbbfaf950e89af294f48f902181b144670
F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e
F tool/mkpragmatab.tcl 4b4e91f6b8fc45596686798b918999e923b91fc7
F tool/mkpragmatab.tcl 848a74446f372451cd4d3a60a3d9aee29c258f1e
F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
F tool/mksqlite3c-noext.tcl 9ef48e1748dce7b844f67e2450ff9dfeb0fb4ab5
F tool/mksqlite3c.tcl 6b8e572a90eb4e0086e3ba90d88b76c085919863
@@ -1239,7 +1239,10 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P 42d5601739c90434e5adfda8fa99ef7b903877db
R ad79dcf7ddc97ee53618558cb6690870
P 32c0325bcb083fe3f0f0cfe999d00f754e15299e
R ccc9897517b2c20b95a8eb47a0bf1dbc
T *branch * preload-pragma
T *sym-preload-pragma *
T -sym-trunk *
U drh
Z 0fdc8db6e22e6c93e424fbfcfceed021
Z 4ac85c2d90b0f57362188f2ac4ef8b13
+1 -1
View File
@@ -1 +1 @@
32c0325bcb083fe3f0f0cfe999d00f754e15299e
6dca23e64e9c8b7343082e2c7d6b7ba2d62fdb5b
+22
View File
@@ -1343,6 +1343,28 @@ void sqlite3Pragma(
}
break;
/* Try to load the entire database file into the pcache.
*/
case PragTyp_PRELOAD: {
Pager *pPager = sqlite3BtreePager(pDb->pBt);
Pgno i, nPage;
int rc = SQLITE_OK;
DbPage *pPage, *pPage0 = 0;
if( pPager
&& sqlite3PagerSharedLock(pPager)==SQLITE_OK
&& sqlite3PagerGet(pPager, 1, &pPage0)==SQLITE_OK
){
sqlite3PagerPagecount(pPager, (int*)&nPage);
for(i=2; rc==SQLITE_OK && i<=nPage; i++){
rc = sqlite3PagerGet(pPager, i, &pPage);
sqlite3PagerUnref(pPage);
}
if( rc ) sqlite3ErrorMsg(pParse, "preload failed");
}
sqlite3PagerUnref(pPage0);
break;
}
#ifndef SQLITE_INTEGRITY_CHECK_ERROR_MAX
# define SQLITE_INTEGRITY_CHECK_ERROR_MAX 100
#endif
+23 -18
View File
@@ -28,23 +28,24 @@
#define PragTyp_PAGE_COUNT 22
#define PragTyp_MMAP_SIZE 23
#define PragTyp_PAGE_SIZE 24
#define PragTyp_SECURE_DELETE 25
#define PragTyp_SHRINK_MEMORY 26
#define PragTyp_SOFT_HEAP_LIMIT 27
#define PragTyp_STATS 28
#define PragTyp_SYNCHRONOUS 29
#define PragTyp_TABLE_INFO 30
#define PragTyp_TEMP_STORE 31
#define PragTyp_TEMP_STORE_DIRECTORY 32
#define PragTyp_THREADS 33
#define PragTyp_WAL_AUTOCHECKPOINT 34
#define PragTyp_WAL_CHECKPOINT 35
#define PragTyp_ACTIVATE_EXTENSIONS 36
#define PragTyp_HEXKEY 37
#define PragTyp_KEY 38
#define PragTyp_REKEY 39
#define PragTyp_LOCK_STATUS 40
#define PragTyp_PARSER_TRACE 41
#define PragTyp_PRELOAD 25
#define PragTyp_SECURE_DELETE 26
#define PragTyp_SHRINK_MEMORY 27
#define PragTyp_SOFT_HEAP_LIMIT 28
#define PragTyp_STATS 29
#define PragTyp_SYNCHRONOUS 30
#define PragTyp_TABLE_INFO 31
#define PragTyp_TEMP_STORE 32
#define PragTyp_TEMP_STORE_DIRECTORY 33
#define PragTyp_THREADS 34
#define PragTyp_WAL_AUTOCHECKPOINT 35
#define PragTyp_WAL_CHECKPOINT 36
#define PragTyp_ACTIVATE_EXTENSIONS 37
#define PragTyp_HEXKEY 38
#define PragTyp_KEY 39
#define PragTyp_REKEY 40
#define PragTyp_LOCK_STATUS 41
#define PragTyp_PARSER_TRACE 42
#define PragFlag_NeedSchema 0x01
#define PragFlag_ReadOnly 0x02
static const struct sPragmaNames {
@@ -305,6 +306,10 @@ static const struct sPragmaNames {
/* ePragFlag: */ 0,
/* iArg: */ 0 },
#endif
{ /* zName: */ "preload",
/* ePragTyp: */ PragTyp_PRELOAD,
/* ePragFlag: */ 0,
/* iArg: */ 0 },
#if !defined(SQLITE_OMIT_FLAG_PRAGMAS)
{ /* zName: */ "query_only",
/* ePragTyp: */ PragTyp_FLAG,
@@ -452,4 +457,4 @@ static const struct sPragmaNames {
/* iArg: */ SQLITE_WriteSchema|SQLITE_RecoveryMode },
#endif
};
/* Number of pragmas: 58 on by default, 71 total. */
/* Number of pragmas: 59 on by default, 72 total. */
+2
View File
@@ -307,6 +307,8 @@ set pragma_def {
NAME: soft_heap_limit
NAME: threads
NAME: preload
}
# Open the output file