mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-09 14:21:03 +03:00
Make sure the antipenultimate character of master-journal filenames is a "9"
in order to avoid collisions with other files in 8+3 filename mode. Also, limit the number of attempts at finding a unique master-journal filename. FossilOrigin-Name: 34a0483605d36e6cf03065ed0df33fb1f7c8a272
This commit is contained in:
16
manifest
16
manifest
@@ -1,5 +1,5 @@
|
|||||||
C When\sdeleting\sa\sfile\swith\sthe\smultiplexor\sVFS,\salso\sdelete\sany\soverflow\sfiles\sthat\sexist.
|
C Make\ssure\sthe\santipenultimate\scharacter\sof\smaster-journal\sfilenames\sis\sa\s"9"\nin\sorder\sto\savoid\scollisions\swith\sother\sfiles\sin\s8+3\sfilename\smode.\s\sAlso,\nlimit\sthe\snumber\sof\sattempts\sat\sfinding\sa\sunique\smaster-journal\sfilename.
|
||||||
D 2011-12-15T17:00:10.854
|
D 2011-12-16T00:33:04.352
|
||||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||||
F Makefile.in 5b4a3e12a850b021547e43daf886b25133b44c07
|
F Makefile.in 5b4a3e12a850b021547e43daf886b25133b44c07
|
||||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||||
@@ -237,13 +237,13 @@ F src/tokenize.c c819d9f72168a035d545a5bdafe9b085b20df705
|
|||||||
F src/trigger.c 1cfb80e2290ef66ea89cb4e821caae65a02c0d56
|
F src/trigger.c 1cfb80e2290ef66ea89cb4e821caae65a02c0d56
|
||||||
F src/update.c 25e046a8f69d5e557aabde2000487b8545509d8d
|
F src/update.c 25e046a8f69d5e557aabde2000487b8545509d8d
|
||||||
F src/utf.c 890c67dcfcc7a74623c95baac7535aadfe265e84
|
F src/utf.c 890c67dcfcc7a74623c95baac7535aadfe265e84
|
||||||
F src/util.c 01238e2b0f24a14779181dbf991fe02620a80e31
|
F src/util.c 343508d359df65685b62e63964a40e7af4cfbe05
|
||||||
F src/vacuum.c 0c0ba2242355c6048d65e2b333abe0f7c06348fa
|
F src/vacuum.c 0c0ba2242355c6048d65e2b333abe0f7c06348fa
|
||||||
F src/vdbe.c a7ab9993ec5a4d9479dc99671faec061fbf9b889
|
F src/vdbe.c a7ab9993ec5a4d9479dc99671faec061fbf9b889
|
||||||
F src/vdbe.h f0725ee997db869ecae5bb70a71612aabeca7755
|
F src/vdbe.h f0725ee997db869ecae5bb70a71612aabeca7755
|
||||||
F src/vdbeInt.h 9498fc98a2c9e349a4ef13455ff5a3e898f40176
|
F src/vdbeInt.h 9498fc98a2c9e349a4ef13455ff5a3e898f40176
|
||||||
F src/vdbeapi.c 4dbba7f94f127f6ea8d2d0505ee1f98e5ffbf546
|
F src/vdbeapi.c 4dbba7f94f127f6ea8d2d0505ee1f98e5ffbf546
|
||||||
F src/vdbeaux.c 45713a5f8f4f36195f503b30153ddef292323f88
|
F src/vdbeaux.c 896ce3c48bf1bf27a1330589a20daa2db0222381
|
||||||
F src/vdbeblob.c 32f2a4899d67f69634ea4dd93e3f651936d732cb
|
F src/vdbeblob.c 32f2a4899d67f69634ea4dd93e3f651936d732cb
|
||||||
F src/vdbemem.c 2fc78b3e0fabcc1eaa23cd79dd2e30e6dcfe1e56
|
F src/vdbemem.c 2fc78b3e0fabcc1eaa23cd79dd2e30e6dcfe1e56
|
||||||
F src/vdbesort.c 468d43c057063e54da4f1988b38b4f46d60e7790
|
F src/vdbesort.c 468d43c057063e54da4f1988b38b4f46d60e7790
|
||||||
@@ -978,7 +978,7 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
|
|||||||
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
||||||
F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a
|
F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a
|
||||||
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
|
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
|
||||||
P e05f8a2998f4f4cbdb65702baa65893c538b3d38
|
P 3af1feaa35d3fb2e7be550cd32a727001b874938
|
||||||
R 45b2cf463e6285a0d96697332c4d9aa9
|
R 398b3e3805c532cf24ac8d99750e0da2
|
||||||
U dan
|
U drh
|
||||||
Z 16b7798bc9bd7dfe8e0e630d52e6558b
|
Z ebbc2fb95389a75c4e570b61ca8c6d99
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
3af1feaa35d3fb2e7be550cd32a727001b874938
|
34a0483605d36e6cf03065ed0df33fb1f7c8a272
|
||||||
@@ -1169,6 +1169,7 @@ int sqlite3AbsInt32(int x){
|
|||||||
** test.db-journal => test.nal
|
** test.db-journal => test.nal
|
||||||
** test.db-wal => test.wal
|
** test.db-wal => test.wal
|
||||||
** test.db-shm => test.shm
|
** test.db-shm => test.shm
|
||||||
|
** test.db-mj7f3319fa => test.9fa
|
||||||
*/
|
*/
|
||||||
void sqlite3FileSuffix3(const char *zBaseFilename, char *z){
|
void sqlite3FileSuffix3(const char *zBaseFilename, char *z){
|
||||||
#if SQLITE_ENABLE_8_3_NAMES<2
|
#if SQLITE_ENABLE_8_3_NAMES<2
|
||||||
|
|||||||
@@ -1824,16 +1824,26 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
|
|||||||
sqlite3_file *pMaster = 0;
|
sqlite3_file *pMaster = 0;
|
||||||
i64 offset = 0;
|
i64 offset = 0;
|
||||||
int res;
|
int res;
|
||||||
|
int retryCount = 0;
|
||||||
|
|
||||||
/* Select a master journal file name */
|
/* Select a master journal file name */
|
||||||
do {
|
do {
|
||||||
u32 iRandom;
|
u32 iRandom;
|
||||||
|
if( retryCount++>100 ){
|
||||||
|
sqlite3_log(SQLITE_FULL, "cannot create a master journal filename");
|
||||||
|
rc = SQLITE_FULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
sqlite3DbFree(db, zMaster);
|
sqlite3DbFree(db, zMaster);
|
||||||
sqlite3_randomness(sizeof(iRandom), &iRandom);
|
sqlite3_randomness(sizeof(iRandom), &iRandom);
|
||||||
zMaster = sqlite3MPrintf(db, "%s-mj%08X", zMainFile, iRandom&0x7fffffff);
|
zMaster = sqlite3MPrintf(db, "%s-mj%06X9%02X", zMainFile,
|
||||||
|
(iRandom>>8)&0xffffff, iRandom&0xff);
|
||||||
if( !zMaster ){
|
if( !zMaster ){
|
||||||
return SQLITE_NOMEM;
|
return SQLITE_NOMEM;
|
||||||
}
|
}
|
||||||
|
/* The antipenultimate character of the master journal name must
|
||||||
|
** be "9" to avoid name collisions when using 8+3 filenames. */
|
||||||
|
assert( zMaster[strlen(zMaster)-3]=='9' );
|
||||||
sqlite3FileSuffix3(zMainFile, zMaster);
|
sqlite3FileSuffix3(zMainFile, zMaster);
|
||||||
rc = sqlite3OsAccess(pVfs, zMaster, SQLITE_ACCESS_EXISTS, &res);
|
rc = sqlite3OsAccess(pVfs, zMaster, SQLITE_ACCESS_EXISTS, &res);
|
||||||
}while( rc==SQLITE_OK && res );
|
}while( rc==SQLITE_OK && res );
|
||||||
|
|||||||
Reference in New Issue
Block a user