Lines Matching refs:db

40   sqlite3 *db,                    /* Database in which module is registered */  in sqlite3VtabCreateModule()  argument
56 sqlite3OomFault(db); in sqlite3VtabCreateModule()
68 pDel = (Module *)sqlite3HashInsert(&db->aModule,zCopy,(void*)pMod); in sqlite3VtabCreateModule()
71 sqlite3OomFault(db); in sqlite3VtabCreateModule()
72 sqlite3DbFree(db, pDel); in sqlite3VtabCreateModule()
75 sqlite3VtabEponymousTableClear(db, pDel); in sqlite3VtabCreateModule()
76 sqlite3VtabModuleUnref(db, pDel); in sqlite3VtabCreateModule()
88 sqlite3 *db, /* Database in which module is registered */ in createModule() argument
96 sqlite3_mutex_enter(db->mutex); in createModule()
97 (void)sqlite3VtabCreateModule(db, zName, pModule, pAux, xDestroy); in createModule()
98 rc = sqlite3ApiExit(db, rc); in createModule()
100 sqlite3_mutex_leave(db->mutex); in createModule()
109 sqlite3 *db, /* Database in which module is registered */ in sqlite3_create_module() argument
115 if( !sqlite3SafetyCheckOk(db) || zName==0 ) return SQLITE_MISUSE_BKPT; in sqlite3_create_module()
117 return createModule(db, zName, pModule, pAux, 0); in sqlite3_create_module()
124 sqlite3 *db, /* Database in which module is registered */ in sqlite3_create_module_v2() argument
131 if( !sqlite3SafetyCheckOk(db) || zName==0 ) return SQLITE_MISUSE_BKPT; in sqlite3_create_module_v2()
133 return createModule(db, zName, pModule, pAux, xDestroy); in sqlite3_create_module_v2()
140 int sqlite3_drop_modules(sqlite3 *db, const char** azNames){ in sqlite3_drop_modules() argument
143 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_drop_modules()
145 for(pThis=sqliteHashFirst(&db->aModule); pThis; pThis=pNext){ in sqlite3_drop_modules()
153 createModule(db, pMod->zName, 0, 0, 0); in sqlite3_drop_modules()
162 void sqlite3VtabModuleUnref(sqlite3 *db, Module *pMod){ in sqlite3VtabModuleUnref() argument
170 sqlite3DbFree(db, pMod); in sqlite3VtabModuleUnref()
192 VTable *sqlite3GetVTable(sqlite3 *db, Table *pTab){ in sqlite3GetVTable() argument
195 for(pVtab=pTab->u.vtab.p; pVtab && pVtab->db!=db; pVtab=pVtab->pNext); in sqlite3GetVTable()
204 sqlite3 *db = pVTab->db; in sqlite3VtabUnlock() local
206 assert( db ); in sqlite3VtabUnlock()
208 assert( db->eOpenState==SQLITE_STATE_OPEN in sqlite3VtabUnlock()
209 || db->eOpenState==SQLITE_STATE_ZOMBIE ); in sqlite3VtabUnlock()
214 sqlite3VtabModuleUnref(pVTab->db, pVTab->pMod); in sqlite3VtabUnlock()
218 sqlite3DbFree(db, pVTab); in sqlite3VtabUnlock()
229 static VTable *vtabDisconnectAll(sqlite3 *db, Table *p){ in vtabDisconnectAll() argument
243 assert( db==0 || sqlite3SchemaMutexHeld(db, 0, p->pSchema) ); in vtabDisconnectAll()
246 sqlite3 *db2 = pVTable->db; in vtabDisconnectAll()
249 if( db2==db ){ in vtabDisconnectAll()
260 assert( !db || pRet ); in vtabDisconnectAll()
272 void sqlite3VtabDisconnect(sqlite3 *db, Table *p){ in sqlite3VtabDisconnect() argument
276 assert( sqlite3BtreeHoldsAllMutexes(db) ); in sqlite3VtabDisconnect()
277 assert( sqlite3_mutex_held(db->mutex) ); in sqlite3VtabDisconnect()
280 if( (*ppVTab)->db==db ){ in sqlite3VtabDisconnect()
310 void sqlite3VtabUnlockList(sqlite3 *db){ in sqlite3VtabUnlockList() argument
311 VTable *p = db->pDisconnect; in sqlite3VtabUnlockList()
313 assert( sqlite3BtreeHoldsAllMutexes(db) ); in sqlite3VtabUnlockList()
314 assert( sqlite3_mutex_held(db->mutex) ); in sqlite3VtabUnlockList()
317 db->pDisconnect = 0; in sqlite3VtabUnlockList()
318 sqlite3ExpirePreparedStatements(db, 0); in sqlite3VtabUnlockList()
341 void sqlite3VtabClear(sqlite3 *db, Table *p){ in sqlite3VtabClear() argument
343 assert( db!=0 ); in sqlite3VtabClear()
344 if( db->pnBytesFreed==0 ) vtabDisconnectAll(0, p); in sqlite3VtabClear()
348 if( i!=1 ) sqlite3DbFree(db, p->u.vtab.azArg[i]); in sqlite3VtabClear()
350 sqlite3DbFree(db, p->u.vtab.azArg); in sqlite3VtabClear()
363 sqlite3 *db = pParse->db; in addModuleArgument() local
367 if( pTable->u.vtab.nArg+3>=db->aLimit[SQLITE_LIMIT_COLUMN] ){ in addModuleArgument()
370 azModuleArg = sqlite3DbRealloc(db, pTable->u.vtab.azArg, nBytes); in addModuleArgument()
372 sqlite3DbFree(db, zArg); in addModuleArgument()
394 sqlite3 *db; /* Database connection */ in sqlite3VtabBeginParse() local
402 db = pParse->db; in sqlite3VtabBeginParse()
405 addModuleArgument(pParse, pTable, sqlite3NameFromToken(db, pModuleName)); in sqlite3VtabBeginParse()
407 addModuleArgument(pParse, pTable, sqlite3DbStrDup(db, pTable->zName)); in sqlite3VtabBeginParse()
422 int iDb = sqlite3SchemaToIndex(db, pTable->pSchema); in sqlite3VtabBeginParse()
425 pTable->u.vtab.azArg[0], pParse->db->aDb[iDb].zDbSName); in sqlite3VtabBeginParse()
439 sqlite3 *db = pParse->db; in addArgumentToVtab() local
440 addModuleArgument(pParse, pParse->pNewTable, sqlite3DbStrNDup(db, z, n)); in addArgumentToVtab()
450 sqlite3 *db = pParse->db; /* The database connection */ in sqlite3VtabFinishParse() local
464 if( !db->init.busy ){ in sqlite3VtabFinishParse()
477 zStmt = sqlite3MPrintf(db, "CREATE VIRTUAL TABLE %T", &pParse->sNameToken); in sqlite3VtabFinishParse()
487 iDb = sqlite3SchemaToIndex(db, pTab->pSchema); in sqlite3VtabFinishParse()
492 db->aDb[iDb].zDbSName, in sqlite3VtabFinishParse()
502 zWhere = sqlite3MPrintf(db, "name=%Q AND sql=%Q", pTab->zName, zStmt); in sqlite3VtabFinishParse()
504 sqlite3DbFree(db, zStmt); in sqlite3VtabFinishParse()
516 sqlite3MarkAllShadowTablesOf(db, pTab); in sqlite3VtabFinishParse()
519 sqlite3OomFault(db); in sqlite3VtabFinishParse()
558 sqlite3 *db, in vtabCallConstructor() argument
578 for(pCtx=db->pVtabCtx; pCtx; pCtx=pCtx->pPrior){ in vtabCallConstructor()
580 *pzErr = sqlite3MPrintf(db, in vtabCallConstructor()
587 zModuleName = sqlite3DbStrDup(db, pTab->zName); in vtabCallConstructor()
594 sqlite3OomFault(db); in vtabCallConstructor()
595 sqlite3DbFree(db, zModuleName); in vtabCallConstructor()
598 pVTable->db = db; in vtabCallConstructor()
602 iDb = sqlite3SchemaToIndex(db, pTab->pSchema); in vtabCallConstructor()
603 pTab->u.vtab.azArg[1] = db->aDb[iDb].zDbSName; in vtabCallConstructor()
606 assert( &db->pVtabCtx ); in vtabCallConstructor()
610 sCtx.pPrior = db->pVtabCtx; in vtabCallConstructor()
612 db->pVtabCtx = &sCtx; in vtabCallConstructor()
613 rc = xConstruct(db, pMod->pAux, nArg, azArg, &pVTable->pVtab, &zErr); in vtabCallConstructor()
614 db->pVtabCtx = sCtx.pPrior; in vtabCallConstructor()
615 if( rc==SQLITE_NOMEM ) sqlite3OomFault(db); in vtabCallConstructor()
620 *pzErr = sqlite3MPrintf(db, "vtable constructor failed: %s", zModuleName); in vtabCallConstructor()
622 *pzErr = sqlite3MPrintf(db, "%s", zErr); in vtabCallConstructor()
625 sqlite3DbFree(db, pVTable); in vtabCallConstructor()
635 *pzErr = sqlite3MPrintf(db, zFormat, pTab->zName); in vtabCallConstructor()
682 sqlite3DbFree(db, zModuleName); in vtabCallConstructor()
694 sqlite3 *db = pParse->db; in sqlite3VtabCallConnect() local
701 if( sqlite3GetVTable(db, pTab) ){ in sqlite3VtabCallConnect()
707 pMod = (Module*)sqlite3HashFind(&db->aModule, zMod); in sqlite3VtabCallConnect()
715 rc = vtabCallConstructor(db, pTab, pMod, pMod->pModule->xConnect, &zErr); in sqlite3VtabCallConnect()
720 sqlite3DbFree(db, zErr); in sqlite3VtabCallConnect()
729 static int growVTrans(sqlite3 *db){ in growVTrans() argument
733 if( (db->nVTrans%ARRAY_INCR)==0 ){ in growVTrans()
736 ((sqlite3_int64)db->nVTrans + ARRAY_INCR); in growVTrans()
737 aVTrans = sqlite3DbRealloc(db, (void *)db->aVTrans, nBytes); in growVTrans()
741 memset(&aVTrans[db->nVTrans], 0, sizeof(sqlite3_vtab *)*ARRAY_INCR); in growVTrans()
742 db->aVTrans = aVTrans; in growVTrans()
752 static void addToVTrans(sqlite3 *db, VTable *pVTab){ in addToVTrans() argument
754 db->aVTrans[db->nVTrans++] = pVTab; in addToVTrans()
766 int sqlite3VtabCallCreate(sqlite3 *db, int iDb, const char *zTab, char **pzErr){ in sqlite3VtabCallCreate() argument
772 pTab = sqlite3FindTable(db, zTab, db->aDb[iDb].zDbSName); in sqlite3VtabCallCreate()
777 pMod = (Module*)sqlite3HashFind(&db->aModule, zMod); in sqlite3VtabCallCreate()
784 *pzErr = sqlite3MPrintf(db, "no such module: %s", zMod); in sqlite3VtabCallCreate()
787 rc = vtabCallConstructor(db, pTab, pMod, pMod->pModule->xCreate, pzErr); in sqlite3VtabCallCreate()
792 if( rc==SQLITE_OK && ALWAYS(sqlite3GetVTable(db, pTab)) ){ in sqlite3VtabCallCreate()
793 rc = growVTrans(db); in sqlite3VtabCallCreate()
795 addToVTrans(db, sqlite3GetVTable(db, pTab)); in sqlite3VtabCallCreate()
807 int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){ in sqlite3_declare_vtab() argument
815 if( !sqlite3SafetyCheckOk(db) || zCreateTable==0 ){ in sqlite3_declare_vtab()
819 sqlite3_mutex_enter(db->mutex); in sqlite3_declare_vtab()
820 pCtx = db->pVtabCtx; in sqlite3_declare_vtab()
822 sqlite3Error(db, SQLITE_MISUSE); in sqlite3_declare_vtab()
823 sqlite3_mutex_leave(db->mutex); in sqlite3_declare_vtab()
829 sqlite3ParseObjectInit(&sParse, db); in sqlite3_declare_vtab()
835 assert( db->init.busy==0 ); in sqlite3_declare_vtab()
836 initBusy = db->init.busy; in sqlite3_declare_vtab()
837 db->init.busy = 0; in sqlite3_declare_vtab()
841 && ALWAYS(!db->mallocFailed) in sqlite3_declare_vtab()
849 sqlite3ExprListDelete(db, pNew->u.tab.pDfltList); in sqlite3_declare_vtab()
874 sqlite3ErrorWithMsg(db, SQLITE_ERROR, in sqlite3_declare_vtab()
876 sqlite3DbFree(db, sParse.zErrMsg); in sqlite3_declare_vtab()
884 sqlite3DeleteTable(db, sParse.pNewTable); in sqlite3_declare_vtab()
886 db->init.busy = initBusy; in sqlite3_declare_vtab()
889 rc = sqlite3ApiExit(db, rc); in sqlite3_declare_vtab()
890 sqlite3_mutex_leave(db->mutex); in sqlite3_declare_vtab()
901 int sqlite3VtabCallDestroy(sqlite3 *db, int iDb, const char *zTab){ in sqlite3VtabCallDestroy() argument
905 pTab = sqlite3FindTable(db, zTab, db->aDb[iDb].zDbSName); in sqlite3VtabCallDestroy()
918 p = vtabDisconnectAll(db, pTab); in sqlite3VtabCallDestroy()
931 sqlite3DeleteTable(db, pTab); in sqlite3VtabCallDestroy()
945 static void callFinaliser(sqlite3 *db, int offset){ in callFinaliser() argument
947 if( db->aVTrans ){ in callFinaliser()
948 VTable **aVTrans = db->aVTrans; in callFinaliser()
949 db->aVTrans = 0; in callFinaliser()
950 for(i=0; i<db->nVTrans; i++){ in callFinaliser()
961 sqlite3DbFree(db, aVTrans); in callFinaliser()
962 db->nVTrans = 0; in callFinaliser()
973 int sqlite3VtabSync(sqlite3 *db, Vdbe *p){ in sqlite3VtabSync() argument
976 VTable **aVTrans = db->aVTrans; in sqlite3VtabSync()
978 db->aVTrans = 0; in sqlite3VtabSync()
979 for(i=0; rc==SQLITE_OK && i<db->nVTrans; i++){ in sqlite3VtabSync()
987 db->aVTrans = aVTrans; in sqlite3VtabSync()
995 int sqlite3VtabRollback(sqlite3 *db){ in sqlite3VtabRollback() argument
996 callFinaliser(db, offsetof(sqlite3_module,xRollback)); in sqlite3VtabRollback()
1004 int sqlite3VtabCommit(sqlite3 *db){ in sqlite3VtabCommit() argument
1005 callFinaliser(db, offsetof(sqlite3_module,xCommit)); in sqlite3VtabCommit()
1017 int sqlite3VtabBegin(sqlite3 *db, VTable *pVTab){ in sqlite3VtabBegin() argument
1026 if( sqlite3VtabInSync(db) ){ in sqlite3VtabBegin()
1038 for(i=0; i<db->nVTrans; i++){ in sqlite3VtabBegin()
1039 if( db->aVTrans[i]==pVTab ){ in sqlite3VtabBegin()
1046 rc = growVTrans(db); in sqlite3VtabBegin()
1050 int iSvpt = db->nStatement + db->nSavepoint; in sqlite3VtabBegin()
1051 addToVTrans(db, pVTab); in sqlite3VtabBegin()
1077 int sqlite3VtabSavepoint(sqlite3 *db, int op, int iSavepoint){ in sqlite3VtabSavepoint() argument
1082 if( db->aVTrans ){ in sqlite3VtabSavepoint()
1084 for(i=0; rc==SQLITE_OK && i<db->nVTrans; i++){ in sqlite3VtabSavepoint()
1085 VTable *pVTab = db->aVTrans[i]; in sqlite3VtabSavepoint()
1126 sqlite3 *db, /* Database connection for reporting malloc problems */ in sqlite3VtabOverloadFunction() argument
1146 pVtab = sqlite3GetVTable(db, pTab)->pVtab; in sqlite3VtabOverloadFunction()
1175 pNew = sqlite3DbMallocZero(db, sizeof(*pNew) in sqlite3VtabOverloadFunction()
1210 sqlite3OomFault(pToplevel->db); in sqlite3VtabMakeWritable()
1234 sqlite3 *db = pParse->db; in sqlite3VtabEponymousTableInit() local
1237 pTab = sqlite3DbMallocZero(db, sizeof(Table)); in sqlite3VtabEponymousTableInit()
1239 pTab->zName = sqlite3DbStrDup(db, pMod->zName); in sqlite3VtabEponymousTableInit()
1241 sqlite3DbFree(db, pTab); in sqlite3VtabEponymousTableInit()
1247 pTab->pSchema = db->aDb[0].pSchema; in sqlite3VtabEponymousTableInit()
1251 addModuleArgument(pParse, pTab, sqlite3DbStrDup(db, pTab->zName)); in sqlite3VtabEponymousTableInit()
1253 addModuleArgument(pParse, pTab, sqlite3DbStrDup(db, pTab->zName)); in sqlite3VtabEponymousTableInit()
1254 rc = vtabCallConstructor(db, pTab, pMod, pModule->xConnect, &zErr); in sqlite3VtabEponymousTableInit()
1257 sqlite3DbFree(db, zErr); in sqlite3VtabEponymousTableInit()
1258 sqlite3VtabEponymousTableClear(db, pMod); in sqlite3VtabEponymousTableInit()
1267 void sqlite3VtabEponymousTableClear(sqlite3 *db, Module *pMod){ in sqlite3VtabEponymousTableClear() argument
1274 sqlite3DeleteTable(db, pTab); in sqlite3VtabEponymousTableClear()
1286 int sqlite3_vtab_on_conflict(sqlite3 *db){ in sqlite3_vtab_on_conflict() argument
1291 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_vtab_on_conflict()
1295 assert( db->vtabOnConflict>=1 && db->vtabOnConflict<=5 ); in sqlite3_vtab_on_conflict()
1296 return (int)aMap[db->vtabOnConflict-1]; in sqlite3_vtab_on_conflict()
1304 int sqlite3_vtab_config(sqlite3 *db, int op, ...){ in sqlite3_vtab_config() argument
1310 if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; in sqlite3_vtab_config()
1312 sqlite3_mutex_enter(db->mutex); in sqlite3_vtab_config()
1313 p = db->pVtabCtx; in sqlite3_vtab_config()
1340 if( rc!=SQLITE_OK ) sqlite3Error(db, rc); in sqlite3_vtab_config()
1341 sqlite3_mutex_leave(db->mutex); in sqlite3_vtab_config()