/* ** Sync an vfstrace-file. */ static int vfstraceSync(sqlite3_file pFile, int flags) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc; //int i; StringBuilder zBuf = new StringBuilder(100); //char zBuf[100]; zBuf.Append("|0"); // memcpy( zBuf, "|0", 3 ); if ((flags & SQLITE_SYNC_FULL) != 0) { zBuf.Append("|FULL"); } else if ((flags & SQLITE_SYNC_NORMAL) != 0) { zBuf.Append("|NORMAL"); } if ((flags & SQLITE_SYNC_DATAONLY) != 0) { zBuf.Append("|DATAONLY"); } if ((flags & ~(SQLITE_SYNC_FULL | SQLITE_SYNC_DATAONLY)) != 0) { //sqlite3_snprintf(sizeof(zBuf)-i, &zBuf[i], "|0x%x", flags); Debugger.Break();//TODO //zBuf.Append( sqlite3_printf( "|0x%x", flags ) ); } Debugger.Break();//TODO // vfstrace_printf(pInfo, "%s.xSync(%s,%s)", pInfo.zVfsName, p.zFName, // zBuf.ToString().StartsWith(1)); rc = p.pReal.pMethods.xSync(p.pReal, flags); vfstrace_printf(pInfo, " . %d\n", rc); return(rc); }
/* ** Sleep for nMicro microseconds. Return the number of microseconds ** actually slept. */ static int vfstraceSleep(sqlite3_vfs pVfs, int nMicro) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; return(pRoot.xSleep(pRoot, nMicro)); }
static int vfstraceCurrentTimeInt64(sqlite3_vfs pVfs, sqlite_int64 pTimeOut) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; return(pRoot.xCurrentTimeInt64(pRoot, ref pTimeOut)); }
/* ** Populate the buffer pointed to by zBufOut with nByte bytes of ** random data. */ static int vfstraceRandomness(sqlite3_vfs pVfs, int nByte, byte[] zBufOut) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; vfstrace_printf(pInfo, "%s.xRandomness(%d)\n", pInfo.zVfsName, nByte); return(pRoot.xRandomness(pRoot, nByte, zBufOut)); }
static void vfstraceShmBarrier(sqlite3_file pFile) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; vfstrace_printf(pInfo, "%s.xShmBarrier(%s)\n", pInfo.zVfsName, p.zFName); p.pReal.pMethods.xShmBarrier(p.pReal); }
/* ** Return th3 emost recent error code and message */ static int vfstraceGetLastError(sqlite3_vfs pVfs, int iErr, string zErr) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; Debugger.Break(); //return pRoot.xGetLastError(pRoot, iErr, zErr); return(0); }
/* ** Close the dynamic library handle pHandle. */ static void vfstraceDlClose(sqlite3_vfs pVfs, object pHandle) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; vfstrace_printf(pInfo, "%s.xDlOpen()\n", pInfo.zVfsName); Debugger.Break(); // pRoot.xDlClose( pRoot, pHandle ); }
/* ** Populate the buffer zErrMsg (size nByte bytes) with a human readable ** utf-8 string describing the most recent error encountered associated ** with dynamic libraries. */ static void vfstraceDlError(sqlite3_vfs pVfs, int nByte, string zErrMsg) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; vfstrace_printf(pInfo, "%s.xDlError(%d)", pInfo.zVfsName, nByte); pRoot.xDlError(pRoot, nByte, zErrMsg); vfstrace_printf(pInfo, " . \"%s\"", zErrMsg); }
static string vfstraceNextSystemCall(sqlite3_vfs pVfs, string zName) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; Debugger.Break(); //return pRoot.xNextSystemCall(pRoot, zName); return(""); }
/* ** Return a pointer to the symbol zSymbol in the dynamic library pHandle. */ static void vfstraceDlSym(sqlite3_vfs pVfs, object p, string zSym) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; vfstrace_printf(pInfo, "%s.xDlSym(\"%s\")\n", pInfo.zVfsName, zSym); Debugger.Break(); //return pRoot.xDlSym(pRoot, p, zSym); return; }
/* ** Open the dynamic library located at zPath and return a handle. */ static void vfstraceDlOpen(sqlite3_vfs pVfs, string zPath) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; vfstrace_printf(pInfo, "%s.xDlOpen(\"%s\")\n", pInfo.zVfsName, zPath); Debugger.Break();//TODO //return pRoot.xDlOpen(pRoot, zPath); return; }
/* ** Override system calls. */ static int vfstraceSetSystemCall( sqlite3_vfs pVfs, string zName, sqlite3_int64 pFunc //sqlite3_syscall_ptr pFunc ) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; return(pRoot.xSetSystemCall(pRoot, zName, pFunc)); }
/* ** Return the sector-size in bytes for an vfstrace-file. */ static int vfstraceSectorSize(sqlite3_file pFile) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc; vfstrace_printf(pInfo, "%s.xSectorSize(%s)", pInfo.zVfsName, p.zFName); rc = p.pReal.pMethods.xSectorSize(p.pReal); vfstrace_printf(pInfo, " . %d\n", rc); return(rc); }
static int vfstraceShmUnmap(sqlite3_file pFile, int delFlag) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc; vfstrace_printf(pInfo, "%s.xShmUnmap(%s,delFlag=%d)", pInfo.zVfsName, p.zFName, delFlag); rc = p.pReal.pMethods.xShmUnmap(p.pReal, delFlag); vfstrace_print_errcode(pInfo, " . %s\n", rc); return(rc); }
static sqlite3_int64 vfstraceGetSystemCall(//sqlite3_syscall_ptr vfstraceGetSystemCall( sqlite3_vfs pVfs, string zName ) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; Debugger.Break(); //return pRoot.xGetSystemCall(pRoot, zName); return(0); }
/* ** Unlock an vfstrace-file. */ static int vfstraceUnlock(sqlite3_file pFile, int eLock) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc; vfstrace_printf(pInfo, "%s.xUnlock(%s,%s)", pInfo.zVfsName, p.zFName, lockName(eLock)); rc = p.pReal.pMethods.xUnlock(p.pReal, eLock); vfstrace_print_errcode(pInfo, " . %s\n", rc); return(rc); }
/* ** Truncate an vfstrace-file. */ static int vfstraceTruncate(sqlite3_file pFile, sqlite_int64 size) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc = 0; vfstrace_printf(pInfo, "%s.xTruncate(%s,%lld)", pInfo.zVfsName, p.zFName, size); rc = p.pReal.pMethods.xTruncate(p.pReal, size); vfstrace_printf(pInfo, " . %d\n", rc); return(rc); }
/* ** Return the device characteristic flags supported by an vfstrace-file. */ static int vfstraceDeviceCharacteristics(sqlite3_file pFile) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc; vfstrace_printf(pInfo, "%s.xDeviceCharacteristics(%s)", pInfo.zVfsName, p.zFName); rc = p.pReal.pMethods.xDeviceCharacteristics(p.pReal); vfstrace_printf(pInfo, " . 0x%08x\n", rc); return(rc); }
/* ** Delete the file located at zPath. If the dirSync argument is true, ** ensure the file-system modifications are synced to disk before ** returning. */ static int vfstraceDelete(sqlite3_vfs pVfs, string zPath, int dirSync) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; int rc; vfstrace_printf(pInfo, "%s.xDelete(\"%s\",%d)", pInfo.zVfsName, zPath, dirSync); rc = pRoot.xDelete(pRoot, zPath, dirSync); vfstrace_print_errcode(pInfo, " . %s\n", rc); return(rc); }
/* ** Return the current file-size of an vfstrace-file. */ static int vfstraceFileSize(sqlite3_file pFile, sqlite_int64 pSize) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc = 0; vfstrace_printf(pInfo, "%s.xFileSize(%s)", pInfo.zVfsName, p.zFName); Debugger.Break();//TODO //rc = p.pReal.pMethods.xFileSize(p.pReal, pSize); vfstrace_print_errcode(pInfo, " . %s,", rc); vfstrace_printf(pInfo, " size=%lld\n", pSize); return(rc); }
/* ** Check if another file-handle holds a RESERVED lock on an vfstrace-file. */ static int vfstraceCheckReservedLock(sqlite3_file pFile, int pResOut) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc = 0; vfstrace_printf(pInfo, "%s.xCheckReservedLock(%s,%d)", pInfo.zVfsName, p.zFName); Debugger.Break();//TODO //rc = p.pReal.pMethods.xCheckReservedLock(p.pReal, pResOut); vfstrace_print_errcode(pInfo, " . %s", rc); vfstrace_printf(pInfo, ", ref=%d\n", pResOut); return(rc); }
/* ** Close an vfstrace-file. */ static int vfstraceClose(sqlite3_file pFile) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc; vfstrace_printf(pInfo, "%s.xClose(%s)", pInfo.zVfsName, p.zFName); rc = p.pReal.pMethods.xClose(p.pReal); vfstrace_print_errcode(pInfo, " . %s\n", rc); if (rc == SQLITE_OK) { //sqlite3_free(p._base.pMethods); p.pMethods = null;//p.base.pMethods = 0; } return(rc); }
/* ** Send trace output defined by zFormat and subsequent arguments. */ static void vfstrace_printf( vfstrace_info pInfo, string zFormat, params object[] ap ) { //va_list ap; string zMsg; va_start(ap, zFormat); zMsg = sqlite3_vmprintf(zFormat, ap); va_end(ref ap); Debugger.Break(); //pInfo.xOut( zMsg, pInfo.pOutArg ); //sqlite3_free(zMsg); }
/* ** Test for access permissions. Return true if the requested permission ** is available, or false otherwise. */ static int vfstraceAccess( sqlite3_vfs pVfs, string zPath, int flags, int pResOut ) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; int rc; vfstrace_printf(pInfo, "%s.xDelete(\"%s\",%d)", pInfo.zVfsName, zPath, flags); rc = pRoot.xAccess(pRoot, zPath, flags, out pResOut); vfstrace_print_errcode(pInfo, " . %s", rc); vfstrace_printf(pInfo, ", ref=%d\n", pResOut); return(rc); }
/* ** Write data to an vfstrace-file. */ static int vfstraceWrite( sqlite3_file pFile, string zBuf, int iAmt, sqlite_int64 iOfst ) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc = 0; vfstrace_printf(pInfo, "%s.xWrite(%s,n=%d,ofst=%lld)", pInfo.zVfsName, p.zFName, iAmt, iOfst); Debugger.Break();//TODO //rc = p.pReal.pMethods.xWrite( p.pReal, zBuf, iAmt, iOfst ); vfstrace_print_errcode(pInfo, " . %s\n", rc); return(rc); }
/* ** Populate buffer zOut with the full canonical pathname corresponding ** to the pathname in zPath. zOut is guaranteed to point to a buffer ** of at least (DEVSYM_MAX_PATHNAME+1) bytes. */ static int vfstraceFullPathname( sqlite3_vfs pVfs, string zPath, int nOut, StringBuilder zOut ) { vfstrace_info pInfo = (vfstrace_info)pVfs.pAppData; sqlite3_vfs pRoot = pInfo.pRootVfs; int rc; vfstrace_printf(pInfo, "%s.xFullPathname(\"%s\")", pInfo.zVfsName, zPath); rc = pRoot.xFullPathname(pRoot, zPath, nOut, zOut); vfstrace_print_errcode(pInfo, " . %s", rc); vfstrace_printf(pInfo, ", ref=\"%.*s\"\n", nOut, zOut); return(rc); }
static int vfstraceShmMap( sqlite3_file pFile, int iRegion, int szRegion, int isWrite, object pp ) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc = 0; vfstrace_printf(pInfo, "%s.xShmMap(%s,iRegion=%d,szRegion=%d,isWrite=%d,)", pInfo.zVfsName, p.zFName, iRegion, szRegion, isWrite); Debugger.Break(); //rc = p.pReal.pMethods.xShmMap( p.pReal, iRegion, szRegion, isWrite, pp ); vfstrace_print_errcode(pInfo, " . %s\n", rc); return(rc); }
/* ** File control method. For custom operations on an vfstrace-file. */ static int vfstraceFileControl(sqlite3_file pFile, int op, object pArg) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc = 0; Debugger.Break(); //TODO //StringBuilder zBuf = new StringBuilder(100); //string zOp; //switch( op ){ // case SQLITE_FCNTL_LOCKSTATE: zOp = "LOCKSTATE"; break; // case SQLITE_GET_LOCKPROXYFILE: zOp = "GET_LOCKPROXYFILE"; break; // case SQLITE_SET_LOCKPROXYFILE: zOp = "SET_LOCKPROXYFILE"; break; // case SQLITE_LAST_ERRNO: zOp = "LAST_ERRNO"; break; // case SQLITE_FCNTL_SIZE_HINT: { // sqlite3_snprintf(sizeof(zBuf), zBuf, "SIZE_HINT,%lld", // *(sqlite3_int64)pArg); // zOp = zBuf; // break; // } // case SQLITE_FCNTL_CHUNK_SIZE: { // sqlite3_snprintf(sizeof(zBuf), zBuf, "CHUNK_SIZE,%d", *(int)pArg); // zOp = zBuf; // break; // } // case SQLITE_FCNTL_FILE_POINTER: zOp = "FILE_POINTER"; break; // case SQLITE_FCNTL_SYNC_OMITTED: zOp = "SYNC_OMITTED"; break; // case 0xca093fa0: zOp = "DB_UNCHANGED"; break; // default: { // sqlite3_snprintf(zBuf.Capacity, zBuf, "%d", op); // zOp = zBuf.ToString(); // break; // } //} //vfstrace_printf(pInfo, "%s.xFileControl(%s,%s)", // pInfo.zVfsName, p.zFName, zOp); //rc = p.pReal.pMethods.xFileControl(p.pReal, op, pArg); //vfstrace_print_errcode(pInfo, " . %s\n", rc); return(rc); }
/* ** Shared-memory operations. */ static int vfstraceShmLock(sqlite3_file pFile, int ofst, int n, int flags) { vfstrace_file p = (vfstrace_file )pFile; vfstrace_info pInfo = p.pInfo; int rc; StringBuilder zLck = new StringBuilder(100); //int i = 0; zLck.Append("|0");//memcpy( zLck, "|0", 3 ); if ((flags & SQLITE_SHM_UNLOCK) != 0) { zLck.Append("|UNLOCK");//strappend(zLck, &i, "|UNLOCK"); } if ((flags & SQLITE_SHM_LOCK) != 0) { zLck.Append("|LOCK");//strappend(zLck, &i, "|LOCK"); } if ((flags & SQLITE_SHM_SHARED) != 0) { zLck.Append("|SHARED");//strappend(zLck, &i, "|SHARED"); } if ((flags & SQLITE_SHM_EXCLUSIVE) != 0) { zLck.Append("|EXCLUSIVE");//strappend(zLck, &i, "|EXCLUSIVE"); } if ((flags & ~(0xf)) != 0) { Debugger.Break();//TODO //zLck.Append( sqlite3_printf( "|0x%x", flags ) );//sqlite3_snprintf(sizeof(zLck)-i, &zLck[i], "|0x%x", flags); } //vfstrace_printf(pInfo, "%s.xShmLock(%s,ofst=%d,n=%d,%s)", // pInfo.zVfsName, p.zFName, ofst, n, &zLck[1]); rc = p.pReal.pMethods.xShmLock(p.pReal, ofst, n, flags); vfstrace_print_errcode(pInfo, " . %s\n", rc); return(rc); }
/* ** 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, string zFormat, int rc ){ StringBuilder zBuf = new StringBuilder(50);//char zBuf[50]; string zVal; switch( rc ){ case SQLITE_OK: zVal = "SQLITE_OK"; break; case SQLITE_ERROR: zVal = "SQLITE_ERROR"; break; case SQLITE_PERM: zVal = "SQLITE_PERM"; break; case SQLITE_ABORT: zVal = "SQLITE_ABORT"; break; case SQLITE_BUSY: zVal = "SQLITE_BUSY"; break; case SQLITE_NOMEM: zVal = "SQLITE_NOMEM"; break; case SQLITE_READONLY: zVal = "SQLITE_READONLY"; break; case SQLITE_INTERRUPT: zVal = "SQLITE_INTERRUPT"; break; case SQLITE_IOERR: zVal = "SQLITE_IOERR"; break; case SQLITE_CORRUPT: zVal = "SQLITE_CORRUPT"; break; case SQLITE_FULL: zVal = "SQLITE_FULL"; break; case SQLITE_CANTOPEN: zVal = "SQLITE_CANTOPEN"; break; case SQLITE_PROTOCOL: zVal = "SQLITE_PROTOCOL"; break; case SQLITE_EMPTY: zVal = "SQLITE_EMPTY"; break; case SQLITE_SCHEMA: zVal = "SQLITE_SCHEMA"; 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_SHORT_READ: zVal = "SQLITE_IOERR_SHORT_READ"; break; case SQLITE_IOERR_WRITE: zVal = "SQLITE_IOERR_WRITE"; break; case SQLITE_IOERR_FSYNC: zVal = "SQLITE_IOERR_FSYNC"; break; case SQLITE_IOERR_DIR_FSYNC: zVal = "SQLITE_IOERR_DIR_FSYNC"; break; case SQLITE_IOERR_TRUNCATE: zVal = "SQLITE_IOERR_TRUNCATE"; break; case SQLITE_IOERR_FSTAT: zVal = "SQLITE_IOERR_FSTAT"; break; case SQLITE_IOERR_UNLOCK: zVal = "SQLITE_IOERR_UNLOCK"; break; case SQLITE_IOERR_RDLOCK: zVal = "SQLITE_IOERR_RDLOCK"; break; case SQLITE_IOERR_DELETE: zVal = "SQLITE_IOERR_DELETE"; break; case SQLITE_IOERR_BLOCKED: zVal = "SQLITE_IOERR_BLOCKED"; break; case SQLITE_IOERR_NOMEM: zVal = "SQLITE_IOERR_NOMEM"; break; case SQLITE_IOERR_ACCESS: zVal = "SQLITE_IOERR_ACCESS"; break; case SQLITE_IOERR_CHECKRESERVEDLOCK: zVal = "SQLITE_IOERR_CHECKRESERVEDLOCK"; break; case SQLITE_IOERR_LOCK: zVal = "SQLITE_IOERR_LOCK"; break; case SQLITE_IOERR_CLOSE: zVal = "SQLITE_IOERR_CLOSE"; break; case SQLITE_IOERR_DIR_CLOSE: zVal = "SQLITE_IOERR_DIR_CLOSE"; break; case SQLITE_IOERR_SHMOPEN: zVal = "SQLITE_IOERR_SHMOPEN"; break; case SQLITE_IOERR_SHMSIZE: zVal = "SQLITE_IOERR_SHMSIZE"; break; case SQLITE_IOERR_SHMLOCK: zVal = "SQLITE_IOERR_SHMLOCK"; break; case SQLITE_LOCKED_SHAREDCACHE: zVal = "SQLITE_LOCKED_SHAREDCACHE"; break; case SQLITE_BUSY_RECOVERY: zVal = "SQLITE_BUSY_RECOVERY"; break; case SQLITE_CANTOPEN_NOTEMPDIR: zVal = "SQLITE_CANTOPEN_NOTEMPDIR"; break; default: { sqlite3_snprintf(zBuf.Capacity, zBuf, "%d", rc); zVal = zBuf.ToString(); break; } } vfstrace_printf(pInfo, zFormat, zVal); }
/* ** Send trace output defined by zFormat and subsequent arguments. */ static void vfstrace_printf( vfstrace_info pInfo, string zFormat, params object[]ap ){ //va_list ap; string zMsg; va_start(ap, zFormat); zMsg = sqlite3_vmprintf(zFormat, ap); va_end(ref ap); Debugger.Break(); //pInfo.xOut( zMsg, pInfo.pOutArg ); //sqlite3_free(zMsg); }
/* ** 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, string zFormat, int rc ) { StringBuilder zBuf = new StringBuilder(50);//char zBuf[50]; string zVal; switch (rc) { case SQLITE_OK: zVal = "SQLITE_OK"; break; case SQLITE_ERROR: zVal = "SQLITE_ERROR"; break; case SQLITE_PERM: zVal = "SQLITE_PERM"; break; case SQLITE_ABORT: zVal = "SQLITE_ABORT"; break; case SQLITE_BUSY: zVal = "SQLITE_BUSY"; break; case SQLITE_NOMEM: zVal = "SQLITE_NOMEM"; break; case SQLITE_READONLY: zVal = "SQLITE_READONLY"; break; case SQLITE_INTERRUPT: zVal = "SQLITE_INTERRUPT"; break; case SQLITE_IOERR: zVal = "SQLITE_IOERR"; break; case SQLITE_CORRUPT: zVal = "SQLITE_CORRUPT"; break; case SQLITE_FULL: zVal = "SQLITE_FULL"; break; case SQLITE_CANTOPEN: zVal = "SQLITE_CANTOPEN"; break; case SQLITE_PROTOCOL: zVal = "SQLITE_PROTOCOL"; break; case SQLITE_EMPTY: zVal = "SQLITE_EMPTY"; break; case SQLITE_SCHEMA: zVal = "SQLITE_SCHEMA"; 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_SHORT_READ: zVal = "SQLITE_IOERR_SHORT_READ"; break; case SQLITE_IOERR_WRITE: zVal = "SQLITE_IOERR_WRITE"; break; case SQLITE_IOERR_FSYNC: zVal = "SQLITE_IOERR_FSYNC"; break; case SQLITE_IOERR_DIR_FSYNC: zVal = "SQLITE_IOERR_DIR_FSYNC"; break; case SQLITE_IOERR_TRUNCATE: zVal = "SQLITE_IOERR_TRUNCATE"; break; case SQLITE_IOERR_FSTAT: zVal = "SQLITE_IOERR_FSTAT"; break; case SQLITE_IOERR_UNLOCK: zVal = "SQLITE_IOERR_UNLOCK"; break; case SQLITE_IOERR_RDLOCK: zVal = "SQLITE_IOERR_RDLOCK"; break; case SQLITE_IOERR_DELETE: zVal = "SQLITE_IOERR_DELETE"; break; case SQLITE_IOERR_BLOCKED: zVal = "SQLITE_IOERR_BLOCKED"; break; case SQLITE_IOERR_NOMEM: zVal = "SQLITE_IOERR_NOMEM"; break; case SQLITE_IOERR_ACCESS: zVal = "SQLITE_IOERR_ACCESS"; break; case SQLITE_IOERR_CHECKRESERVEDLOCK: zVal = "SQLITE_IOERR_CHECKRESERVEDLOCK"; break; case SQLITE_IOERR_LOCK: zVal = "SQLITE_IOERR_LOCK"; break; case SQLITE_IOERR_CLOSE: zVal = "SQLITE_IOERR_CLOSE"; break; case SQLITE_IOERR_DIR_CLOSE: zVal = "SQLITE_IOERR_DIR_CLOSE"; break; case SQLITE_IOERR_SHMOPEN: zVal = "SQLITE_IOERR_SHMOPEN"; break; case SQLITE_IOERR_SHMSIZE: zVal = "SQLITE_IOERR_SHMSIZE"; break; case SQLITE_IOERR_SHMLOCK: zVal = "SQLITE_IOERR_SHMLOCK"; break; case SQLITE_LOCKED_SHAREDCACHE: zVal = "SQLITE_LOCKED_SHAREDCACHE"; break; case SQLITE_BUSY_RECOVERY: zVal = "SQLITE_BUSY_RECOVERY"; break; case SQLITE_CANTOPEN_NOTEMPDIR: zVal = "SQLITE_CANTOPEN_NOTEMPDIR"; break; default: { sqlite3_snprintf(zBuf.Capacity, zBuf, "%d", rc); zVal = zBuf.ToString(); break; } } vfstrace_printf(pInfo, zFormat, zVal); }