1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-05 15:55:57 +03:00

Back out the new device capability. The determination of whether or not a

file has moved is now done strictly using a file-control.

FossilOrigin-Name: 9c59f5af7ac4908583fab85d37241f200c40f02d
This commit is contained in:
drh
2013-12-07 16:45:05 +00:00
parent b959a017b6
commit a9c19f935c
5 changed files with 18 additions and 19 deletions

View File

@@ -1,5 +1,5 @@
C Actually\slook\sat\si-node\snumbers\sto\sdetermine\swhether\sor\snot\sthe\sdatabase\nfile\shas\smoved. C Back\sout\sthe\snew\sdevice\scapability.\s\sThe\sdetermination\sof\swhether\sor\snot\sa\nfile\shas\smoved\sis\snow\sdone\sstrictly\susing\sa\sfile-control.
D 2013-12-07T12:29:22.514 D 2013-12-07T16:45:05.762
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in e1a9b4258bbde53f5636f4e238c65b7e11459e2b F Makefile.in e1a9b4258bbde53f5636f4e238c65b7e11459e2b
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -206,8 +206,8 @@ F src/os.c b4ad71336fd96f97776f75587cd9e8218288f5be
F src/os.h 4a46270a64e9193af4a0aaa3bc2c66dc07c29b3f F src/os.h 4a46270a64e9193af4a0aaa3bc2c66dc07c29b3f
F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04 F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
F src/os_unix.c 60a7b3b23e6fcf83a50d1e320b280b551724e11f F src/os_unix.c 60a7b3b23e6fcf83a50d1e320b280b551724e11f
F src/os_win.c f149798adb6f32db835b2c9f9fac83d86015e004 F src/os_win.c 4323dd0bac4f7a7037fc4cf87fb4692d17f0b108
F src/pager.c 6aa7d8eca75cac90f90f4c2619fb6c47153756e6 F src/pager.c d27dc8aaeac16c90eb0c859c074683bfc4533c41
F src/pager.h f094af9f6ececfaa8a1e93876905a4f34233fb0c F src/pager.h f094af9f6ececfaa8a1e93876905a4f34233fb0c
F src/parse.y acee1a9958539e21263362b194594c5255ad2fca F src/parse.y acee1a9958539e21263362b194594c5255ad2fca
F src/pcache.c f8043b433a57aba85384a531e3937a804432a346 F src/pcache.c f8043b433a57aba85384a531e3937a804432a346
@@ -221,7 +221,7 @@ F src/resolve.c 7eda9097b29fcf3d2b42fdc17d1de672134e09b6
F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0 F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0
F src/select.c d41381d80a22d3a83352aeca274cccf264ac277a F src/select.c d41381d80a22d3a83352aeca274cccf264ac277a
F src/shell.c 936a72ff784efff3832cce274a96ed0b036e6758 F src/shell.c 936a72ff784efff3832cce274a96ed0b036e6758
F src/sqlite.h.in eea3f417059c203f450ec64acbb19e6201063c0c F src/sqlite.h.in 125dc0b76f0116f1cd6f13536db52ba981e1c5bd
F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e
F src/sqlite3ext.h 886f5a34de171002ad46fae8c36a7d8051c190fc F src/sqlite3ext.h 886f5a34de171002ad46fae8c36a7d8051c190fc
F src/sqliteInt.h f3a5d663fe9c6c0b2ee7fc2e20a6204eaea5bc7c F src/sqliteInt.h f3a5d663fe9c6c0b2ee7fc2e20a6204eaea5bc7c
@@ -1146,7 +1146,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
P 7789f801d720db5394117e764675cd4bbe6b2da1 P 2b1884dc14f9a04a04eebb3245fbe0daaff399eb
R 3bce36f2564839cff6784053e8b7c283 R 4150eee10eaa0b472e8e9f4c3fd71eac
U drh U drh
Z 80f483ee05b71fc1e6bab9b86a396c28 Z f90de22ca9080d17b19aebd5c1cb9da5

View File

