mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
Add new OS file method to return the sector-size of the underlying storage: sqlite3OsSectorSize() (CVS 3700)
FossilOrigin-Name: 5752d84d374205e011d49b0221d6237967fe0743
This commit is contained in:
32
manifest
32
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Add\sdocumentation\sof\sthe\sREPLACE,\sTRIM,\sLTRIM,\sand\sRTRIM\sfunctions.\s(CVS\s3699)
|
C Add\snew\sOS\sfile\smethod\sto\sreturn\sthe\ssector-size\sof\sthe\sunderlying\sstorage:\ssqlite3OsSectorSize()\s(CVS\s3700)
|
||||||
D 2007-03-17T18:22:58
|
D 2007-03-19T05:54:49
|
||||||
F Makefile.in 1fe3d0b46e40fd684e1e61f8e8056cefed16de9f
|
F Makefile.in 1fe3d0b46e40fd684e1e61f8e8056cefed16de9f
|
||||||
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
|
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
|
||||||
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
|
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
|
||||||
@@ -75,18 +75,18 @@ F src/legacy.c 2631df6a861f830d6b1c0fe92b9fdd745b2c0cd6
|
|||||||
F src/loadext.c bbfdbf452c71b6f2723375478a365788498ec3cd
|
F src/loadext.c bbfdbf452c71b6f2723375478a365788498ec3cd
|
||||||
F src/main.c af8922e0205cf618392de2836c9efad71786d0d6
|
F src/main.c af8922e0205cf618392de2836c9efad71786d0d6
|
||||||
F src/md5.c c5fdfa5c2593eaee2e32a5ce6c6927c986eaf217
|
F src/md5.c c5fdfa5c2593eaee2e32a5ce6c6927c986eaf217
|
||||||
F src/os.c 59f05de8c5777c34876607114a2fbe55ae578235
|
F src/os.c 6df3e9c23eaa982d3e66ef770ad2519de5dd4d97
|
||||||
F src/os.h 17fc73165cb7436aa79492d2dff754baec74fcb9
|
F src/os.h ec780b3561d0bb887d13f193a1a889872c44a236
|
||||||
F src/os_common.h 970899e83de0ba177d6fbdf9d700457fa3c6df8c
|
F src/os_common.h aa3ef56941dcaf480b6f055a615674fe4909edbc
|
||||||
F src/os_os2.c 8ee8207fe218a1acf3a31d59753e165e5c23bb95
|
F src/os_os2.c 175101ffc2142c3fc7962ed7a171806f28f95363
|
||||||
F src/os_os2.h e5f17dd69333632bbc3112881ea407c37d245eb3
|
F src/os_os2.h e5f17dd69333632bbc3112881ea407c37d245eb3
|
||||||
F src/os_test.c 49833426101f99aee4bb5f6a44b7c4b2029fda1c
|
F src/os_test.c 49833426101f99aee4bb5f6a44b7c4b2029fda1c
|
||||||
F src/os_test.h 903c93554c23d88f34f667f1979e4a1cee792af3
|
F src/os_test.h 903c93554c23d88f34f667f1979e4a1cee792af3
|
||||||
F src/os_unix.c a3b26ad8270aea899f9d65fd2e6a176b05d2ef8f
|
F src/os_unix.c 33ee7c1483fbd4d67cf5638c87622c277442b744
|
||||||
F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e
|
F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e
|
||||||
F src/os_win.c 8736cf3a49fd651a6538857480f302807d57814c
|
F src/os_win.c f3ca3e08167eb3382781b840e787809eccb626dc
|
||||||
F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
|
F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
|
||||||
F src/pager.c ccca82d0f6644b95fd4f985d7049f1505443f048
|
F src/pager.c 097923484be9edfb238920ad61583ad98ef3bbb3
|
||||||
F src/pager.h 8881591ca23d1e5fd83c95fa8317245fbcf64227
|
F src/pager.h 8881591ca23d1e5fd83c95fa8317245fbcf64227
|
||||||
F src/parse.y bcfe366c1fd61cfc40e5344eb69a31997a821af0
|
F src/parse.y bcfe366c1fd61cfc40e5344eb69a31997a821af0
|
||||||
F src/pragma.c b52dcf2fbb46f3266f9d00b88054c684df3af2e7
|
F src/pragma.c b52dcf2fbb46f3266f9d00b88054c684df3af2e7
|
||||||
@@ -106,10 +106,10 @@ F src/test2.c 59085c04e22a22bed9f1078ab318adc34c1229f3
|
|||||||
F src/test3.c ed494a126221c4b9f66f8f0445554ad749764709
|
F src/test3.c ed494a126221c4b9f66f8f0445554ad749764709
|
||||||
F src/test4.c 8b784cd82de158a2317cb4ac4bc86f91ad315e25
|
F src/test4.c 8b784cd82de158a2317cb4ac4bc86f91ad315e25
|
||||||
F src/test5.c 7162f8526affb771c4ed256826eee7bb9eca265f
|
F src/test5.c 7162f8526affb771c4ed256826eee7bb9eca265f
|
||||||
F src/test6.c edbd903a4886c171f199048af58c3aa5b2a86712
|
F src/test6.c 5957d249d437e4db74045ce2f1f661648d94bf94
|
||||||
F src/test7.c 03fa8d787f6aebc6d1f72504d52f33013ad2c8e3
|
F src/test7.c 03fa8d787f6aebc6d1f72504d52f33013ad2c8e3
|
||||||
F src/test8.c 628ec89f9fbf3bfb9c58a503d845a0719595d0ad
|
F src/test8.c 628ec89f9fbf3bfb9c58a503d845a0719595d0ad
|
||||||
F src/test_async.c e3deaedd4d86a56391b81808fde9e44fbd92f1d3
|
F src/test_async.c 33eb896746b512078a83cd5424de37445bb30de2
|
||||||
F src/test_autoext.c 855157d97aa28cf84233847548bfacda21807436
|
F src/test_autoext.c 855157d97aa28cf84233847548bfacda21807436
|
||||||
F src/test_loadext.c 22065d601a18878e5542191001f0eaa5d77c0ed8
|
F src/test_loadext.c 22065d601a18878e5542191001f0eaa5d77c0ed8
|
||||||
F src/test_md5.c 6c42bc0a3c0b54be34623ff77a0eec32b2fa96e3
|
F src/test_md5.c 6c42bc0a3c0b54be34623ff77a0eec32b2fa96e3
|
||||||
@@ -184,7 +184,7 @@ F test/conflict.test 8a59399f61a14296a9bfed02e0570590a8a79cba
|
|||||||
F test/corrupt.test 18c7a995b1af76a8c8600b996257f2c7b7bff083
|
F test/corrupt.test 18c7a995b1af76a8c8600b996257f2c7b7bff083
|
||||||
F test/corrupt2.test 572f8df0303d0ce63ddad5c5c9101a83a345ae46
|
F test/corrupt2.test 572f8df0303d0ce63ddad5c5c9101a83a345ae46
|
||||||
F test/crash.test 167eb4652eccbedb199b6f21850346c3f5d779fb
|
F test/crash.test 167eb4652eccbedb199b6f21850346c3f5d779fb
|
||||||
F test/crash2.test 10be14f91865c6959db6764a7dd478c6561bf4c1
|
F test/crash2.test 18bbb71c41de2b7892562679f3cdb72b86d4cd27
|
||||||
F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2
|
F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2
|
||||||
F test/date.test 63cc718e1d209b10c6b7be8ce72b11addb9f1e04
|
F test/date.test 63cc718e1d209b10c6b7be8ce72b11addb9f1e04
|
||||||
F test/default.test 252298e42a680146b1dd64f563b95bdf088d94fb
|
F test/default.test 252298e42a680146b1dd64f563b95bdf088d94fb
|
||||||
@@ -437,7 +437,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
|
|||||||
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
||||||
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
||||||
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
|
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
|
||||||
P 6fe13eeade4fc7099fbda1e6520640927c08debc
|
P d42c9636205a1a649cffcaeabff2b9b32016db31
|
||||||
R e59c456a15c824af13e66ea80698a647
|
R aace24c3ad1a66792ced6daa5ca6df05
|
||||||
U drh
|
U danielk1977
|
||||||
Z 83430ba34df4fa316ba8687bbb9080e3
|
Z a82901bb045246e4e447c22d214c62f4
|
||||||
|
@@ -1 +1 @@
|
|||||||
d42c9636205a1a649cffcaeabff2b9b32016db31
|
5752d84d374205e011d49b0221d6237967fe0743
|
3
src/os.c
3
src/os.c
@@ -75,6 +75,9 @@ int sqlite3OsLockState(OsFile *id){
|
|||||||
int sqlite3OsCheckReservedLock(OsFile *id){
|
int sqlite3OsCheckReservedLock(OsFile *id){
|
||||||
return id->pMethod->xCheckReservedLock(id);
|
return id->pMethod->xCheckReservedLock(id);
|
||||||
}
|
}
|
||||||
|
int sqlite3OsSectorSize(OsFile *id){
|
||||||
|
return id->pMethod->xSectorSize(id);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef SQLITE_ENABLE_REDEF_IO
|
#ifdef SQLITE_ENABLE_REDEF_IO
|
||||||
/*
|
/*
|
||||||
|
2
src/os.h
2
src/os.h
@@ -216,6 +216,7 @@ struct IoMethod {
|
|||||||
int (*xUnlock)(OsFile*, int);
|
int (*xUnlock)(OsFile*, int);
|
||||||
int (*xLockState)(OsFile *id);
|
int (*xLockState)(OsFile *id);
|
||||||
int (*xCheckReservedLock)(OsFile *id);
|
int (*xCheckReservedLock)(OsFile *id);
|
||||||
|
int (*xSectorSize)(OsFile *id);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -346,6 +347,7 @@ int sqlite3OsFileExists(const char*);
|
|||||||
char *sqlite3OsFullPathname(const char*);
|
char *sqlite3OsFullPathname(const char*);
|
||||||
int sqlite3OsIsDirWritable(char*);
|
int sqlite3OsIsDirWritable(char*);
|
||||||
int sqlite3OsSyncDirectory(const char*);
|
int sqlite3OsSyncDirectory(const char*);
|
||||||
|
int sqlite3OsSectorSize(OsFile *id);
|
||||||
int sqlite3OsTempFileName(char*);
|
int sqlite3OsTempFileName(char*);
|
||||||
int sqlite3OsRandomSeed(char*);
|
int sqlite3OsRandomSeed(char*);
|
||||||
int sqlite3OsSleep(int ms);
|
int sqlite3OsSleep(int ms);
|
||||||
|
@@ -190,3 +190,14 @@ void sqlite3GenericFree(void *p){
|
|||||||
/* Never actually used, but needed for the linker */
|
/* Never actually used, but needed for the linker */
|
||||||
int sqlite3GenericAllocationSize(void *p){ return 0; }
|
int sqlite3GenericAllocationSize(void *p){ return 0; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** The default size of a disk sector
|
||||||
|
*/
|
||||||
|
#ifndef PAGER_SECTOR_SIZE
|
||||||
|
# define PAGER_SECTOR_SIZE 512
|
||||||
|
#endif
|
||||||
|
static int osGenericSectorSize(OsFile *id){
|
||||||
|
return PAGER_SECTOR_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -751,6 +751,7 @@ static const IoMethod sqlite3Os2IoMethod = {
|
|||||||
os2Unlock,
|
os2Unlock,
|
||||||
os2LockState,
|
os2LockState,
|
||||||
os2CheckReservedLock,
|
os2CheckReservedLock,
|
||||||
|
osGenericSectorSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -2355,6 +2355,7 @@ static const IoMethod sqlite3UnixIoMethod = {
|
|||||||
unixUnlock,
|
unixUnlock,
|
||||||
unixLockState,
|
unixLockState,
|
||||||
unixCheckReservedLock,
|
unixCheckReservedLock,
|
||||||
|
osGenericSectorSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef SQLITE_ENABLE_LOCKING_STYLE
|
#ifdef SQLITE_ENABLE_LOCKING_STYLE
|
||||||
@@ -2377,6 +2378,7 @@ static const IoMethod sqlite3AFPLockingUnixIoMethod = {
|
|||||||
afpUnixUnlock,
|
afpUnixUnlock,
|
||||||
unixLockState,
|
unixLockState,
|
||||||
afpUnixCheckReservedLock,
|
afpUnixCheckReservedLock,
|
||||||
|
osGenericSectorSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -2398,6 +2400,7 @@ static const IoMethod sqlite3FlockLockingUnixIoMethod = {
|
|||||||
flockUnixUnlock,
|
flockUnixUnlock,
|
||||||
unixLockState,
|
unixLockState,
|
||||||
flockUnixCheckReservedLock,
|
flockUnixCheckReservedLock,
|
||||||
|
osGenericSectorSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -2419,6 +2422,7 @@ static const IoMethod sqlite3DotlockLockingUnixIoMethod = {
|
|||||||
dotlockUnixUnlock,
|
dotlockUnixUnlock,
|
||||||
unixLockState,
|
unixLockState,
|
||||||
dotlockUnixCheckReservedLock,
|
dotlockUnixCheckReservedLock,
|
||||||
|
osGenericSectorSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -2440,6 +2444,7 @@ static const IoMethod sqlite3NolockLockingUnixIoMethod = {
|
|||||||
nolockUnixUnlock,
|
nolockUnixUnlock,
|
||||||
unixLockState,
|
unixLockState,
|
||||||
nolockUnixCheckReservedLock,
|
nolockUnixCheckReservedLock,
|
||||||
|
osGenericSectorSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SQLITE_ENABLE_LOCKING_STYLE */
|
#endif /* SQLITE_ENABLE_LOCKING_STYLE */
|
||||||
|
@@ -1473,6 +1473,7 @@ static const IoMethod sqlite3WinIoMethod = {
|
|||||||
winUnlock,
|
winUnlock,
|
||||||
winLockState,
|
winLockState,
|
||||||
winCheckReservedLock,
|
winCheckReservedLock,
|
||||||
|
osGenericSectorSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
16
src/pager.c
16
src/pager.c
@@ -18,7 +18,7 @@
|
|||||||
** file simultaneously, or one process from reading the database while
|
** file simultaneously, or one process from reading the database while
|
||||||
** another is writing.
|
** another is writing.
|
||||||
**
|
**
|
||||||
** @(#) $Id: pager.c,v 1.288 2007/03/15 12:51:16 drh Exp $
|
** @(#) $Id: pager.c,v 1.289 2007/03/19 05:54:49 danielk1977 Exp $
|
||||||
*/
|
*/
|
||||||
#ifndef SQLITE_OMIT_DISKIO
|
#ifndef SQLITE_OMIT_DISKIO
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
@@ -349,13 +349,6 @@ static const unsigned char aJournalMagic[] = {
|
|||||||
# define MEMDB pPager->memDb
|
# define MEMDB pPager->memDb
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
** The default size of a disk sector
|
|
||||||
*/
|
|
||||||
#ifndef PAGER_SECTOR_SIZE
|
|
||||||
# define PAGER_SECTOR_SIZE 512
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Page number PAGER_MJ_PGNO is never used in an SQLite database (it is
|
** Page number PAGER_MJ_PGNO is never used in an SQLite database (it is
|
||||||
** reserved for working around a windows/posix incompatibility). It is
|
** reserved for working around a windows/posix incompatibility). It is
|
||||||
@@ -1394,7 +1387,7 @@ end_playback:
|
|||||||
** back a journal created by a process with a different PAGER_SECTOR_SIZE
|
** back a journal created by a process with a different PAGER_SECTOR_SIZE
|
||||||
** value. Reset it to the correct value for this process.
|
** value. Reset it to the correct value for this process.
|
||||||
*/
|
*/
|
||||||
pPager->sectorSize = PAGER_SECTOR_SIZE;
|
pPager->sectorSize = sqlite3OsSectorSize(pPager->fd);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1738,7 +1731,10 @@ int sqlite3pager_open(
|
|||||||
/* pPager->pFirstSynced = 0; */
|
/* pPager->pFirstSynced = 0; */
|
||||||
/* pPager->pLast = 0; */
|
/* pPager->pLast = 0; */
|
||||||
pPager->nExtra = FORCE_ALIGNMENT(nExtra);
|
pPager->nExtra = FORCE_ALIGNMENT(nExtra);
|
||||||
pPager->sectorSize = PAGER_SECTOR_SIZE;
|
assert(fd||memDb);
|
||||||
|
if( !memDb ){
|
||||||
|
pPager->sectorSize = sqlite3OsSectorSize(fd);
|
||||||
|
}
|
||||||
/* pPager->pBusyHandler = 0; */
|
/* pPager->pBusyHandler = 0; */
|
||||||
/* memset(pPager->aHash, 0, sizeof(pPager->aHash)); */
|
/* memset(pPager->aHash, 0, sizeof(pPager->aHash)); */
|
||||||
*ppPager = pPager;
|
*ppPager = pPager;
|
||||||
|
@@ -478,6 +478,13 @@ int crashFileHandle(OsFile *id){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Return the simulated file-system sector size.
|
||||||
|
*/
|
||||||
|
int crashSectorSize(OsFile *id){
|
||||||
|
return BLOCKSIZE;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** This vector defines all the methods that can operate on an OsFile
|
** This vector defines all the methods that can operate on an OsFile
|
||||||
** for the crash tester.
|
** for the crash tester.
|
||||||
@@ -497,6 +504,7 @@ static const IoMethod crashIoMethod = {
|
|||||||
crashUnlock,
|
crashUnlock,
|
||||||
crashLockState,
|
crashLockState,
|
||||||
crashCheckReservedLock,
|
crashCheckReservedLock,
|
||||||
|
crashSectorSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@@ -650,6 +650,13 @@ static int asyncCheckReservedLock(OsFile *id){
|
|||||||
return rc>SHARED_LOCK;
|
return rc>SHARED_LOCK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int asyncSectorSize(OsFile *id){
|
||||||
|
/* TODO: This is tricky to implement, as this backend might not have
|
||||||
|
** an open file handle at this point.
|
||||||
|
*/
|
||||||
|
return 512;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** This is broken. But sqlite3OsLockState() is only used for testing anyway.
|
** This is broken. But sqlite3OsLockState() is only used for testing anyway.
|
||||||
*/
|
*/
|
||||||
@@ -697,7 +704,8 @@ static int asyncOpenFile(
|
|||||||
asyncLock,
|
asyncLock,
|
||||||
asyncUnlock,
|
asyncUnlock,
|
||||||
asyncLockState,
|
asyncLockState,
|
||||||
asyncCheckReservedLock
|
asyncCheckReservedLock,
|
||||||
|
asyncSectorSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
if( openForWriting && SQLITE_ASYNC_TWO_FILEHANDLES ){
|
if( openForWriting && SQLITE_ASYNC_TWO_FILEHANDLES ){
|
||||||
|
@@ -16,7 +16,7 @@
|
|||||||
# specifically, the tests in this file verify this functionality
|
# specifically, the tests in this file verify this functionality
|
||||||
# for storage mediums with various sector sizes.
|
# for storage mediums with various sector sizes.
|
||||||
#
|
#
|
||||||
# $Id: crash2.test,v 1.1 2007/03/17 10:28:05 danielk1977 Exp $
|
# $Id: crash2.test,v 1.2 2007/03/19 05:54:50 danielk1977 Exp $
|
||||||
|
|
||||||
set testdir [file dirname $argv0]
|
set testdir [file dirname $argv0]
|
||||||
source $testdir/tester.tcl
|
source $testdir/tester.tcl
|
||||||
|
Reference in New Issue
Block a user