Lines Matching refs:db

34 static int sqlite3TestExtInit(sqlite3 *db){  in sqlite3TestExtInit()  argument
35 (void)db; in sqlite3TestExtInit()
747 static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt){ in setupLookaside() argument
754 if( sqlite3LookasideUsed(db,0)>0 ){ in setupLookaside()
761 if( db->lookaside.bMalloced ){ in setupLookaside()
762 sqlite3_free(db->lookaside.pStart); in setupLookaside()
796 db->lookaside.pStart = pStart; in setupLookaside()
797 db->lookaside.pInit = 0; in setupLookaside()
798 db->lookaside.pFree = 0; in setupLookaside()
799 db->lookaside.sz = (u16)sz; in setupLookaside()
800 db->lookaside.szTrue = (u16)sz; in setupLookaside()
807 p->pNext = db->lookaside.pInit; in setupLookaside()
808 db->lookaside.pInit = p; in setupLookaside()
812 db->lookaside.pSmallInit = 0; in setupLookaside()
813 db->lookaside.pSmallFree = 0; in setupLookaside()
814 db->lookaside.pMiddle = p; in setupLookaside()
816 p->pNext = db->lookaside.pSmallInit; in setupLookaside()
817 db->lookaside.pSmallInit = p; in setupLookaside()
822 db->lookaside.pEnd = p; in setupLookaside()
823 db->lookaside.bDisable = 0; in setupLookaside()
824 db->lookaside.bMalloced = pBuf==0 ?1:0; in setupLookaside()
825 db->lookaside.nSlot = nBig+nSm; in setupLookaside()
827 db->lookaside.pStart = 0; in setupLookaside()
829 db->lookaside.pSmallInit = 0; in setupLookaside()
830 db->lookaside.pSmallFree = 0; in setupLookaside()
831 db->lookaside.pMiddle = 0; in setupLookaside()
833 db->lookaside.pEnd = 0; in setupLookaside()
834 db->lookaside.bDisable = 1; in setupLookaside()
835 db->lookaside.sz = 0; in setupLookaside()
836 db->lookaside.bMalloced = 0; in setupLookaside()
837 db->lookaside.nSlot = 0; in setupLookaside()
839 db->lookaside.pTrueEnd = db->lookaside.pEnd; in setupLookaside()
840 assert( sqlite3LookasideUsed(db,0)==0 ); in setupLookaside()
848 sqlite3_mutex *sqlite3_db_mutex(sqlite3 *db){ in sqlite3_db_mutex() argument
850 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_db_mutex()
855 return db->mutex; in sqlite3_db_mutex()
862 int sqlite3_db_release_memory(sqlite3 *db){ in sqlite3_db_release_memory() argument
866 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_db_release_memory()
868 sqlite3_mutex_enter(db->mutex); in sqlite3_db_release_memory()
869 sqlite3BtreeEnterAll(db); in sqlite3_db_release_memory()
870 for(i=0; i<db->nDb; i++){ in sqlite3_db_release_memory()
871 Btree *pBt = db->aDb[i].pBt; in sqlite3_db_release_memory()
877 sqlite3BtreeLeaveAll(db); in sqlite3_db_release_memory()
878 sqlite3_mutex_leave(db->mutex); in sqlite3_db_release_memory()
886 int sqlite3_db_cacheflush(sqlite3 *db){ in sqlite3_db_cacheflush() argument
892 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_db_cacheflush()
894 sqlite3_mutex_enter(db->mutex); in sqlite3_db_cacheflush()
895 sqlite3BtreeEnterAll(db); in sqlite3_db_cacheflush()
896 for(i=0; rc==SQLITE_OK && i<db->nDb; i++){ in sqlite3_db_cacheflush()
897 Btree *pBt = db->aDb[i].pBt; in sqlite3_db_cacheflush()
907 sqlite3BtreeLeaveAll(db); in sqlite3_db_cacheflush()
908 sqlite3_mutex_leave(db->mutex); in sqlite3_db_cacheflush()
915 int sqlite3_db_config(sqlite3 *db, int op, ...){ in sqlite3_db_config() argument
918 sqlite3_mutex_enter(db->mutex); in sqlite3_db_config()
924 db->aDb[0].zDbSName = va_arg(ap,char*); in sqlite3_db_config()
932 rc = setupLookaside(db, pBuf, sz, cnt); in sqlite3_db_config()
964 u64 oldFlags = db->flags; in sqlite3_db_config()
966 db->flags |= aFlagOp[i].mask; in sqlite3_db_config()
968 db->flags &= ~(u64)aFlagOp[i].mask; in sqlite3_db_config()
970 if( oldFlags!=db->flags ){ in sqlite3_db_config()
971 sqlite3ExpirePreparedStatements(db, 0); in sqlite3_db_config()
974 *pRes = (db->flags & aFlagOp[i].mask)!=0; in sqlite3_db_config()
984 sqlite3_mutex_leave(db->mutex); in sqlite3_db_config()
1061 sqlite_int64 sqlite3_last_insert_rowid(sqlite3 *db){ in sqlite3_last_insert_rowid() argument
1063 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_last_insert_rowid()
1068 return db->lastRowid; in sqlite3_last_insert_rowid()
1074 void sqlite3_set_last_insert_rowid(sqlite3 *db, sqlite3_int64 iRowid){ in sqlite3_set_last_insert_rowid() argument
1076 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_set_last_insert_rowid()
1081 sqlite3_mutex_enter(db->mutex); in sqlite3_set_last_insert_rowid()
1082 db->lastRowid = iRowid; in sqlite3_set_last_insert_rowid()
1083 sqlite3_mutex_leave(db->mutex); in sqlite3_set_last_insert_rowid()
1089 sqlite3_int64 sqlite3_changes64(sqlite3 *db){ in sqlite3_changes64() argument
1091 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_changes64()
1096 return db->nChange; in sqlite3_changes64()
1098 int sqlite3_changes(sqlite3 *db){ in sqlite3_changes() argument
1099 return (int)sqlite3_changes64(db); in sqlite3_changes()
1105 sqlite3_int64 sqlite3_total_changes64(sqlite3 *db){ in sqlite3_total_changes64() argument
1107 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_total_changes64()
1112 return db->nTotalChange; in sqlite3_total_changes64()
1114 int sqlite3_total_changes(sqlite3 *db){ in sqlite3_total_changes() argument
1115 return (int)sqlite3_total_changes64(db); in sqlite3_total_changes()
1123 void sqlite3CloseSavepoints(sqlite3 *db){ in sqlite3CloseSavepoints() argument
1124 while( db->pSavepoint ){ in sqlite3CloseSavepoints()
1125 Savepoint *pTmp = db->pSavepoint; in sqlite3CloseSavepoints()
1126 db->pSavepoint = pTmp->pNext; in sqlite3CloseSavepoints()
1127 sqlite3DbFree(db, pTmp); in sqlite3CloseSavepoints()
1129 db->nSavepoint = 0; in sqlite3CloseSavepoints()
1130 db->nStatement = 0; in sqlite3CloseSavepoints()
1131 db->isTransactionSavepoint = 0; in sqlite3CloseSavepoints()
1140 static void functionDestroy(sqlite3 *db, FuncDef *p){ in functionDestroy() argument
1148 sqlite3DbFree(db, pDestructor); in functionDestroy()
1157 static void disconnectAllVtab(sqlite3 *db){ in disconnectAllVtab() argument
1161 sqlite3BtreeEnterAll(db); in disconnectAllVtab()
1162 for(i=0; i<db->nDb; i++){ in disconnectAllVtab()
1163 Schema *pSchema = db->aDb[i].pSchema; in disconnectAllVtab()
1167 if( IsVirtual(pTab) ) sqlite3VtabDisconnect(db, pTab); in disconnectAllVtab()
1171 for(p=sqliteHashFirst(&db->aModule); p; p=sqliteHashNext(p)){ in disconnectAllVtab()
1174 sqlite3VtabDisconnect(db, pMod->pEpoTab); in disconnectAllVtab()
1177 sqlite3VtabUnlockList(db); in disconnectAllVtab()
1178 sqlite3BtreeLeaveAll(db); in disconnectAllVtab()
1180 UNUSED_PARAMETER(db); in disconnectAllVtab()
1188 static int connectionIsBusy(sqlite3 *db){ in connectionIsBusy() argument
1190 assert( sqlite3_mutex_held(db->mutex) ); in connectionIsBusy()
1191 if( db->pVdbe ) return 1; in connectionIsBusy()
1192 for(j=0; j<db->nDb; j++){ in connectionIsBusy()
1193 Btree *pBt = db->aDb[j].pBt; in connectionIsBusy()
1202 static int sqlite3Close(sqlite3 *db, int forceZombie){ in sqlite3Close() argument
1203 if( !db ){ in sqlite3Close()
1208 if( !sqlite3SafetyCheckSickOrOk(db) ){ in sqlite3Close()
1211 sqlite3_mutex_enter(db->mutex); in sqlite3Close()
1212 if( db->mTrace & SQLITE_TRACE_CLOSE ){ in sqlite3Close()
1213 db->trace.xV2(SQLITE_TRACE_CLOSE, db->pTraceArg, db, 0); in sqlite3Close()
1217 disconnectAllVtab(db); in sqlite3Close()
1226 sqlite3VtabRollback(db); in sqlite3Close()
1231 if( !forceZombie && connectionIsBusy(db) ){ in sqlite3Close()
1232 sqlite3ErrorWithMsg(db, SQLITE_BUSY, "unable to close due to unfinalized " in sqlite3Close()
1234 sqlite3_mutex_leave(db->mutex); in sqlite3Close()
1241 sqlite3GlobalConfig.xSqllog(sqlite3GlobalConfig.pSqllogArg, db, 0, 2); in sqlite3Close()
1247 db->eOpenState = SQLITE_STATE_ZOMBIE; in sqlite3Close()
1248 sqlite3LeaveMutexAndCloseZombie(db); in sqlite3Close()
1256 int sqlite3_txn_state(sqlite3 *db, const char *zSchema){ in sqlite3_txn_state() argument
1260 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_txn_state()
1265 sqlite3_mutex_enter(db->mutex); in sqlite3_txn_state()
1267 nDb = iDb = sqlite3FindDbName(db, zSchema); in sqlite3_txn_state()
1271 nDb = db->nDb-1; in sqlite3_txn_state()
1274 Btree *pBt = db->aDb[iDb].pBt; in sqlite3_txn_state()
1278 sqlite3_mutex_leave(db->mutex); in sqlite3_txn_state()
1291 int sqlite3_close(sqlite3 *db){ return sqlite3Close(db,0); } in sqlite3_close() argument
1292 int sqlite3_close_v2(sqlite3 *db){ return sqlite3Close(db,1); } in sqlite3_close_v2() argument
1303 void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){ in sqlite3LeaveMutexAndCloseZombie() argument
1311 if( db->eOpenState!=SQLITE_STATE_ZOMBIE || connectionIsBusy(db) ){ in sqlite3LeaveMutexAndCloseZombie()
1312 sqlite3_mutex_leave(db->mutex); in sqlite3LeaveMutexAndCloseZombie()
1326 sqlite3RollbackAll(db, SQLITE_OK); in sqlite3LeaveMutexAndCloseZombie()
1329 sqlite3CloseSavepoints(db); in sqlite3LeaveMutexAndCloseZombie()
1332 for(j=0; j<db->nDb; j++){ in sqlite3LeaveMutexAndCloseZombie()
1333 struct Db *pDb = &db->aDb[j]; in sqlite3LeaveMutexAndCloseZombie()
1343 if( db->aDb[1].pSchema ){ in sqlite3LeaveMutexAndCloseZombie()
1344 sqlite3SchemaClear(db->aDb[1].pSchema); in sqlite3LeaveMutexAndCloseZombie()
1346 sqlite3VtabUnlockList(db); in sqlite3LeaveMutexAndCloseZombie()
1349 sqlite3CollapseDatabaseArray(db); in sqlite3LeaveMutexAndCloseZombie()
1350 assert( db->nDb<=2 ); in sqlite3LeaveMutexAndCloseZombie()
1351 assert( db->aDb==db->aDbStatic ); in sqlite3LeaveMutexAndCloseZombie()
1356 sqlite3ConnectionClosed(db); in sqlite3LeaveMutexAndCloseZombie()
1358 for(i=sqliteHashFirst(&db->aFunc); i; i=sqliteHashNext(i)){ in sqlite3LeaveMutexAndCloseZombie()
1362 functionDestroy(db, p); in sqlite3LeaveMutexAndCloseZombie()
1364 sqlite3DbFree(db, p); in sqlite3LeaveMutexAndCloseZombie()
1368 sqlite3HashClear(&db->aFunc); in sqlite3LeaveMutexAndCloseZombie()
1369 for(i=sqliteHashFirst(&db->aCollSeq); i; i=sqliteHashNext(i)){ in sqlite3LeaveMutexAndCloseZombie()
1377 sqlite3DbFree(db, pColl); in sqlite3LeaveMutexAndCloseZombie()
1379 sqlite3HashClear(&db->aCollSeq); in sqlite3LeaveMutexAndCloseZombie()
1381 for(i=sqliteHashFirst(&db->aModule); i; i=sqliteHashNext(i)){ in sqlite3LeaveMutexAndCloseZombie()
1383 sqlite3VtabEponymousTableClear(db, pMod); in sqlite3LeaveMutexAndCloseZombie()
1384 sqlite3VtabModuleUnref(db, pMod); in sqlite3LeaveMutexAndCloseZombie()
1386 sqlite3HashClear(&db->aModule); in sqlite3LeaveMutexAndCloseZombie()
1389 sqlite3Error(db, SQLITE_OK); /* Deallocates any cached error strings. */ in sqlite3LeaveMutexAndCloseZombie()
1390 sqlite3ValueFree(db->pErr); in sqlite3LeaveMutexAndCloseZombie()
1391 sqlite3CloseExtensions(db); in sqlite3LeaveMutexAndCloseZombie()
1393 sqlite3_free(db->auth.zAuthUser); in sqlite3LeaveMutexAndCloseZombie()
1394 sqlite3_free(db->auth.zAuthPW); in sqlite3LeaveMutexAndCloseZombie()
1397 db->eOpenState = SQLITE_STATE_ERROR; in sqlite3LeaveMutexAndCloseZombie()
1405 sqlite3DbFree(db, db->aDb[1].pSchema); in sqlite3LeaveMutexAndCloseZombie()
1406 if( db->xAutovacDestr ){ in sqlite3LeaveMutexAndCloseZombie()
1407 db->xAutovacDestr(db->pAutovacPagesArg); in sqlite3LeaveMutexAndCloseZombie()
1409 sqlite3_mutex_leave(db->mutex); in sqlite3LeaveMutexAndCloseZombie()
1410 db->eOpenState = SQLITE_STATE_CLOSED; in sqlite3LeaveMutexAndCloseZombie()
1411 sqlite3_mutex_free(db->mutex); in sqlite3LeaveMutexAndCloseZombie()
1412 assert( sqlite3LookasideUsed(db,0)==0 ); in sqlite3LeaveMutexAndCloseZombie()
1413 if( db->lookaside.bMalloced ){ in sqlite3LeaveMutexAndCloseZombie()
1414 sqlite3_free(db->lookaside.pStart); in sqlite3LeaveMutexAndCloseZombie()
1416 sqlite3_free(db); in sqlite3LeaveMutexAndCloseZombie()
1426 void sqlite3RollbackAll(sqlite3 *db, int tripCode){ in sqlite3RollbackAll() argument
1430 assert( sqlite3_mutex_held(db->mutex) ); in sqlite3RollbackAll()
1439 sqlite3BtreeEnterAll(db); in sqlite3RollbackAll()
1440 schemaChange = (db->mDbFlags & DBFLAG_SchemaChange)!=0 && db->init.busy==0; in sqlite3RollbackAll()
1442 for(i=0; i<db->nDb; i++){ in sqlite3RollbackAll()
1443 Btree *p = db->aDb[i].pBt; in sqlite3RollbackAll()
1451 sqlite3VtabRollback(db); in sqlite3RollbackAll()
1455 sqlite3ExpirePreparedStatements(db, 0); in sqlite3RollbackAll()
1456 sqlite3ResetAllSchemasOfConnection(db); in sqlite3RollbackAll()
1458 sqlite3BtreeLeaveAll(db); in sqlite3RollbackAll()
1461 db->nDeferredCons = 0; in sqlite3RollbackAll()
1462 db->nDeferredImmCons = 0; in sqlite3RollbackAll()
1463 db->flags &= ~(u64)(SQLITE_DeferFKs|SQLITE_CorruptRdOnly); in sqlite3RollbackAll()
1466 if( db->xRollbackCallback && (inTrans || !db->autoCommit) ){ in sqlite3RollbackAll()
1467 db->xRollbackCallback(db->pRollbackArg); in sqlite3RollbackAll()
1669 sqlite3 *db = (sqlite3 *)ptr; in sqliteDefaultBusyCallback() local
1670 int tmout = db->busyTimeout; in sqliteDefaultBusyCallback()
1685 sqlite3OsSleep(db->pVfs, delay*1000); in sqliteDefaultBusyCallback()
1690 sqlite3 *db = (sqlite3 *)ptr; in sqliteDefaultBusyCallback()
1695 sqlite3OsSleep(db->pVfs, 1000000); in sqliteDefaultBusyCallback()
1726 sqlite3 *db, in sqlite3_busy_handler() argument
1731 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_busy_handler()
1733 sqlite3_mutex_enter(db->mutex); in sqlite3_busy_handler()
1734 db->busyHandler.xBusyHandler = xBusy; in sqlite3_busy_handler()
1735 db->busyHandler.pBusyArg = pArg; in sqlite3_busy_handler()
1736 db->busyHandler.nBusy = 0; in sqlite3_busy_handler()
1737 db->busyTimeout = 0; in sqlite3_busy_handler()
1738 sqlite3_mutex_leave(db->mutex); in sqlite3_busy_handler()
1749 sqlite3 *db, in sqlite3_progress_handler() argument
1755 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_progress_handler()
1760 sqlite3_mutex_enter(db->mutex); in sqlite3_progress_handler()
1762 db->xProgress = xProgress; in sqlite3_progress_handler()
1763 db->nProgressOps = (unsigned)nOps; in sqlite3_progress_handler()
1764 db->pProgressArg = pArg; in sqlite3_progress_handler()
1766 db->xProgress = 0; in sqlite3_progress_handler()
1767 db->nProgressOps = 0; in sqlite3_progress_handler()
1768 db->pProgressArg = 0; in sqlite3_progress_handler()
1770 sqlite3_mutex_leave(db->mutex); in sqlite3_progress_handler()
1779 int sqlite3_busy_timeout(sqlite3 *db, int ms){ in sqlite3_busy_timeout() argument
1781 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_busy_timeout()
1784 sqlite3_busy_handler(db, (int(*)(void*,int))sqliteDefaultBusyCallback, in sqlite3_busy_timeout()
1785 (void*)db); in sqlite3_busy_timeout()
1786 db->busyTimeout = ms; in sqlite3_busy_timeout()
1788 sqlite3_busy_handler(db, 0, 0); in sqlite3_busy_timeout()
1796 void sqlite3_interrupt(sqlite3 *db){ in sqlite3_interrupt() argument
1798 if( !sqlite3SafetyCheckOk(db) && (db==0 || db->eOpenState!=SQLITE_STATE_ZOMBIE) ){ in sqlite3_interrupt()
1803 AtomicStore(&db->u1.isInterrupted, 1); in sqlite3_interrupt()
1814 sqlite3 *db, in sqlite3CreateFunc() argument
1829 assert( sqlite3_mutex_held(db->mutex) ); in sqlite3CreateFunc()
1867 rc = sqlite3CreateFunc(db, zFunctionName, nArg, in sqlite3CreateFunc()
1871 rc = sqlite3CreateFunc(db, zFunctionName, nArg, in sqlite3CreateFunc()
1898 p = sqlite3FindFunction(db, zFunctionName, nArg, (u8)enc, 0); in sqlite3CreateFunc()
1900 if( db->nVdbeActive ){ in sqlite3CreateFunc()
1901 sqlite3ErrorWithMsg(db, SQLITE_BUSY, in sqlite3CreateFunc()
1903 assert( !db->mallocFailed ); in sqlite3CreateFunc()
1906 sqlite3ExpirePreparedStatements(db, 0); in sqlite3CreateFunc()
1914 p = sqlite3FindFunction(db, zFunctionName, nArg, (u8)enc, 1); in sqlite3CreateFunc()
1915 assert(p || db->mallocFailed); in sqlite3CreateFunc()
1922 functionDestroy(db, p); in sqlite3CreateFunc()
1948 sqlite3 *db, in createFunctionApi() argument
1964 if( !sqlite3SafetyCheckOk(db) ){ in createFunctionApi()
1968 sqlite3_mutex_enter(db->mutex); in createFunctionApi()
1972 sqlite3OomFault(db); in createFunctionApi()
1980 rc = sqlite3CreateFunc(db, zFunc, nArg, enc, p, in createFunctionApi()
1990 rc = sqlite3ApiExit(db, rc); in createFunctionApi()
1991 sqlite3_mutex_leave(db->mutex); in createFunctionApi()
1999 sqlite3 *db, in sqlite3_create_function() argument
2008 return createFunctionApi(db, zFunc, nArg, enc, p, xSFunc, xStep, in sqlite3_create_function()
2012 sqlite3 *db, in sqlite3_create_function_v2() argument
2022 return createFunctionApi(db, zFunc, nArg, enc, p, xSFunc, xStep, in sqlite3_create_function_v2()
2026 sqlite3 *db, in sqlite3_create_window_function() argument
2037 return createFunctionApi(db, zFunc, nArg, enc, p, 0, xStep, in sqlite3_create_window_function()
2043 sqlite3 *db, in sqlite3_create_function16() argument
2056 if( !sqlite3SafetyCheckOk(db) || zFunctionName==0 ) return SQLITE_MISUSE_BKPT; in sqlite3_create_function16()
2058 sqlite3_mutex_enter(db->mutex); in sqlite3_create_function16()
2059 assert( !db->mallocFailed ); in sqlite3_create_function16()
2060 zFunc8 = sqlite3Utf16to8(db, zFunctionName, -1, SQLITE_UTF16NATIVE); in sqlite3_create_function16()
2061 rc = sqlite3CreateFunc(db, zFunc8, nArg, eTextRep, p, xSFunc,xStep,xFinal,0,0,0); in sqlite3_create_function16()
2062 sqlite3DbFree(db, zFunc8); in sqlite3_create_function16()
2063 rc = sqlite3ApiExit(db, rc); in sqlite3_create_function16()
2064 sqlite3_mutex_leave(db->mutex); in sqlite3_create_function16()
2105 sqlite3 *db, in sqlite3_overload_function() argument
2113 if( !sqlite3SafetyCheckOk(db) || zName==0 || nArg<-2 ){ in sqlite3_overload_function()
2117 sqlite3_mutex_enter(db->mutex); in sqlite3_overload_function()
2118 rc = sqlite3FindFunction(db, zName, nArg, SQLITE_UTF8, 0)!=0; in sqlite3_overload_function()
2119 sqlite3_mutex_leave(db->mutex); in sqlite3_overload_function()
2123 return sqlite3_create_function_v2(db, zName, nArg, SQLITE_UTF8, in sqlite3_overload_function()
2137 void *sqlite3_trace(sqlite3 *db, void(*xTrace)(void*,const char*), void *pArg){ in sqlite3_trace() argument
2141 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_trace()
2146 sqlite3_mutex_enter(db->mutex); in sqlite3_trace()
2147 pOld = db->pTraceArg; in sqlite3_trace()
2148 db->mTrace = xTrace ? SQLITE_TRACE_LEGACY : 0; in sqlite3_trace()
2149 db->trace.xLegacy = xTrace; in sqlite3_trace()
2150 db->pTraceArg = pArg; in sqlite3_trace()
2151 sqlite3_mutex_leave(db->mutex); in sqlite3_trace()
2159 sqlite3 *db, /* Trace this connection */ in sqlite3_trace_v2() argument
2165 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_trace_v2()
2169 sqlite3_mutex_enter(db->mutex); in sqlite3_trace_v2()
2172 db->mTrace = mTrace; in sqlite3_trace_v2()
2173 db->trace.xV2 = xTrace; in sqlite3_trace_v2()
2174 db->pTraceArg = pArg; in sqlite3_trace_v2()
2175 sqlite3_mutex_leave(db->mutex); in sqlite3_trace_v2()
2189 sqlite3 *db, in sqlite3_profile() argument
2196 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_profile()
2201 sqlite3_mutex_enter(db->mutex); in sqlite3_profile()
2202 pOld = db->pProfileArg; in sqlite3_profile()
2203 db->xProfile = xProfile; in sqlite3_profile()
2204 db->pProfileArg = pArg; in sqlite3_profile()
2205 db->mTrace &= SQLITE_TRACE_NONLEGACY_MASK; in sqlite3_profile()
2206 if( db->xProfile ) db->mTrace |= SQLITE_TRACE_XPROFILE; in sqlite3_profile()
2207 sqlite3_mutex_leave(db->mutex); in sqlite3_profile()
2219 sqlite3 *db, /* Attach the hook to this database */ in sqlite3_commit_hook() argument
2226 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_commit_hook()
2231 sqlite3_mutex_enter(db->mutex); in sqlite3_commit_hook()
2232 pOld = db->pCommitArg; in sqlite3_commit_hook()
2233 db->xCommitCallback = xCallback; in sqlite3_commit_hook()
2234 db->pCommitArg = pArg; in sqlite3_commit_hook()
2235 sqlite3_mutex_leave(db->mutex); in sqlite3_commit_hook()
2244 sqlite3 *db, /* Attach the hook to this database */ in sqlite3_update_hook() argument
2251 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_update_hook()
2256 sqlite3_mutex_enter(db->mutex); in sqlite3_update_hook()
2257 pRet = db->pUpdateArg; in sqlite3_update_hook()
2258 db->xUpdateCallback = xCallback; in sqlite3_update_hook()
2259 db->pUpdateArg = pArg; in sqlite3_update_hook()
2260 sqlite3_mutex_leave(db->mutex); in sqlite3_update_hook()
2269 sqlite3 *db, /* Attach the hook to this database */ in sqlite3_rollback_hook() argument
2276 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_rollback_hook()
2281 sqlite3_mutex_enter(db->mutex); in sqlite3_rollback_hook()
2282 pRet = db->pRollbackArg; in sqlite3_rollback_hook()
2283 db->xRollbackCallback = xCallback; in sqlite3_rollback_hook()
2284 db->pRollbackArg = pArg; in sqlite3_rollback_hook()
2285 sqlite3_mutex_leave(db->mutex); in sqlite3_rollback_hook()
2295 sqlite3 *db, /* Attach the hook to this database */ in sqlite3_preupdate_hook() argument
2301 sqlite3_mutex_enter(db->mutex); in sqlite3_preupdate_hook()
2302 pRet = db->pPreUpdateArg; in sqlite3_preupdate_hook()
2303 db->xPreUpdateCallback = xCallback; in sqlite3_preupdate_hook()
2304 db->pPreUpdateArg = pArg; in sqlite3_preupdate_hook()
2305 sqlite3_mutex_leave(db->mutex); in sqlite3_preupdate_hook()
2315 sqlite3 *db, /* Attach the hook to this database */ in sqlite3_autovacuum_pages() argument
2321 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_autovacuum_pages()
2326 sqlite3_mutex_enter(db->mutex); in sqlite3_autovacuum_pages()
2327 if( db->xAutovacDestr ){ in sqlite3_autovacuum_pages()
2328 db->xAutovacDestr(db->pAutovacPagesArg); in sqlite3_autovacuum_pages()
2330 db->xAutovacPages = xCallback; in sqlite3_autovacuum_pages()
2331 db->pAutovacPagesArg = pArg; in sqlite3_autovacuum_pages()
2332 db->xAutovacDestr = xDestructor; in sqlite3_autovacuum_pages()
2333 sqlite3_mutex_leave(db->mutex); in sqlite3_autovacuum_pages()
2347 sqlite3 *db, /* Connection */ in sqlite3WalDefaultHook() argument
2353 sqlite3_wal_checkpoint(db, zDb); in sqlite3WalDefaultHook()
2371 int sqlite3_wal_autocheckpoint(sqlite3 *db, int nFrame){ in sqlite3_wal_autocheckpoint() argument
2373 UNUSED_PARAMETER(db); in sqlite3_wal_autocheckpoint()
2377 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_wal_autocheckpoint()
2380 sqlite3_wal_hook(db, sqlite3WalDefaultHook, SQLITE_INT_TO_PTR(nFrame)); in sqlite3_wal_autocheckpoint()
2382 sqlite3_wal_hook(db, 0, 0); in sqlite3_wal_autocheckpoint()
2393 sqlite3 *db, /* Attach the hook to this db handle */ in sqlite3_wal_hook() argument
2400 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_wal_hook()
2405 sqlite3_mutex_enter(db->mutex); in sqlite3_wal_hook()
2406 pRet = db->pWalArg; in sqlite3_wal_hook()
2407 db->xWalCallback = xCallback; in sqlite3_wal_hook()
2408 db->pWalArg = pArg; in sqlite3_wal_hook()
2409 sqlite3_mutex_leave(db->mutex); in sqlite3_wal_hook()
2420 sqlite3 *db, /* Database handle */ in sqlite3_wal_checkpoint_v2() argument
2433 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_wal_checkpoint_v2()
2450 sqlite3_mutex_enter(db->mutex); in sqlite3_wal_checkpoint_v2()
2452 iDb = sqlite3FindDbName(db, zDb); in sqlite3_wal_checkpoint_v2()
2458 sqlite3ErrorWithMsg(db, SQLITE_ERROR, "unknown database: %s", zDb); in sqlite3_wal_checkpoint_v2()
2460 db->busyHandler.nBusy = 0; in sqlite3_wal_checkpoint_v2()
2461 rc = sqlite3Checkpoint(db, iDb, eMode, pnLog, pnCkpt); in sqlite3_wal_checkpoint_v2()
2462 sqlite3Error(db, rc); in sqlite3_wal_checkpoint_v2()
2464 rc = sqlite3ApiExit(db, rc); in sqlite3_wal_checkpoint_v2()
2468 if( db->nVdbeActive==0 ){ in sqlite3_wal_checkpoint_v2()
2469 AtomicStore(&db->u1.isInterrupted, 0); in sqlite3_wal_checkpoint_v2()
2472 sqlite3_mutex_leave(db->mutex); in sqlite3_wal_checkpoint_v2()
2483 int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb){ in sqlite3_wal_checkpoint() argument
2486 return sqlite3_wal_checkpoint_v2(db,zDb,SQLITE_CHECKPOINT_PASSIVE,0,0); in sqlite3_wal_checkpoint()
2510 int sqlite3Checkpoint(sqlite3 *db, int iDb, int eMode, int *pnLog, int *pnCkpt){ in sqlite3Checkpoint() argument
2515 assert( sqlite3_mutex_held(db->mutex) ); in sqlite3Checkpoint()
2521 for(i=0; i<db->nDb && rc==SQLITE_OK; i++){ in sqlite3Checkpoint()
2523 rc = sqlite3BtreeCheckpoint(db->aDb[i].pBt, eMode, pnLog, pnCkpt); in sqlite3Checkpoint()
2556 int sqlite3TempInMemory(const sqlite3 *db){ in sqlite3TempInMemory() argument
2558 return ( db->temp_store==2 ); in sqlite3TempInMemory()
2561 return ( db->temp_store!=1 ); in sqlite3TempInMemory()
2564 UNUSED_PARAMETER(db); in sqlite3TempInMemory()
2568 UNUSED_PARAMETER(db); in sqlite3TempInMemory()
2577 const char *sqlite3_errmsg(sqlite3 *db){ in sqlite3_errmsg() argument
2579 if( !db ){ in sqlite3_errmsg()
2582 if( !sqlite3SafetyCheckSickOrOk(db) ){ in sqlite3_errmsg()
2585 sqlite3_mutex_enter(db->mutex); in sqlite3_errmsg()
2586 if( db->mallocFailed ){ in sqlite3_errmsg()
2589 testcase( db->pErr==0 ); in sqlite3_errmsg()
2590 z = db->errCode ? (char*)sqlite3_value_text(db->pErr) : 0; in sqlite3_errmsg()
2591 assert( !db->mallocFailed ); in sqlite3_errmsg()
2593 z = sqlite3ErrStr(db->errCode); in sqlite3_errmsg()
2596 sqlite3_mutex_leave(db->mutex); in sqlite3_errmsg()
2603 int sqlite3_error_offset(sqlite3 *db){ in sqlite3_error_offset() argument
2605 if( db && sqlite3SafetyCheckSickOrOk(db) && db->errCode ){ in sqlite3_error_offset()
2606 sqlite3_mutex_enter(db->mutex); in sqlite3_error_offset()
2607 iOffset = db->errByteOffset; in sqlite3_error_offset()
2608 sqlite3_mutex_leave(db->mutex); in sqlite3_error_offset()
2618 const void *sqlite3_errmsg16(sqlite3 *db){ in sqlite3_errmsg16() argument
2629 if( !db ){ in sqlite3_errmsg16()
2632 if( !sqlite3SafetyCheckSickOrOk(db) ){ in sqlite3_errmsg16()
2635 sqlite3_mutex_enter(db->mutex); in sqlite3_errmsg16()
2636 if( db->mallocFailed ){ in sqlite3_errmsg16()
2639 z = sqlite3_value_text16(db->pErr); in sqlite3_errmsg16()
2641 sqlite3ErrorWithMsg(db, db->errCode, sqlite3ErrStr(db->errCode)); in sqlite3_errmsg16()
2642 z = sqlite3_value_text16(db->pErr); in sqlite3_errmsg16()
2649 sqlite3OomClear(db); in sqlite3_errmsg16()
2651 sqlite3_mutex_leave(db->mutex); in sqlite3_errmsg16()
2660 int sqlite3_errcode(sqlite3 *db){ in sqlite3_errcode() argument
2661 if( db && !sqlite3SafetyCheckSickOrOk(db) ){ in sqlite3_errcode()
2664 if( !db || db->mallocFailed ){ in sqlite3_errcode()
2667 return db->errCode & db->errMask; in sqlite3_errcode()
2669 int sqlite3_extended_errcode(sqlite3 *db){ in sqlite3_extended_errcode() argument
2670 if( db && !sqlite3SafetyCheckSickOrOk(db) ){ in sqlite3_extended_errcode()
2673 if( !db || db->mallocFailed ){ in sqlite3_extended_errcode()
2676 return db->errCode; in sqlite3_extended_errcode()
2678 int sqlite3_system_errno(sqlite3 *db){ in sqlite3_system_errno() argument
2679 return db ? db->iSysErrno : 0; in sqlite3_system_errno()
2696 sqlite3* db, in createCollation() argument
2706 assert( sqlite3_mutex_held(db->mutex) ); in createCollation()
2726 pColl = sqlite3FindCollSeq(db, (u8)enc2, zName, 0); in createCollation()
2728 if( db->nVdbeActive ){ in createCollation()
2729 sqlite3ErrorWithMsg(db, SQLITE_BUSY, in createCollation()
2733 sqlite3ExpirePreparedStatements(db, 0); in createCollation()
2742 CollSeq *aColl = sqlite3HashFind(&db->aCollSeq, zName); in createCollation()
2756 pColl = sqlite3FindCollSeq(db, (u8)enc2, zName, 1); in createCollation()
2762 sqlite3Error(db, SQLITE_OK); in createCollation()
2835 int sqlite3_limit(sqlite3 *db, int limitId, int newLimit){ in sqlite3_limit() argument
2839 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_limit()
2869 oldLimit = db->aLimit[limitId]; in sqlite3_limit()
2876 db->aLimit[limitId] = newLimit; in sqlite3_limit()
3168 sqlite3 *db; /* Store allocated handle here */ in openDatabase() local
3224 db = sqlite3MallocZero( sizeof(sqlite3) ); in openDatabase()
3225 if( db==0 ) goto opendb_out; in openDatabase()
3231 db->mutex = sqlite3MutexAlloc(SQLITE_MUTEX_RECURSIVE); in openDatabase()
3232 if( db->mutex==0 ){ in openDatabase()
3233 sqlite3_free(db); in openDatabase()
3234 db = 0; in openDatabase()
3238 sqlite3MutexWarnOnContention(db->mutex); in openDatabase()
3241 sqlite3_mutex_enter(db->mutex); in openDatabase()
3242 db->errMask = (flags & SQLITE_OPEN_EXRESCODE)!=0 ? 0xffffffff : 0xff; in openDatabase()
3243 db->nDb = 2; in openDatabase()
3244 db->eOpenState = SQLITE_STATE_BUSY; in openDatabase()
3245 db->aDb = db->aDbStatic; in openDatabase()
3246 db->lookaside.bDisable = 1; in openDatabase()
3247 db->lookaside.sz = 0; in openDatabase()
3249 assert( sizeof(db->aLimit)==sizeof(aHardLimit) ); in openDatabase()
3250 memcpy(db->aLimit, aHardLimit, sizeof(db->aLimit)); in openDatabase()
3251 db->aLimit[SQLITE_LIMIT_WORKER_THREADS] = SQLITE_DEFAULT_WORKER_THREADS; in openDatabase()
3252 db->autoCommit = 1; in openDatabase()
3253 db->nextAutovac = -1; in openDatabase()
3254 db->szMmap = sqlite3GlobalConfig.szMmap; in openDatabase()
3255 db->nextPagesize = 0; in openDatabase()
3256 db->init.azInit = sqlite3StdType; /* Any array of string ptrs will do */ in openDatabase()
3263 db->nMaxSorterMmap = 0x7FFFFFFF; in openDatabase()
3265 db->flags |= SQLITE_ShortColNames in openDatabase()
3334 sqlite3HashInit(&db->aCollSeq); in openDatabase()
3336 sqlite3HashInit(&db->aModule); in openDatabase()
3346 createCollation(db, sqlite3StrBINARY, SQLITE_UTF8, 0, binCollFunc, 0); in openDatabase()
3347 createCollation(db, sqlite3StrBINARY, SQLITE_UTF16BE, 0, binCollFunc, 0); in openDatabase()
3348 createCollation(db, sqlite3StrBINARY, SQLITE_UTF16LE, 0, binCollFunc, 0); in openDatabase()
3349 createCollation(db, "NOCASE", SQLITE_UTF8, 0, nocaseCollatingFunc, 0); in openDatabase()
3350 createCollation(db, "RTRIM", SQLITE_UTF8, 0, rtrimCollFunc, 0); in openDatabase()
3351 if( db->mallocFailed ){ in openDatabase()
3380 db->openFlags = flags; in openDatabase()
3390 rc = sqlite3ParseUri(zVfs, zFilename, &flags, &db->pVfs, &zOpen, &zErrMsg); in openDatabase()
3393 if( rc==SQLITE_NOMEM ) sqlite3OomFault(db); in openDatabase()
3394 sqlite3ErrorWithMsg(db, rc, zErrMsg ? "%s" : 0, zErrMsg); in openDatabase()
3398 assert( db->pVfs!=0 ); in openDatabase()
3400 if( sqlite3_stricmp(db->pVfs->zName, "kvvfs")==0 ){ in openDatabase()
3401 db->temp_store = 2; in openDatabase()
3406 rc = sqlite3BtreeOpen(db->pVfs, zOpen, db, &db->aDb[0].pBt, 0, in openDatabase()
3412 sqlite3Error(db, rc); in openDatabase()
3415 sqlite3BtreeEnter(db->aDb[0].pBt); in openDatabase()
3416 db->aDb[0].pSchema = sqlite3SchemaGet(db, db->aDb[0].pBt); in openDatabase()
3417 if( !db->mallocFailed ){ in openDatabase()
3418 sqlite3SetTextEncoding(db, SCHEMA_ENC(db)); in openDatabase()
3420 sqlite3BtreeLeave(db->aDb[0].pBt); in openDatabase()
3421 db->aDb[1].pSchema = sqlite3SchemaGet(db, 0); in openDatabase()
3426 db->aDb[0].zDbSName = "main"; in openDatabase()
3427 db->aDb[0].safety_level = SQLITE_DEFAULT_SYNCHRONOUS+1; in openDatabase()
3428 db->aDb[1].zDbSName = "temp"; in openDatabase()
3429 db->aDb[1].safety_level = PAGER_SYNCHRONOUS_OFF; in openDatabase()
3431 db->eOpenState = SQLITE_STATE_OPEN; in openDatabase()
3432 if( db->mallocFailed ){ in openDatabase()
3440 sqlite3Error(db, SQLITE_OK); in openDatabase()
3441 sqlite3RegisterPerConnectionBuiltinFunctions(db); in openDatabase()
3442 rc = sqlite3_errcode(db); in openDatabase()
3447 rc = sqlite3BuiltinExtensions[i](db); in openDatabase()
3454 sqlite3AutoLoadExtensions(db); in openDatabase()
3455 rc = sqlite3_errcode(db); in openDatabase()
3465 db->mDbFlags |= DBFLAG_InternalFunc; in openDatabase()
3473 db->dfltLockMode = SQLITE_DEFAULT_LOCKING_MODE; in openDatabase()
3474 sqlite3PagerLockingMode(sqlite3BtreePager(db->aDb[0].pBt), in openDatabase()
3478 if( rc ) sqlite3Error(db, rc); in openDatabase()
3481 setupLookaside(db, 0, sqlite3GlobalConfig.szLookaside, in openDatabase()
3484 sqlite3_wal_autocheckpoint(db, SQLITE_DEFAULT_WAL_AUTOCHECKPOINT); in openDatabase()
3487 if( db ){ in openDatabase()
3488 assert( db->mutex!=0 || isThreadsafe==0 in openDatabase()
3490 sqlite3_mutex_leave(db->mutex); in openDatabase()
3492 rc = sqlite3_errcode(db); in openDatabase()
3493 assert( db!=0 || (rc&0xff)==SQLITE_NOMEM ); in openDatabase()
3495 sqlite3_close(db); in openDatabase()
3496 db = 0; in openDatabase()
3498 db->eOpenState = SQLITE_STATE_SICK; in openDatabase()
3500 *ppDb = db; in openDatabase()
3505 sqlite3GlobalConfig.xSqllog(pArg, db, zFilename, 0); in openDatabase()
3576 sqlite3* db, in sqlite3_create_collation() argument
3582 return sqlite3_create_collation_v2(db, zName, enc, pCtx, xCompare, 0); in sqlite3_create_collation()
3589 sqlite3* db, in sqlite3_create_collation_v2() argument
3599 if( !sqlite3SafetyCheckOk(db) || zName==0 ) return SQLITE_MISUSE_BKPT; in sqlite3_create_collation_v2()
3601 sqlite3_mutex_enter(db->mutex); in sqlite3_create_collation_v2()
3602 assert( !db->mallocFailed ); in sqlite3_create_collation_v2()
3603 rc = createCollation(db, zName, (u8)enc, pCtx, xCompare, xDel); in sqlite3_create_collation_v2()
3604 rc = sqlite3ApiExit(db, rc); in sqlite3_create_collation_v2()
3605 sqlite3_mutex_leave(db->mutex); in sqlite3_create_collation_v2()
3614 sqlite3* db, in sqlite3_create_collation16() argument
3624 if( !sqlite3SafetyCheckOk(db) || zName==0 ) return SQLITE_MISUSE_BKPT; in sqlite3_create_collation16()
3626 sqlite3_mutex_enter(db->mutex); in sqlite3_create_collation16()
3627 assert( !db->mallocFailed ); in sqlite3_create_collation16()
3628 zName8 = sqlite3Utf16to8(db, zName, -1, SQLITE_UTF16NATIVE); in sqlite3_create_collation16()
3630 rc = createCollation(db, zName8, (u8)enc, pCtx, xCompare, 0); in sqlite3_create_collation16()
3631 sqlite3DbFree(db, zName8); in sqlite3_create_collation16()
3633 rc = sqlite3ApiExit(db, rc); in sqlite3_create_collation16()
3634 sqlite3_mutex_leave(db->mutex); in sqlite3_create_collation16()
3644 sqlite3 *db, in sqlite3_collation_needed() argument
3649 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_collation_needed()
3651 sqlite3_mutex_enter(db->mutex); in sqlite3_collation_needed()
3652 db->xCollNeeded = xCollNeeded; in sqlite3_collation_needed()
3653 db->xCollNeeded16 = 0; in sqlite3_collation_needed()
3654 db->pCollNeededArg = pCollNeededArg; in sqlite3_collation_needed()
3655 sqlite3_mutex_leave(db->mutex); in sqlite3_collation_needed()
3665 sqlite3 *db, in sqlite3_collation_needed16() argument
3670 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_collation_needed16()
3672 sqlite3_mutex_enter(db->mutex); in sqlite3_collation_needed16()
3673 db->xCollNeeded = 0; in sqlite3_collation_needed16()
3674 db->xCollNeeded16 = xCollNeeded16; in sqlite3_collation_needed16()
3675 db->pCollNeededArg = pCollNeededArg; in sqlite3_collation_needed16()
3676 sqlite3_mutex_leave(db->mutex); in sqlite3_collation_needed16()
3697 int sqlite3_get_autocommit(sqlite3 *db){ in sqlite3_get_autocommit() argument
3699 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_get_autocommit()
3704 return db->autoCommit; in sqlite3_get_autocommit()
3771 sqlite3 *db, /* Connection handle */ in sqlite3_table_column_metadata() argument
3794 if( !sqlite3SafetyCheckOk(db) || zTableName==0 ){ in sqlite3_table_column_metadata()
3800 sqlite3_mutex_enter(db->mutex); in sqlite3_table_column_metadata()
3801 sqlite3BtreeEnterAll(db); in sqlite3_table_column_metadata()
3802 rc = sqlite3Init(db, &zErrMsg); in sqlite3_table_column_metadata()
3808 pTab = sqlite3FindTable(db, zTableName, zDbName); in sqlite3_table_column_metadata()
3860 sqlite3BtreeLeaveAll(db); in sqlite3_table_column_metadata()
3873 sqlite3DbFree(db, zErrMsg); in sqlite3_table_column_metadata()
3874 zErrMsg = sqlite3MPrintf(db, "no such table column: %s.%s", zTableName, in sqlite3_table_column_metadata()
3878 sqlite3ErrorWithMsg(db, rc, (zErrMsg?"%s":0), zErrMsg); in sqlite3_table_column_metadata()
3879 sqlite3DbFree(db, zErrMsg); in sqlite3_table_column_metadata()
3880 rc = sqlite3ApiExit(db, rc); in sqlite3_table_column_metadata()
3881 sqlite3_mutex_leave(db->mutex); in sqlite3_table_column_metadata()
3904 int sqlite3_extended_result_codes(sqlite3 *db, int onoff){ in sqlite3_extended_result_codes() argument
3906 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_extended_result_codes()
3908 sqlite3_mutex_enter(db->mutex); in sqlite3_extended_result_codes()
3909 db->errMask = onoff ? 0xffffffff : 0xff; in sqlite3_extended_result_codes()
3910 sqlite3_mutex_leave(db->mutex); in sqlite3_extended_result_codes()
3917 int sqlite3_file_control(sqlite3 *db, const char *zDbName, int op, void *pArg){ in sqlite3_file_control() argument
3922 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_file_control()
3924 sqlite3_mutex_enter(db->mutex); in sqlite3_file_control()
3925 pBtree = sqlite3DbNameToBtree(db, zDbName); in sqlite3_file_control()
3954 int nSave = db->busyHandler.nBusy; in sqlite3_file_control()
3956 db->busyHandler.nBusy = nSave; in sqlite3_file_control()
3960 sqlite3_mutex_leave(db->mutex); in sqlite3_file_control()
4018 sqlite3 *db = va_arg(ap, sqlite3*); in sqlite3_test_control() local
4019 assert( db==0 || db->aDb[0].pSchema!=0 ); in sqlite3_test_control()
4020 if( db && (y = db->aDb[0].pSchema->schema_cookie)!=0 ){ x = y; } in sqlite3_test_control()
4207 sqlite3 *db = va_arg(ap, sqlite3*); in sqlite3_test_control() local
4208 db->dbOptFlags = va_arg(ap, u32); in sqlite3_test_control()
4242 sqlite3 *db = va_arg(ap, sqlite3*); in sqlite3_test_control() local
4243 db->mDbFlags ^= DBFLAG_InternalFunc; in sqlite3_test_control()
4304 sqlite3 *db = va_arg(ap, sqlite3*); in sqlite3_test_control() local
4305 db->nMaxSorterMmap = va_arg(ap, int); in sqlite3_test_control()
4336 sqlite3 *db = va_arg(ap, sqlite3*); in sqlite3_test_control() local
4338 sqlite3_mutex_enter(db->mutex); in sqlite3_test_control()
4339 iDb = sqlite3FindDbName(db, va_arg(ap,const char*)); in sqlite3_test_control()
4341 db->init.iDb = iDb; in sqlite3_test_control()
4342 db->init.busy = db->init.imposterTable = va_arg(ap,int); in sqlite3_test_control()
4343 db->init.newTnum = va_arg(ap,int); in sqlite3_test_control()
4344 if( db->init.busy==0 && db->init.newTnum>0 ){ in sqlite3_test_control()
4345 sqlite3ResetAllSchemasOfConnection(db); in sqlite3_test_control()
4348 sqlite3_mutex_leave(db->mutex); in sqlite3_test_control()
4394 sqlite3 *db = va_arg(ap, sqlite3*); in sqlite3_test_control() local
4396 *pn = sqlite3BtreeSeekCount(db->aDb->pBt); in sqlite3_test_control()
4397 (void)db; /* Silence harmless unused variable warning */ in sqlite3_test_control()
4649 Btree *sqlite3DbNameToBtree(sqlite3 *db, const char *zDbName){ in sqlite3DbNameToBtree() argument
4650 int iDb = zDbName ? sqlite3FindDbName(db, zDbName) : 0; in sqlite3DbNameToBtree()
4651 return iDb<0 ? 0 : db->aDb[iDb].pBt; in sqlite3DbNameToBtree()
4658 const char *sqlite3_db_name(sqlite3 *db, int N){ in sqlite3_db_name() argument
4660 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_db_name()
4665 if( N<0 || N>=db->nDb ){ in sqlite3_db_name()
4668 return db->aDb[N].zDbSName; in sqlite3_db_name()
4676 const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName){ in sqlite3_db_filename() argument
4679 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_db_filename()
4684 pBt = sqlite3DbNameToBtree(db, zDbName); in sqlite3_db_filename()
4692 int sqlite3_db_readonly(sqlite3 *db, const char *zDbName){ in sqlite3_db_readonly() argument
4695 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_db_readonly()
4700 pBt = sqlite3DbNameToBtree(db, zDbName); in sqlite3_db_readonly()
4710 sqlite3 *db, in sqlite3_snapshot_get() argument
4718 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_snapshot_get()
4722 sqlite3_mutex_enter(db->mutex); in sqlite3_snapshot_get()
4724 if( db->autoCommit==0 ){ in sqlite3_snapshot_get()
4725 int iDb = sqlite3FindDbName(db, zDb); in sqlite3_snapshot_get()
4727 Btree *pBt = db->aDb[iDb].pBt; in sqlite3_snapshot_get()
4737 sqlite3_mutex_leave(db->mutex); in sqlite3_snapshot_get()
4746 sqlite3 *db, in sqlite3_snapshot_open() argument
4754 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_snapshot_open()
4758 sqlite3_mutex_enter(db->mutex); in sqlite3_snapshot_open()
4759 if( db->autoCommit==0 ){ in sqlite3_snapshot_open()
4761 iDb = sqlite3FindDbName(db, zDb); in sqlite3_snapshot_open()
4763 Btree *pBt = db->aDb[iDb].pBt; in sqlite3_snapshot_open()
4768 if( db->nVdbeActive==0 ){ in sqlite3_snapshot_open()
4792 sqlite3_mutex_leave(db->mutex); in sqlite3_snapshot_open()
4801 int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb){ in sqlite3_snapshot_recover() argument
4807 if( !sqlite3SafetyCheckOk(db) ){ in sqlite3_snapshot_recover()
4812 sqlite3_mutex_enter(db->mutex); in sqlite3_snapshot_recover()
4813 iDb = sqlite3FindDbName(db, zDb); in sqlite3_snapshot_recover()
4815 Btree *pBt = db->aDb[iDb].pBt; in sqlite3_snapshot_recover()
4824 sqlite3_mutex_leave(db->mutex); in sqlite3_snapshot_recover()