@@ -1 +1 @@
2b1884dc14f9a04a04eebb3245fbe0daaff399eb 9c59f5af7ac4908583fab85d37241f200c40f02d

View File

@@ -3192,7 +3192,6 @@ static int winSectorSize(sqlite3_file *id){
static int winDeviceCharacteristics(sqlite3_file *id){ static int winDeviceCharacteristics(sqlite3_file *id){
winFile *p = (winFile*)id; winFile *p = (winFile*)id;
return SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN | return SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN |
SQLITE_IOCAP_UNMOVABLE_WHEN_OPEN |
((p->ctrlFlags & WINFILE_PSOW)?SQLITE_IOCAP_POWERSAFE_OVERWRITE:0); ((p->ctrlFlags & WINFILE_PSOW)?SQLITE_IOCAP_POWERSAFE_OVERWRITE:0);
} }

View File

@@ -4803,19 +4803,21 @@ int sqlite3PagerOpen(
** code from sqlite3OsAccess()) if the database has gone missing. ** code from sqlite3OsAccess()) if the database has gone missing.
*/ */
static int databaseIsUnmoved(Pager *pPager){ static int databaseIsUnmoved(Pager *pPager){
const int fixedFlags = SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN |
SQLITE_IOCAP_UNMOVABLE_WHEN_OPEN;
int dc;
int bHasMoved = 0; int bHasMoved = 0;
int rc; int rc;
if( pPager->tempFile ) return SQLITE_OK; if( pPager->tempFile ) return SQLITE_OK;
if( pPager->dbSize==0 ) return SQLITE_OK; if( pPager->dbSize==0 ) return SQLITE_OK;
assert( pPager->zFilename && pPager->zFilename[0] ); assert( pPager->zFilename && pPager->zFilename[0] );
dc = sqlite3OsDeviceCharacteristics(pPager->fd);
if( (dc&fixedFlags)==fixedFlags ) return SQLITE_OK;
rc = sqlite3OsFileControl(pPager->fd, SQLITE_FCNTL_HAS_MOVED, &bHasMoved); rc = sqlite3OsFileControl(pPager->fd, SQLITE_FCNTL_HAS_MOVED, &bHasMoved);
if( rc==SQLITE_OK && bHasMoved ) rc = SQLITE_READONLY_DBMOVED; if( rc==SQLITE_NOTFOUND ){
/* If the HAS_MOVED file-control is unimplemented, assume that the file
** has not been moved. That is the historical behavior of SQLite: prior to
** version 3.8.3, it never checked */
rc = SQLITE_OK;
}else if( rc==SQLITE_OK && bHasMoved ){
rc = SQLITE_READONLY_DBMOVED;
}
return rc; return rc;
} }

View File

@@ -555,8 +555,7 @@ int sqlite3_exec(
** file that were written at the application level might have changed ** file that were written at the application level might have changed
** and that adjacent bytes, even bytes within the same sector are ** and that adjacent bytes, even bytes within the same sector are
** guaranteed to be unchanged. The SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN ** guaranteed to be unchanged. The SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN
** and SQLITE_IOCAP_UNMOVABLE_WHEN_OPEN flags indicate that a file ** flag indicate that a file cannot be deleted when open.
** cannot be deleted or renamed when open, respectively.
*/ */
#define SQLITE_IOCAP_ATOMIC 0x00000001 #define SQLITE_IOCAP_ATOMIC 0x00000001
#define SQLITE_IOCAP_ATOMIC512 0x00000002 #define SQLITE_IOCAP_ATOMIC512 0x00000002
@@ -571,7 +570,6 @@ int sqlite3_exec(
#define SQLITE_IOCAP_SEQUENTIAL 0x00000400 #define SQLITE_IOCAP_SEQUENTIAL 0x00000400
#define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800 #define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800
#define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000 #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000
#define SQLITE_IOCAP_UNMOVABLE_WHEN_OPEN 0x00002000
/* /*
** CAPI3REF: File Locking Levels ** CAPI3REF: File Locking Levels