mirror of https://github.com/sqlite/sqlite
Add an OS method for making copies of file descriptors. This fixes the
crash tests. (CVS 2786) FossilOrigin-Name: 57a674fc71512f11393b8eb595961ec9465ba4e1
This commit is contained in:
parent
9c06c95309
commit
18839217da
20
manifest
20
manifest
|
@ -1,5 +1,5 @@
|
|||
C Modify\sthe\sOS\slayer\sso\sthat\sI/O\sroutines\sare\scalled\sthrough\sa\svirtual\sfunction\ntable.\s\sThe\sos_test.c\smodule\shas\sbeen\sreplaced\sby\stest6.c.\s\sThe\scrash\stests\nare\sbusted\snow\sand\sneed\sto\sbe\sfixed.\s(CVS\s2785)
|
||||
D 2005-11-26T00:25:01
|
||||
C Add\san\sOS\smethod\sfor\smaking\scopies\sof\sfile\sdescriptors.\s\sThis\sfixes\sthe\ncrash\stests.\s(CVS\s2786)
|
||||
D 2005-11-26T03:43:23
|
||||
F Makefile.in 28a2772cd9e03ba758c2a052813092cdb9da73bf
|
||||
F Makefile.linux-gcc aee18d8a05546dcf1888bd4547e442008a49a092
|
||||
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
|
||||
|
@ -50,15 +50,15 @@ F src/insert.c da031c3ed8e1675fac891990095d277c2ba6e205
|
|||
F src/legacy.c d58ea507bce885298a2c8c3cbb0f4bff5d47830b
|
||||
F src/main.c 97bb830cdbd378d1f87469618471f52d9d263d09
|
||||
F src/md5.c 7ae1c39044b95de2f62e066f47bb1deb880a1070
|
||||
F src/os.h 64564ddc5b70f8968d1df5039810a2e68cebe769
|
||||
F src/os.h 101564686bffe1825f7c66a712acb52e3ff3530d
|
||||
F src/os_common.h d74a11728ad2444b6b695b94c28c06881f049e49
|
||||
F src/os_test.c 49833426101f99aee4bb5f6a44b7c4b2029fda1c
|
||||
F src/os_test.h 903c93554c23d88f34f667f1979e4a1cee792af3
|
||||
F src/os_unix.c 57f47fd9172991550b2af15b18d8cc9ccb90d307
|
||||
F src/os_unix.c 09f174975fe054ed73117ee17c5650f55773fbe3
|
||||
F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e
|
||||
F src/os_win.c 5d282b4fb2afdeefd0857357206510e72192302c
|
||||
F src/os_win.c a3762efcc6eebbf8a38d25ff80e0e510ec7afead
|
||||
F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
|
||||
F src/pager.c 561657a20ecbc5fa4c8e1fcfe019006553fd39a1
|
||||
F src/pager.c 8231fb8d947d5c524763de34174380684bb801d1
|
||||
F src/pager.h e7b41ce8e7b5f629d456708b7ad9a8c8ede37140
|
||||
F src/parse.y e4d57c2fd5cc02f19822ec41f6dc2bfc9bc85609
|
||||
F src/pragma.c e278b3f722379ab9d630a1569ac05f586f01f4db
|
||||
|
@ -76,7 +76,7 @@ F src/test2.c 360cfa7fe17a4fe67f6d19699cd6d59fca4ff09f
|
|||
F src/test3.c f4e6a16a602091696619a1171bda25c0e3df49f7
|
||||
F src/test4.c a8fd681e139e1c61f22a77d07fc3a99cb28fff3f
|
||||
F src/test5.c 64f08b2a50ef371a1bd68ff206829e7b1b9997f5
|
||||
F src/test6.c d86ca78abd3c37149add00efc6538128e776714c
|
||||
F src/test6.c d8501501dbd257b88b3ecfa5c46d5e2ac230e0f9
|
||||
F src/tokenize.c bdb79702217af49eba44c2a3b4f5fc7bd9ed2917
|
||||
F src/trigger.c aea0283a3ef729a3e9c8dc5dc1a11c9fcc0a12a7
|
||||
F src/update.c fec7665138ccf2a2133f11dcd24c1134c6b33526
|
||||
|
@ -322,7 +322,7 @@ F www/tclsqlite.tcl ddcf912ea48695603c8ed7efb29f0812ef8d1b49
|
|||
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
||||
F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b
|
||||
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
|
||||
P dba2cc0d0e0c648c1a4798bc72913e3b19acba6e
|
||||
R 0354953fb5e466e6ce44febcde77bb5c
|
||||
P 1f69aec285dd8e26bd739d5e44bb50fe03a9682a
|
||||
R 4253512b789e7bb7309536d870bf771b
|
||||
U drh
|
||||
Z e7c0bd1253129b8abe29fc40e7e0d238
|
||||
Z 5555b9dd495cd99105a3717d675a6704
|
||||
|
|
|
@ -1 +1 @@
|
|||
1f69aec285dd8e26bd739d5e44bb50fe03a9682a
|
||||
57a674fc71512f11393b8eb595961ec9465ba4e1
|
1
src/os.h
1
src/os.h
|
@ -197,6 +197,7 @@ extern struct sqlite3IoVtbl {
|
|||
int (*xLock)(OsFile*, int);
|
||||
int (*xUnlock)(OsFile*, int);
|
||||
int (*xCheckReservedLock)(OsFile *id);
|
||||
void (*xCopyOsFile)(OsFile *pDest, OsFile *pSrc);
|
||||
} sqlite3Io;
|
||||
|
||||
/* The interface for file I/O is above. Other miscellaneous functions
|
||||
|
|
|
@ -1350,6 +1350,12 @@ static char *unixFullPathname(const char *zRelative){
|
|||
return zFull;
|
||||
}
|
||||
|
||||
/*
|
||||
** Make a copy of an OsFile object.
|
||||
*/
|
||||
static void unixCopyOsFile(OsFile *pDest, OsFile *pSrc){
|
||||
*pDest = *pSrc;
|
||||
}
|
||||
|
||||
/*
|
||||
** This is the structure that defines all of the I/O routines.
|
||||
|
@ -1375,6 +1381,7 @@ struct sqlite3IoVtbl sqlite3Io = {
|
|||
unixLock,
|
||||
unixUnlock,
|
||||
unixCheckReservedLock,
|
||||
unixCopyOsFile,
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -829,6 +829,14 @@ static char *winFullPathname(const char *zRelative){
|
|||
return zFull;
|
||||
}
|
||||
|
||||
/*
|
||||
** Make a copy of an OsFile object.
|
||||
*/
|
||||
static void winCopyOsFile(OsFile *pDest, OsFile *pSrc){
|
||||
*pDest = *pSrc;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
** This is the structure that defines all of the I/O routines.
|
||||
*/
|
||||
|
@ -853,6 +861,7 @@ struct sqlite3IoVtbl sqlite3Io = {
|
|||
winLock,
|
||||
winUnlock,
|
||||
winCheckReservedLock,
|
||||
winCopyOsFile,
|
||||
};
|
||||
|
||||
#endif /* SQLITE_OMIT_DISKIO */
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
** file simultaneously, or one process from reading the database while
|
||||
** another is writing.
|
||||
**
|
||||
** @(#) $Id: pager.c,v 1.218 2005/11/26 00:25:03 drh Exp $
|
||||
** @(#) $Id: pager.c,v 1.219 2005/11/26 03:43:23 drh Exp $
|
||||
*/
|
||||
#ifndef SQLITE_OMIT_DISKIO
|
||||
#include "sqliteInt.h"
|
||||
|
@ -1659,7 +1659,7 @@ int sqlite3pager_open(
|
|||
strcpy(pPager->zJournal, zFullPathname);
|
||||
sqliteFree(zFullPathname);
|
||||
strcpy(&pPager->zJournal[nameLen], "-journal");
|
||||
pPager->fd = fd;
|
||||
sqlite3Io.xCopyOsFile(&pPager->fd,&fd);
|
||||
pPager->journalOpen = 0;
|
||||
pPager->useJournal = useJournal && !memDb;
|
||||
pPager->noReadlock = noReadlock && readOnly;
|
||||
|
|
|
@ -428,6 +428,14 @@ static int crashOpenReadOnly(const char *zFilename, OsFile *id){
|
|||
return origIo.xOpenReadOnly(zFilename, id);
|
||||
}
|
||||
|
||||
/*
|
||||
** Make a copy of an OsFile object
|
||||
*/
|
||||
static void crashCopyOsFile(OsFile *pDest, OsFile *pSrc){
|
||||
*pDest = *pSrc;
|
||||
((OsTestFile*)(pDest->pAux))->pBase = pDest;
|
||||
}
|
||||
|
||||
/*
|
||||
** tclcmd: sqlite_crashparams DELAY CRASHFILE
|
||||
**
|
||||
|
@ -464,6 +472,7 @@ static int crashParamsObjCmd(
|
|||
sqlite3Io.xOpenReadWrite = crashOpenReadWrite;
|
||||
sqlite3Io.xOpenExclusive = crashOpenExclusive;
|
||||
sqlite3Io.xOpenReadOnly = crashOpenReadOnly;
|
||||
sqlite3Io.xCopyOsFile = crashCopyOsFile;
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue