Move the vfstrace extension out of src/ and into ext/misc/. Make it a
standard part of the CLI. Improve its output. Also fix some unrelated comment typos. FossilOrigin-Name: 123cb1f579daec3ed092fe9dd1bc0d3250f2b56d4cda1efa92af139029e112e2
This commit is contained in:
commit
9c2f068ebd
@ -1194,6 +1194,7 @@ SHELL_DEP = \
|
|||||||
$(TOP)/ext/misc/shathree.c \
|
$(TOP)/ext/misc/shathree.c \
|
||||||
$(TOP)/ext/misc/sqlar.c \
|
$(TOP)/ext/misc/sqlar.c \
|
||||||
$(TOP)/ext/misc/uint.c \
|
$(TOP)/ext/misc/uint.c \
|
||||||
|
$(TOP)/ext/misc/vfstrace.c \
|
||||||
$(TOP)/ext/misc/zipfile.c \
|
$(TOP)/ext/misc/zipfile.c \
|
||||||
$(TOP)/ext/recover/dbdata.c \
|
$(TOP)/ext/recover/dbdata.c \
|
||||||
$(TOP)/ext/recover/sqlite3recover.c \
|
$(TOP)/ext/recover/sqlite3recover.c \
|
||||||
|
@ -2320,6 +2320,7 @@ SHELL_DEP = \
|
|||||||
$(TOP)\ext\misc\shathree.c \
|
$(TOP)\ext\misc\shathree.c \
|
||||||
$(TOP)\ext\misc\sqlar.c \
|
$(TOP)\ext\misc\sqlar.c \
|
||||||
$(TOP)\ext\misc\uint.c \
|
$(TOP)\ext\misc\uint.c \
|
||||||
|
$(TOP)\ext\misc\vfstrace.c \
|
||||||
$(TOP)\ext\misc\zipfile.c \
|
$(TOP)\ext\misc\zipfile.c \
|
||||||
$(TOP)\ext\recover\dbdata.c \
|
$(TOP)\ext\recover\dbdata.c \
|
||||||
$(TOP)\ext\recover\sqlite3recover.c \
|
$(TOP)\ext\recover\sqlite3recover.c \
|
||||||
|
@ -182,7 +182,7 @@ static const char *vfstraceNextSystemCall(sqlite3_vfs*, const char *zName);
|
|||||||
** xyzzy.txt -> xyzzy.txt
|
** xyzzy.txt -> xyzzy.txt
|
||||||
*/
|
*/
|
||||||
static const char *fileTail(const char *z){
|
static const char *fileTail(const char *z){
|
||||||
int i;
|
size_t i;
|
||||||
if( z==0 ) return 0;
|
if( z==0 ) return 0;
|
||||||
i = strlen(z)-1;
|
i = strlen(z)-1;
|
||||||
while( i>0 && z[i-1]!='/' ){ i--; }
|
while( i>0 && z[i-1]!='/' ){ i--; }
|
||||||
@ -207,36 +207,34 @@ static void vfstrace_printf(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Convert value rc into a string and print it using zFormat. zFormat
|
** Try to convert an error code into a symbolic name for that error code.
|
||||||
** should have exactly one %s
|
|
||||||
*/
|
*/
|
||||||
static void vfstrace_print_errcode(
|
static const char *vfstrace_errcode_name(int rc ){
|
||||||
vfstrace_info *pInfo,
|
const char *zVal = 0;
|
||||||
const char *zFormat,
|
|
||||||
int rc
|
|
||||||
){
|
|
||||||
char zBuf[50];
|
|
||||||
char *zVal;
|
|
||||||
switch( rc ){
|
switch( rc ){
|
||||||
case SQLITE_OK: zVal = "SQLITE_OK"; break;
|
case SQLITE_OK: zVal = "SQLITE_OK"; break;
|
||||||
case SQLITE_ERROR: zVal = "SQLITE_ERROR"; break;
|
case SQLITE_INTERNAL: zVal = "SQLITE_INTERNAL"; break;
|
||||||
case SQLITE_PERM: zVal = "SQLITE_PERM"; break;
|
case SQLITE_ERROR: zVal = "SQLITE_ERROR"; break;
|
||||||
case SQLITE_ABORT: zVal = "SQLITE_ABORT"; break;
|
case SQLITE_PERM: zVal = "SQLITE_PERM"; break;
|
||||||
case SQLITE_BUSY: zVal = "SQLITE_BUSY"; break;
|
case SQLITE_ABORT: zVal = "SQLITE_ABORT"; break;
|
||||||
case SQLITE_NOMEM: zVal = "SQLITE_NOMEM"; break;
|
case SQLITE_BUSY: zVal = "SQLITE_BUSY"; break;
|
||||||
case SQLITE_READONLY: zVal = "SQLITE_READONLY"; break;
|
case SQLITE_LOCKED: zVal = "SQLITE_LOCKED"; break;
|
||||||
case SQLITE_INTERRUPT: zVal = "SQLITE_INTERRUPT"; break;
|
case SQLITE_NOMEM: zVal = "SQLITE_NOMEM"; break;
|
||||||
case SQLITE_IOERR: zVal = "SQLITE_IOERR"; break;
|
case SQLITE_READONLY: zVal = "SQLITE_READONLY"; break;
|
||||||
case SQLITE_CORRUPT: zVal = "SQLITE_CORRUPT"; break;
|
case SQLITE_INTERRUPT: zVal = "SQLITE_INTERRUPT"; break;
|
||||||
case SQLITE_FULL: zVal = "SQLITE_FULL"; break;
|
case SQLITE_IOERR: zVal = "SQLITE_IOERR"; break;
|
||||||
case SQLITE_CANTOPEN: zVal = "SQLITE_CANTOPEN"; break;
|
case SQLITE_CORRUPT: zVal = "SQLITE_CORRUPT"; break;
|
||||||
case SQLITE_PROTOCOL: zVal = "SQLITE_PROTOCOL"; break;
|
case SQLITE_NOTFOUND: zVal = "SQLITE_NOTFOUND"; break;
|
||||||
case SQLITE_EMPTY: zVal = "SQLITE_EMPTY"; break;
|
case SQLITE_FULL: zVal = "SQLITE_FULL"; break;
|
||||||
case SQLITE_SCHEMA: zVal = "SQLITE_SCHEMA"; break;
|
case SQLITE_CANTOPEN: zVal = "SQLITE_CANTOPEN"; break;
|
||||||
case SQLITE_CONSTRAINT: zVal = "SQLITE_CONSTRAINT"; break;
|
case SQLITE_PROTOCOL: zVal = "SQLITE_PROTOCOL"; break;
|
||||||
case SQLITE_MISMATCH: zVal = "SQLITE_MISMATCH"; break;
|
case SQLITE_EMPTY: zVal = "SQLITE_EMPTY"; break;
|
||||||
case SQLITE_MISUSE: zVal = "SQLITE_MISUSE"; break;
|
case SQLITE_SCHEMA: zVal = "SQLITE_SCHEMA"; break;
|
||||||
case SQLITE_NOLFS: zVal = "SQLITE_NOLFS"; break;
|
case SQLITE_TOOBIG: zVal = "SQLITE_TOOBIG"; break;
|
||||||
|
case SQLITE_CONSTRAINT: zVal = "SQLITE_CONSTRAINT"; break;
|
||||||
|
case SQLITE_MISMATCH: zVal = "SQLITE_MISMATCH"; break;
|
||||||
|
case SQLITE_MISUSE: zVal = "SQLITE_MISUSE"; break;
|
||||||
|
case SQLITE_NOLFS: zVal = "SQLITE_NOLFS"; break;
|
||||||
case SQLITE_IOERR_READ: zVal = "SQLITE_IOERR_READ"; break;
|
case SQLITE_IOERR_READ: zVal = "SQLITE_IOERR_READ"; break;
|
||||||
case SQLITE_IOERR_SHORT_READ: zVal = "SQLITE_IOERR_SHORT_READ"; break;
|
case SQLITE_IOERR_SHORT_READ: zVal = "SQLITE_IOERR_SHORT_READ"; break;
|
||||||
case SQLITE_IOERR_WRITE: zVal = "SQLITE_IOERR_WRITE"; break;
|
case SQLITE_IOERR_WRITE: zVal = "SQLITE_IOERR_WRITE"; break;
|
||||||
@ -266,11 +264,30 @@ static void vfstrace_print_errcode(
|
|||||||
case SQLITE_LOCKED_SHAREDCACHE: zVal = "SQLITE_LOCKED_SHAREDCACHE"; break;
|
case SQLITE_LOCKED_SHAREDCACHE: zVal = "SQLITE_LOCKED_SHAREDCACHE"; break;
|
||||||
case SQLITE_BUSY_RECOVERY: zVal = "SQLITE_BUSY_RECOVERY"; break;
|
case SQLITE_BUSY_RECOVERY: zVal = "SQLITE_BUSY_RECOVERY"; break;
|
||||||
case SQLITE_CANTOPEN_NOTEMPDIR: zVal = "SQLITE_CANTOPEN_NOTEMPDIR"; break;
|
case SQLITE_CANTOPEN_NOTEMPDIR: zVal = "SQLITE_CANTOPEN_NOTEMPDIR"; break;
|
||||||
default: {
|
}
|
||||||
sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", rc);
|
return zVal;
|
||||||
zVal = zBuf;
|
}
|
||||||
break;
|
|
||||||
|
/*
|
||||||
|
** Convert value rc into a string and print it using zFormat. zFormat
|
||||||
|
** should have exactly one %s
|
||||||
|
*/
|
||||||
|
static void vfstrace_print_errcode(
|
||||||
|
vfstrace_info *pInfo,
|
||||||
|
const char *zFormat,
|
||||||
|
int rc
|
||||||
|
){
|
||||||
|
const char *zVal;
|
||||||
|
char zBuf[50];
|
||||||
|
zVal = vfstrace_errcode_name(rc);
|
||||||
|
if( zVal==0 ){
|
||||||
|
zVal = vfstrace_errcode_name(rc&0xff);
|
||||||
|
if( zVal ){
|
||||||
|
sqlite3_snprintf(sizeof(zBuf), zBuf, "%s | 0x%x", zVal, rc&0xffff00);
|
||||||
|
}else{
|
||||||
|
sqlite3_snprintf(sizeof(zBuf), zBuf, "%d (0x%x)", rc, rc);
|
||||||
}
|
}
|
||||||
|
zVal = zBuf;
|
||||||
}
|
}
|
||||||
vfstrace_printf(pInfo, zFormat, zVal);
|
vfstrace_printf(pInfo, zFormat, zVal);
|
||||||
}
|
}
|
||||||
@ -457,12 +474,14 @@ static int vfstraceFileControl(sqlite3_file *pFile, int op, void *pArg){
|
|||||||
vfstrace_info *pInfo = p->pInfo;
|
vfstrace_info *pInfo = p->pInfo;
|
||||||
int rc;
|
int rc;
|
||||||
char zBuf[100];
|
char zBuf[100];
|
||||||
|
char zBuf2[100];
|
||||||
char *zOp;
|
char *zOp;
|
||||||
|
char *zRVal = 0;
|
||||||
switch( op ){
|
switch( op ){
|
||||||
case SQLITE_FCNTL_LOCKSTATE: zOp = "LOCKSTATE"; break;
|
case SQLITE_FCNTL_LOCKSTATE: zOp = "LOCKSTATE"; break;
|
||||||
case SQLITE_GET_LOCKPROXYFILE: zOp = "GET_LOCKPROXYFILE"; break;
|
case SQLITE_GET_LOCKPROXYFILE: zOp = "GET_LOCKPROXYFILE"; break;
|
||||||
case SQLITE_SET_LOCKPROXYFILE: zOp = "SET_LOCKPROXYFILE"; break;
|
case SQLITE_SET_LOCKPROXYFILE: zOp = "SET_LOCKPROXYFILE"; break;
|
||||||
case SQLITE_LAST_ERRNO: zOp = "LAST_ERRNO"; break;
|
case SQLITE_LAST_ERRNO: zOp = "LAST_ERRNO"; break;
|
||||||
case SQLITE_FCNTL_SIZE_HINT: {
|
case SQLITE_FCNTL_SIZE_HINT: {
|
||||||
sqlite3_snprintf(sizeof(zBuf), zBuf, "SIZE_HINT,%lld",
|
sqlite3_snprintf(sizeof(zBuf), zBuf, "SIZE_HINT,%lld",
|
||||||
*(sqlite3_int64*)pArg);
|
*(sqlite3_int64*)pArg);
|
||||||
@ -474,20 +493,62 @@ static int vfstraceFileControl(sqlite3_file *pFile, int op, void *pArg){
|
|||||||
zOp = zBuf;
|
zOp = zBuf;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SQLITE_FCNTL_FILE_POINTER: zOp = "FILE_POINTER"; break;
|
case SQLITE_FCNTL_FILE_POINTER: zOp = "FILE_POINTER"; break;
|
||||||
case SQLITE_FCNTL_SYNC_OMITTED: zOp = "SYNC_OMITTED"; break;
|
case SQLITE_FCNTL_WIN32_AV_RETRY: zOp = "WIN32_AV_RETRY"; break;
|
||||||
case SQLITE_FCNTL_WIN32_AV_RETRY: zOp = "WIN32_AV_RETRY"; break;
|
case SQLITE_FCNTL_PERSIST_WAL: {
|
||||||
case SQLITE_FCNTL_PERSIST_WAL: zOp = "PERSIST_WAL"; break;
|
sqlite3_snprintf(sizeof(zBuf), zBuf, "PERSIST_WAL,%d", *(int*)pArg);
|
||||||
case SQLITE_FCNTL_OVERWRITE: zOp = "OVERWRITE"; break;
|
zOp = zBuf;
|
||||||
case SQLITE_FCNTL_VFSNAME: zOp = "VFSNAME"; break;
|
break;
|
||||||
case SQLITE_FCNTL_TEMPFILENAME: zOp = "TEMPFILENAME"; break;
|
}
|
||||||
case 0xca093fa0: zOp = "DB_UNCHANGED"; break;
|
case SQLITE_FCNTL_OVERWRITE: zOp = "OVERWRITE"; break;
|
||||||
|
case SQLITE_FCNTL_VFSNAME: zOp = "VFSNAME"; break;
|
||||||
|
case SQLITE_FCNTL_POWERSAFE_OVERWRITE: zOp = "POWERSAFE_OVERWRITE"; break;
|
||||||
case SQLITE_FCNTL_PRAGMA: {
|
case SQLITE_FCNTL_PRAGMA: {
|
||||||
const char *const* a = (const char*const*)pArg;
|
const char *const* a = (const char*const*)pArg;
|
||||||
sqlite3_snprintf(sizeof(zBuf), zBuf, "PRAGMA,[%s,%s]",a[1],a[2]);
|
sqlite3_snprintf(sizeof(zBuf), zBuf, "PRAGMA,[%s,%s]",a[1],a[2]);
|
||||||
zOp = zBuf;
|
zOp = zBuf;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case SQLITE_FCNTL_BUSYHANDLER: zOp = "BUSYHANDLER"; break;
|
||||||
|
case SQLITE_FCNTL_TEMPFILENAME: zOp = "TEMPFILENAME"; break;
|
||||||
|
case SQLITE_FCNTL_MMAP_SIZE: {
|
||||||
|
sqlite3_int64 iMMap = *(sqlite3_int64*)pArg;
|
||||||
|
sqlite3_snprintf(sizeof(zBuf), zBuf, "MMAP_SIZE,%lld",iMMap);
|
||||||
|
zOp = zBuf;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SQLITE_FCNTL_TRACE: zOp = "TRACE"; break;
|
||||||
|
case SQLITE_FCNTL_HAS_MOVED: zOp = "HAS_MOVED"; break;
|
||||||
|
case SQLITE_FCNTL_SYNC: zOp = "SYNC"; break;
|
||||||
|
case SQLITE_FCNTL_COMMIT_PHASETWO: zOp = "COMMIT_PHASETWO"; break;
|
||||||
|
case SQLITE_FCNTL_WIN32_SET_HANDLE: zOp = "WIN32_SET_HANDLE"; break;
|
||||||
|
case SQLITE_FCNTL_WAL_BLOCK: zOp = "WAL_BLOCK"; break;
|
||||||
|
case SQLITE_FCNTL_ZIPVFS: zOp = "ZIPVFS"; break;
|
||||||
|
case SQLITE_FCNTL_RBU: zOp = "RBU"; break;
|
||||||
|
case SQLITE_FCNTL_VFS_POINTER: zOp = "VFS_POINTER"; break;
|
||||||
|
case SQLITE_FCNTL_JOURNAL_POINTER: zOp = "JOURNAL_POINTER"; break;
|
||||||
|
case SQLITE_FCNTL_WIN32_GET_HANDLE: zOp = "WIN32_GET_HANDLE"; break;
|
||||||
|
case SQLITE_FCNTL_PDB: zOp = "PDB"; break;
|
||||||
|
case SQLITE_FCNTL_BEGIN_ATOMIC_WRITE: zOp = "BEGIN_ATOMIC_WRITE"; break;
|
||||||
|
case SQLITE_FCNTL_COMMIT_ATOMIC_WRITE: zOp = "COMMIT_ATOMIC_WRITE"; break;
|
||||||
|
case SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE: {
|
||||||
|
zOp = "ROLLBACK_ATOMIC_WRITE";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SQLITE_FCNTL_LOCK_TIMEOUT: {
|
||||||
|
sqlite3_snprintf(sizeof(zBuf), zBuf, "LOCK_TIMEOUT,%d", *(int*)pArg);
|
||||||
|
zOp = zBuf;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SQLITE_FCNTL_DATA_VERSION: zOp = "DATA_VERSION"; break;
|
||||||
|
case SQLITE_FCNTL_SIZE_LIMIT: zOp = "SIZE_LIMIT"; break;
|
||||||
|
case SQLITE_FCNTL_CKPT_DONE: zOp = "CKPT_DONE"; break;
|
||||||
|
case SQLITE_FCNTL_RESERVE_BYTES: zOp = "RESERVED_BYTES"; break;
|
||||||
|
case SQLITE_FCNTL_CKPT_START: zOp = "CKPT_START"; break;
|
||||||
|
case SQLITE_FCNTL_EXTERNAL_READER: zOp = "EXTERNAL_READER"; break;
|
||||||
|
case SQLITE_FCNTL_CKSM_FILE: zOp = "CKSM_FILE"; break;
|
||||||
|
case SQLITE_FCNTL_RESET_CACHE: zOp = "RESET_CACHE"; break;
|
||||||
|
case 0xca093fa0: zOp = "DB_UNCHANGED"; break;
|
||||||
default: {
|
default: {
|
||||||
sqlite3_snprintf(sizeof zBuf, zBuf, "%d", op);
|
sqlite3_snprintf(sizeof zBuf, zBuf, "%d", op);
|
||||||
zOp = zBuf;
|
zOp = zBuf;
|
||||||
@ -497,15 +558,37 @@ static int vfstraceFileControl(sqlite3_file *pFile, int op, void *pArg){
|
|||||||
vfstrace_printf(pInfo, "%s.xFileControl(%s,%s)",
|
vfstrace_printf(pInfo, "%s.xFileControl(%s,%s)",
|
||||||
pInfo->zVfsName, p->zFName, zOp);
|
pInfo->zVfsName, p->zFName, zOp);
|
||||||
rc = p->pReal->pMethods->xFileControl(p->pReal, op, pArg);
|
rc = p->pReal->pMethods->xFileControl(p->pReal, op, pArg);
|
||||||
vfstrace_print_errcode(pInfo, " -> %s\n", rc);
|
if( rc==SQLITE_OK ){
|
||||||
if( op==SQLITE_FCNTL_VFSNAME && rc==SQLITE_OK ){
|
switch( op ){
|
||||||
*(char**)pArg = sqlite3_mprintf("vfstrace.%s/%z",
|
case SQLITE_FCNTL_VFSNAME: {
|
||||||
|
*(char**)pArg = sqlite3_mprintf("vfstrace.%s/%z",
|
||||||
pInfo->zVfsName, *(char**)pArg);
|
pInfo->zVfsName, *(char**)pArg);
|
||||||
|
zRVal = *(char**)pArg;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SQLITE_FCNTL_MMAP_SIZE: {
|
||||||
|
sqlite3_snprintf(sizeof(zBuf2), zBuf2, "%lld", *(sqlite3_int64*)pArg);
|
||||||
|
zRVal = zBuf2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SQLITE_FCNTL_HAS_MOVED:
|
||||||
|
case SQLITE_FCNTL_PERSIST_WAL: {
|
||||||
|
sqlite3_snprintf(sizeof(zBuf2), zBuf2, "%d", *(int*)pArg);
|
||||||
|
zRVal = zBuf2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SQLITE_FCNTL_PRAGMA:
|
||||||
|
case SQLITE_FCNTL_TEMPFILENAME: {
|
||||||
|
zRVal = *(char**)pArg;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if( (op==SQLITE_FCNTL_PRAGMA || op==SQLITE_FCNTL_TEMPFILENAME)
|
if( zRVal ){
|
||||||
&& rc==SQLITE_OK && *(char**)pArg ){
|
vfstrace_print_errcode(pInfo, " -> %s", rc);
|
||||||
vfstrace_printf(pInfo, "%s.xFileControl(%s,%s) returns %s",
|
vfstrace_printf(pInfo, ", %s\n", zRVal);
|
||||||
pInfo->zVfsName, p->zFName, zOp, *(char**)pArg);
|
}else{
|
||||||
|
vfstrace_print_errcode(pInfo, " -> %s\n", rc);
|
||||||
}
|
}
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@ -840,14 +923,14 @@ int vfstrace_register(
|
|||||||
sqlite3_vfs *pNew;
|
sqlite3_vfs *pNew;
|
||||||
sqlite3_vfs *pRoot;
|
sqlite3_vfs *pRoot;
|
||||||
vfstrace_info *pInfo;
|
vfstrace_info *pInfo;
|
||||||
int nName;
|
size_t nName;
|
||||||
int nByte;
|
size_t nByte;
|
||||||
|
|
||||||
pRoot = sqlite3_vfs_find(zOldVfsName);
|
pRoot = sqlite3_vfs_find(zOldVfsName);
|
||||||
if( pRoot==0 ) return SQLITE_NOTFOUND;
|
if( pRoot==0 ) return SQLITE_NOTFOUND;
|
||||||
nName = strlen(zTraceName);
|
nName = strlen(zTraceName);
|
||||||
nByte = sizeof(*pNew) + sizeof(*pInfo) + nName + 1;
|
nByte = sizeof(*pNew) + sizeof(*pInfo) + nName + 1;
|
||||||
pNew = sqlite3_malloc( nByte );
|
pNew = sqlite3_malloc64( nByte );
|
||||||
if( pNew==0 ) return SQLITE_NOMEM;
|
if( pNew==0 ) return SQLITE_NOMEM;
|
||||||
memset(pNew, 0, nByte);
|
memset(pNew, 0, nByte);
|
||||||
pInfo = (vfstrace_info*)&pNew[1];
|
pInfo = (vfstrace_info*)&pNew[1];
|
||||||
@ -890,3 +973,15 @@ int vfstrace_register(
|
|||||||
pInfo->zVfsName, pRoot->zName);
|
pInfo->zVfsName, pRoot->zName);
|
||||||
return sqlite3_vfs_register(pNew, makeDefault);
|
return sqlite3_vfs_register(pNew, makeDefault);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Look for the named VFS. If it is a TRACEVFS, then unregister it
|
||||||
|
** and delete it.
|
||||||
|
*/
|
||||||
|
void vfstrace_unregister(const char *zTraceName){
|
||||||
|
sqlite3_vfs *pVfs = sqlite3_vfs_find(zTraceName);
|
||||||
|
if( pVfs==0 ) return;
|
||||||
|
if( pVfs->xOpen!=vfstraceOpen ) return;
|
||||||
|
sqlite3_vfs_unregister(pVfs);
|
||||||
|
sqlite3_free(pVfs);
|
||||||
|
}
|
1
main.mk
1
main.mk
@ -771,6 +771,7 @@ SHELL_DEP = \
|
|||||||
$(TOP)/ext/misc/shathree.c \
|
$(TOP)/ext/misc/shathree.c \
|
||||||
$(TOP)/ext/misc/sqlar.c \
|
$(TOP)/ext/misc/sqlar.c \
|
||||||
$(TOP)/ext/misc/uint.c \
|
$(TOP)/ext/misc/uint.c \
|
||||||
|
$(TOP)/ext/misc/vfstrace.c \
|
||||||
$(TOP)/ext/misc/zipfile.c \
|
$(TOP)/ext/misc/zipfile.c \
|
||||||
$(TOP)/ext/recover/dbdata.c \
|
$(TOP)/ext/recover/dbdata.c \
|
||||||
$(TOP)/ext/recover/sqlite3recover.c \
|
$(TOP)/ext/recover/sqlite3recover.c \
|
||||||
|
27
manifest
27
manifest
@ -1,11 +1,11 @@
|
|||||||
C Fix\sharmless\scompiler\swarnings\sin\sFTS5.
|
C Move\sthe\svfstrace\sextension\sout\sof\ssrc/\sand\sinto\sext/misc/.\s\sMake\sit\sa\nstandard\spart\sof\sthe\sCLI.\s\sImprove\sits\soutput.\s\sAlso\sfix\ssome\sunrelated\ncomment\stypos.
|
||||||
D 2024-09-09T15:12:21.524
|
D 2024-09-09T15:39:40.442
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
F Makefile.in c41539ec7e8e69091e74c7d9e011115ae5e81d1f53829e640d299f3a754f94a4
|
F Makefile.in 7753650b4204e3ccd55a4e6a0d73a5a01f737dcefb099d901ce1de5df9d0b82c
|
||||||
F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6
|
F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6
|
||||||
F Makefile.msc e72a4653ea8f48efd14c7dac1e7de308a1f3cc91f905f15cbcacc680301c8f03
|
F Makefile.msc 6e8925dca6dc8c3e9cce042bbf347d20164653e63aeafcf6f6a28e27cf976d8b
|
||||||
F README.md c3c0f19532ce28f6297a71870f3c7b424729f0e6d9ab889616d3587dd2332159
|
F README.md c3c0f19532ce28f6297a71870f3c7b424729f0e6d9ab889616d3587dd2332159
|
||||||
F VERSION 0db40f92c04378404eb45bff93e9e42c148c7e54fd3da99469ed21e22411f5a6
|
F VERSION 0db40f92c04378404eb45bff93e9e42c148c7e54fd3da99469ed21e22411f5a6
|
||||||
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
|
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
|
||||||
@ -435,6 +435,7 @@ F ext/misc/urifuncs.c f71360d14fa9e7626b563f1f781c6148109462741c5235ac63ae0f8917
|
|||||||
F ext/misc/uuid.c 5bb2264c1b64d163efa46509544fd7500cb8769cb7c16dd52052da8d961505cf
|
F ext/misc/uuid.c 5bb2264c1b64d163efa46509544fd7500cb8769cb7c16dd52052da8d961505cf
|
||||||
F ext/misc/vfslog.c 3932ab932eeb2601dbc4447cb14d445aaa9fbe43b863ef5f014401c3420afd20
|
F ext/misc/vfslog.c 3932ab932eeb2601dbc4447cb14d445aaa9fbe43b863ef5f014401c3420afd20
|
||||||
F ext/misc/vfsstat.c a85df08654743922a19410d7b1e3111de41bb7cd07d20dd16eda4e2b808d269d
|
F ext/misc/vfsstat.c a85df08654743922a19410d7b1e3111de41bb7cd07d20dd16eda4e2b808d269d
|
||||||
|
F ext/misc/vfstrace.c 03f90dd465968e01f5d1d3e79c36cbc53a5bfe1bd55d239435ce94df19d5b0ac w src/test_vfstrace.c
|
||||||
F ext/misc/vtablog.c 1100250ce8782db37c833e3a9a5c9a3ecf1af5e15b8325572b82e6e0a138ffb5
|
F ext/misc/vtablog.c 1100250ce8782db37c833e3a9a5c9a3ecf1af5e15b8325572b82e6e0a138ffb5
|
||||||
F ext/misc/vtshim.c 1976e6dd68dd0d64508c91a6dfab8e75f8aaf6cd
|
F ext/misc/vtshim.c 1976e6dd68dd0d64508c91a6dfab8e75f8aaf6cd
|
||||||
F ext/misc/wholenumber.c 0fa0c082676b7868bf2fa918e911133f2b349bcdceabd1198bba5f65b4fc0668
|
F ext/misc/wholenumber.c 0fa0c082676b7868bf2fa918e911133f2b349bcdceabd1198bba5f65b4fc0668
|
||||||
@ -686,7 +687,7 @@ F ext/wasm/wasmfs.make 8a4955882aaa0783b3f60a9484a1f0f3d8b6f775c0fcd17c082f31966
|
|||||||
F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
|
F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
|
||||||
F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
|
F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
|
||||||
F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0
|
F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0
|
||||||
F main.mk 5a2e7d4a852c058373efc78407816de41595d06975148c766092b3cf0fea4298
|
F main.mk 391342c3c0907f57bbb9ab60ce4b3cfe1ea61161996b449033984673d18980fd
|
||||||
F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271
|
F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271
|
||||||
F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504
|
F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504
|
||||||
F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421
|
F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421
|
||||||
@ -767,7 +768,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
|
|||||||
F src/resolve.c 2c127880c0634962837f16f2f48a295e514357af959330cc038de73015d5b5e8
|
F src/resolve.c 2c127880c0634962837f16f2f48a295e514357af959330cc038de73015d5b5e8
|
||||||
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
|
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
|
||||||
F src/select.c 4b14337a2742f0c0beeba490e9a05507e9b4b12184b9cd12773501d08d48e3fe
|
F src/select.c 4b14337a2742f0c0beeba490e9a05507e9b4b12184b9cd12773501d08d48e3fe
|
||||||
F src/shell.c.in 40de636c1d90fb8a9ca7f49dc8f50d930f1b60736e73aca5eb37c4c7d0e47f9d
|
F src/shell.c.in 470db843788d74234cc1e6873ac51c0ae6529994a52146fefe2e77c0754cbf96
|
||||||
F src/sqlite.h.in 77f55bd1978a04a14db211732f0a609077cf60ba4ccf9baf39988f508945419c
|
F src/sqlite.h.in 77f55bd1978a04a14db211732f0a609077cf60ba4ccf9baf39988f508945419c
|
||||||
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
||||||
F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54
|
F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54
|
||||||
@ -823,7 +824,6 @@ F src/test_tclvar.c ae873248a0188459b1c16ca7cc431265dacce524399e8b46725c2b3b7e04
|
|||||||
F src/test_thread.c d7a8bcea7445f37cc2a1f7f81dd6059634f45e0c61bfe80182b02872fb0328bb
|
F src/test_thread.c d7a8bcea7445f37cc2a1f7f81dd6059634f45e0c61bfe80182b02872fb0328bb
|
||||||
F src/test_vdbecov.c 5c426d9cd2b351f5f9ceb30cabf8c64a63bfcad644c507e0bd9ce2f6ae1a3bf3
|
F src/test_vdbecov.c 5c426d9cd2b351f5f9ceb30cabf8c64a63bfcad644c507e0bd9ce2f6ae1a3bf3
|
||||||
F src/test_vfs.c f298475e468c7e14945b20af885917181090c265aa3c4ade897849c9fbd396f2
|
F src/test_vfs.c f298475e468c7e14945b20af885917181090c265aa3c4ade897849c9fbd396f2
|
||||||
F src/test_vfstrace.c a2ea82df2ed8927e9eba49bdba1aa1aeb1dcb13dbf6558cff036da813031de9a
|
|
||||||
F src/test_windirent.c a895e2c068a06644eef91a7f0a32182445a893b9a0f33d0cdb4283dca2486ac1
|
F src/test_windirent.c a895e2c068a06644eef91a7f0a32182445a893b9a0f33d0cdb4283dca2486ac1
|
||||||
F src/test_windirent.h da2e5b73c32d09905fbdd00f27cd802212a32a58ead882736fe4f5eb775ebc50
|
F src/test_windirent.h da2e5b73c32d09905fbdd00f27cd802212a32a58ead882736fe4f5eb775ebc50
|
||||||
F src/test_window.c 6d80e11fba89a1796525e6f0048ff0c7789aa2c6b0b11c80827dc1437bd8ea72
|
F src/test_window.c 6d80e11fba89a1796525e6f0048ff0c7789aa2c6b0b11c80827dc1437bd8ea72
|
||||||
@ -849,7 +849,7 @@ F src/vdbetrace.c fe0bc29ebd4e02c8bc5c1945f1d2e6be5927ec12c06d89b03ef2a4def34bf8
|
|||||||
F src/vdbevtab.c fc46b9cbd759dc013f0b3724549cc0d71379183c667df3a5988f7e2f1bd485f3
|
F src/vdbevtab.c fc46b9cbd759dc013f0b3724549cc0d71379183c667df3a5988f7e2f1bd485f3
|
||||||
F src/vtab.c 5fb499d20494b7eecaadb7584634af9afcb374cb0524912b475fcb1712458a1b
|
F src/vtab.c 5fb499d20494b7eecaadb7584634af9afcb374cb0524912b475fcb1712458a1b
|
||||||
F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
||||||
F src/wal.c 887fc4ca3f020ebb2e376f222069570834ac63bf50111ef0cbf3ae417048ed89
|
F src/wal.c ef68130ba330ee18c1cb22da36a881c82e3a3b109badbdc6a9b9acaf788a6688
|
||||||
F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452
|
F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452
|
||||||
F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
|
F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
|
||||||
F src/where.c 7fb55836eb7fd07f0a0d8400c50619fc02cda1f46a617cfb003c2990f040193d
|
F src/where.c 7fb55836eb7fd07f0a0d8400c50619fc02cda1f46a617cfb003c2990f040193d
|
||||||
@ -2102,7 +2102,7 @@ F tool/GetFile.cs 47852aa0d806fe47ed1ac5138bdce7f000fe87aaa7f28107d0cb1e26682aeb
|
|||||||
F tool/GetTclKit.bat d84033c6a93dfe735d247f48ba00292a1cc284dcf69963e5e672444e04534bbf
|
F tool/GetTclKit.bat d84033c6a93dfe735d247f48ba00292a1cc284dcf69963e5e672444e04534bbf
|
||||||
F tool/Replace.cs 02c67258801c2fb5f63231e0ac0f220b4b36ba91
|
F tool/Replace.cs 02c67258801c2fb5f63231e0ac0f220b4b36ba91
|
||||||
F tool/build-all-msvc.bat c817b716e0edeecaf265a6775b63e5f45c34a6544f1d4114a222701ed5ac79ab x
|
F tool/build-all-msvc.bat c817b716e0edeecaf265a6775b63e5f45c34a6544f1d4114a222701ed5ac79ab x
|
||||||
F tool/build-shell.sh f193b5e3eb4afcb4abbf96bf1475be6cfb74763ee2e50c82bc7ca105e8a136c5
|
F tool/build-shell.sh 369c4b171cc877ad974fef691e4da782b4c1e99fe8f4361316c735f64d49280f
|
||||||
F tool/buildtclext.tcl b64d250517b148e644d26fcbc097851867a0df52cd4bafe9bcd94b8421e1428a
|
F tool/buildtclext.tcl b64d250517b148e644d26fcbc097851867a0df52cd4bafe9bcd94b8421e1428a
|
||||||
F tool/cg_anno.tcl c1f875f5a4c9caca3d59937b16aff716f8b1883935f1b4c9ae23124705bc8099 x
|
F tool/cg_anno.tcl c1f875f5a4c9caca3d59937b16aff716f8b1883935f1b4c9ae23124705bc8099 x
|
||||||
F tool/checkSpacing.c 810e51703529a204fc4e1eb060e9ab663e3c06d2
|
F tool/checkSpacing.c 810e51703529a204fc4e1eb060e9ab663e3c06d2
|
||||||
@ -2152,7 +2152,7 @@ F tool/offsets.c 8ed2b344d33f06e71366a9b93ccedaa38c096cc1dbd4c3c26ad08c611528584
|
|||||||
F tool/omittest-msvc.tcl d6b8f501ac1d7798c4126065030f89812379012cad98a1735d6d7221492abc08
|
F tool/omittest-msvc.tcl d6b8f501ac1d7798c4126065030f89812379012cad98a1735d6d7221492abc08
|
||||||
F tool/omittest.tcl 5ca5e4e01716d5f35b48b00fd351d929f01fbb98169a5a3cd00baf3d2e2019a9
|
F tool/omittest.tcl 5ca5e4e01716d5f35b48b00fd351d929f01fbb98169a5a3cd00baf3d2e2019a9
|
||||||
F tool/opcodesum.tcl 740ed206ba8c5040018988129abbf3089a0ccf4a
|
F tool/opcodesum.tcl 740ed206ba8c5040018988129abbf3089a0ccf4a
|
||||||
F tool/pagesig.c ff0ca355fd3c2398e933da5e22439bbff89b803b
|
F tool/pagesig.c f98909b4168d9cac11a2de7f031adea0e2f3131faa7515a72807c03ec58eafeb
|
||||||
F tool/replace.tcl 511c61acfe563dfb58675efb4628bb158a13d48ff8322123ac447e9d25a82d9a
|
F tool/replace.tcl 511c61acfe563dfb58675efb4628bb158a13d48ff8322123ac447e9d25a82d9a
|
||||||
F tool/restore_jrnl.tcl 1079ecba47cc82fa82115b81c1f68097ab1f956f357ee8da5fc4b2589af6bd98
|
F tool/restore_jrnl.tcl 1079ecba47cc82fa82115b81c1f68097ab1f956f357ee8da5fc4b2589af6bd98
|
||||||
F tool/rollback-test.c 9fc98427d1e23e84429d7e6d07d9094fbdec65a5
|
F tool/rollback-test.c 9fc98427d1e23e84429d7e6d07d9094fbdec65a5
|
||||||
@ -2212,8 +2212,9 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 70e42f941c0778a04b82655409c7caf4c1039589f7e43a8ec1e736ea8f931b26
|
P aa75e701de61fe63ec15c35d70e53e950ff73b0dcb0d871dd8721412f3af297a e8f2d6313075c92fdeebcdfd8b50f43e9d45225890b2ef6b77148a766a42e940
|
||||||
R 69a344fb56fcce855b538796f02d3cc2
|
R d410fcc13042586e54655831c4a948f2
|
||||||
|
T +closed e8f2d6313075c92fdeebcdfd8b50f43e9d45225890b2ef6b77148a766a42e940
|
||||||
U drh
|
U drh
|
||||||
Z 3b9693691a7ff11217f41ab494c023d1
|
Z 1f0ae8b76c17f7c9bad8f3f1287c0801
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
aa75e701de61fe63ec15c35d70e53e950ff73b0dcb0d871dd8721412f3af297a
|
123cb1f579daec3ed092fe9dd1bc0d3250f2b56d4cda1efa92af139029e112e2
|
||||||
|
@ -1236,6 +1236,7 @@ INCLUDE ../ext/expert/sqlite3expert.c
|
|||||||
INCLUDE ../ext/intck/sqlite3intck.h
|
INCLUDE ../ext/intck/sqlite3intck.h
|
||||||
INCLUDE ../ext/intck/sqlite3intck.c
|
INCLUDE ../ext/intck/sqlite3intck.c
|
||||||
INCLUDE ../ext/misc/stmtrand.c
|
INCLUDE ../ext/misc/stmtrand.c
|
||||||
|
INCLUDE ../ext/misc/vfstrace.c
|
||||||
|
|
||||||
#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
|
#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
|
||||||
#define SQLITE_SHELL_HAVE_RECOVER 1
|
#define SQLITE_SHELL_HAVE_RECOVER 1
|
||||||
@ -12254,9 +12255,7 @@ static const char zOptions[] =
|
|||||||
" -unsafe-testing allow unsafe commands and modes for testing\n"
|
" -unsafe-testing allow unsafe commands and modes for testing\n"
|
||||||
" -version show SQLite version\n"
|
" -version show SQLite version\n"
|
||||||
" -vfs NAME use NAME as the default VFS\n"
|
" -vfs NAME use NAME as the default VFS\n"
|
||||||
#ifdef SQLITE_ENABLE_VFSTRACE
|
|
||||||
" -vfstrace enable tracing of all VFS calls\n"
|
" -vfstrace enable tracing of all VFS calls\n"
|
||||||
#endif
|
|
||||||
#ifdef SQLITE_HAVE_ZLIB
|
#ifdef SQLITE_HAVE_ZLIB
|
||||||
" -zip open the file as a ZIP Archive\n"
|
" -zip open the file as a ZIP Archive\n"
|
||||||
#endif
|
#endif
|
||||||
@ -12382,6 +12381,7 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){
|
|||||||
int readStdin = 1;
|
int readStdin = 1;
|
||||||
int nCmd = 0;
|
int nCmd = 0;
|
||||||
int nOptsEnd = argc;
|
int nOptsEnd = argc;
|
||||||
|
int bEnableVfstrace = 0;
|
||||||
char **azCmd = 0;
|
char **azCmd = 0;
|
||||||
const char *zVfs = 0; /* Value of -vfs command-line option */
|
const char *zVfs = 0; /* Value of -vfs command-line option */
|
||||||
#if !SQLITE_SHELL_IS_UTF8
|
#if !SQLITE_SHELL_IS_UTF8
|
||||||
@ -12576,17 +12576,9 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){
|
|||||||
case 2: sqlite3_config(SQLITE_CONFIG_MULTITHREAD); break;
|
case 2: sqlite3_config(SQLITE_CONFIG_MULTITHREAD); break;
|
||||||
default: sqlite3_config(SQLITE_CONFIG_SERIALIZED); break;
|
default: sqlite3_config(SQLITE_CONFIG_SERIALIZED); break;
|
||||||
}
|
}
|
||||||
#ifdef SQLITE_ENABLE_VFSTRACE
|
|
||||||
}else if( cli_strcmp(z,"-vfstrace")==0 ){
|
}else if( cli_strcmp(z,"-vfstrace")==0 ){
|
||||||
extern int vfstrace_register(
|
|
||||||
const char *zTraceName,
|
|
||||||
const char *zOldVfsName,
|
|
||||||
int (*xOut)(const char*,void*),
|
|
||||||
void *pOutArg,
|
|
||||||
int makeDefault
|
|
||||||
);
|
|
||||||
vfstrace_register("trace",0,(int(*)(const char*,void*))fputs,stderr,1);
|
vfstrace_register("trace",0,(int(*)(const char*,void*))fputs,stderr,1);
|
||||||
#endif
|
bEnableVfstrace = 1;
|
||||||
#ifdef SQLITE_ENABLE_MULTIPLEX
|
#ifdef SQLITE_ENABLE_MULTIPLEX
|
||||||
}else if( cli_strcmp(z,"-multiplex")==0 ){
|
}else if( cli_strcmp(z,"-multiplex")==0 ){
|
||||||
extern int sqlite3_multiplex_initialize(const char*,int);
|
extern int sqlite3_multiplex_initialize(const char*,int);
|
||||||
@ -12642,7 +12634,7 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifndef SQLITE_SHELL_FIDDLE
|
#ifndef SQLITE_SHELL_FIDDLE
|
||||||
verify_uninitialized();
|
if( !bEnableVfstrace ) verify_uninitialized();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -12831,10 +12823,8 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){
|
|||||||
#endif
|
#endif
|
||||||
}else if( cli_strcmp(z,"-vfs")==0 ){
|
}else if( cli_strcmp(z,"-vfs")==0 ){
|
||||||
i++;
|
i++;
|
||||||
#ifdef SQLITE_ENABLE_VFSTRACE
|
|
||||||
}else if( cli_strcmp(z,"-vfstrace")==0 ){
|
}else if( cli_strcmp(z,"-vfstrace")==0 ){
|
||||||
i++;
|
i++;
|
||||||
#endif
|
|
||||||
#ifdef SQLITE_ENABLE_MULTIPLEX
|
#ifdef SQLITE_ENABLE_MULTIPLEX
|
||||||
}else if( cli_strcmp(z,"-multiplex")==0 ){
|
}else if( cli_strcmp(z,"-multiplex")==0 ){
|
||||||
i++;
|
i++;
|
||||||
@ -13002,6 +12992,9 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){
|
|||||||
/* Clear the global data structure so that valgrind will detect memory
|
/* Clear the global data structure so that valgrind will detect memory
|
||||||
** leaks */
|
** leaks */
|
||||||
memset(&data, 0, sizeof(data));
|
memset(&data, 0, sizeof(data));
|
||||||
|
if( bEnableVfstrace ){
|
||||||
|
vfstrace_unregister("trace");
|
||||||
|
}
|
||||||
#ifdef SQLITE_DEBUG
|
#ifdef SQLITE_DEBUG
|
||||||
if( sqlite3_memory_used()>mem_main_enter ){
|
if( sqlite3_memory_used()>mem_main_enter ){
|
||||||
eputf("Memory leaked: %u bytes\n",
|
eputf("Memory leaked: %u bytes\n",
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
** 28: Checksum-2 (second part of checksum for first 24 bytes of header).
|
** 28: Checksum-2 (second part of checksum for first 24 bytes of header).
|
||||||
**
|
**
|
||||||
** Immediately following the wal-header are zero or more frames. Each
|
** Immediately following the wal-header are zero or more frames. Each
|
||||||
** frame consists of a 24-byte frame-header followed by a <page-size> bytes
|
** frame consists of a 24-byte frame-header followed by <page-size> bytes
|
||||||
** of page data. The frame-header is six big-endian 32-bit unsigned
|
** of page data. The frame-header is six big-endian 32-bit unsigned
|
||||||
** integer values, as follows:
|
** integer values, as follows:
|
||||||
**
|
**
|
||||||
|
@ -17,5 +17,5 @@ gcc -o sqlite3 -g -Os -I. \
|
|||||||
-DSQLITE_ENABLE_RTREE \
|
-DSQLITE_ENABLE_RTREE \
|
||||||
-DHAVE_READLINE \
|
-DHAVE_READLINE \
|
||||||
../sqlite/src/shell.c \
|
../sqlite/src/shell.c \
|
||||||
../sqlite/src/test_vfstrace.c \
|
../sqlite/ext/misc/vfstrace.c \
|
||||||
sqlite3.c -ldl -lreadline -lncurses
|
sqlite3.c -ldl -lreadline -lncurses
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
** the entire block.
|
** the entire block.
|
||||||
**
|
**
|
||||||
** For blocks of more than 16 bytes, the signature is a hex dump of the
|
** For blocks of more than 16 bytes, the signature is a hex dump of the
|
||||||
** first 8 bytes followed by a 64-bit has of the entire block.
|
** first 8 bytes followed by a 64-bit hash of the entire block.
|
||||||
*/
|
*/
|
||||||
static void vlogSignature(unsigned char *p, int n, char *zCksum){
|
static void vlogSignature(unsigned char *p, int n, char *zCksum){
|
||||||
unsigned int s0 = 0, s1 = 0;
|
unsigned int s0 = 0, s1 = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user