Lines Matching refs:pSession
444 static void *sessionMalloc64(sqlite3_session *pSession, i64 nByte){ in sessionMalloc64() argument
446 if( pSession ) pSession->nMalloc += sqlite3_msize(pRet); in sessionMalloc64()
455 static void sessionFree(sqlite3_session *pSession, void *pFree){ in sessionFree() argument
456 if( pSession ) pSession->nMalloc -= sqlite3_msize(pFree); in sessionFree()
516 sqlite3_session *pSession, /* Session object that owns pTab */ in sessionPreupdateHash() argument
526 assert( pTab->nCol==pSession->hook.xCount(pSession->hook.pCtx) ); in sessionPreupdateHash()
534 rc = pSession->hook.xNew(pSession->hook.pCtx, i, &pVal); in sessionPreupdateHash()
536 rc = pSession->hook.xOld(pSession->hook.pCtx, i, &pVal); in sessionPreupdateHash()
848 sqlite3_session *pSession, /* Session object that owns SessionTable */ in sessionPreupdateEqual() argument
872 rc = pSession->hook.xNew(pSession->hook.pCtx, iCol, &pVal); in sessionPreupdateEqual()
875 rc = pSession->hook.xOld(pSession->hook.pCtx, iCol, &pVal); in sessionPreupdateEqual()
927 sqlite3_session *pSession, /* For memory accounting. May be NULL */ in sessionGrowHash() argument
937 pSession, sizeof(SessionChange*) * nNew in sessionGrowHash()
959 sessionFree(pSession, pTab->apChange); in sessionGrowHash()
993 sqlite3_session *pSession, /* For memory accounting. May be NULL */ in sessionTableInfo() argument
1064 pAlloc = sessionMalloc64(pSession, nByte); in sessionTableInfo()
1107 sessionFree(pSession, azCol); in sessionTableInfo()
1125 static int sessionInitTable(sqlite3_session *pSession, SessionTable *pTab){ in sessionInitTable() argument
1129 pSession->rc = sessionTableInfo(pSession, pSession->db, pSession->zDb, in sessionInitTable()
1132 if( pSession->rc==SQLITE_OK ){ in sessionInitTable()
1144 if( pSession->bEnableSize ){ in sessionInitTable()
1145 pSession->nMaxChangesetSize += ( in sessionInitTable()
1151 return (pSession->rc || pTab->abPK==0); in sessionInitTable()
1163 sqlite3_session *pSession; member
1170 pVal = p->pSession->pZeroBlob; in sessionStat1Old()
1180 pVal = p->pSession->pZeroBlob; in sessionStat1New()
1196 sqlite3_session *pSession, /* Session object pTab is attached to */ in sessionUpdateMaxSize() argument
1206 pSession->hook.xNew(pSession->hook.pCtx, ii, &p); in sessionUpdateMaxSize()
1212 if( sqlite3_preupdate_blobwrite(pSession->db)>=0 ){ in sessionUpdateMaxSize()
1223 pSession->hook.xNew(pSession->hook.pCtx, ii, &p); in sessionUpdateMaxSize()
1287 pSession->nMaxChangesetSize += nIncr; in sessionUpdateMaxSize()
1302 sqlite3_session *pSession, /* Session object pTab is attached to */ in sessionPreupdateOneChange() argument
1310 if( pSession->rc ) return; in sessionPreupdateOneChange()
1313 if( sessionInitTable(pSession, pTab) ) return; in sessionPreupdateOneChange()
1317 if( pTab->nCol!=pSession->hook.xCount(pSession->hook.pCtx) ){ in sessionPreupdateOneChange()
1318 pSession->rc = SQLITE_SCHEMA; in sessionPreupdateOneChange()
1323 if( sessionGrowHash(pSession, 0, pTab) ){ in sessionPreupdateOneChange()
1324 pSession->rc = SQLITE_NOMEM; in sessionPreupdateOneChange()
1329 stat1.hook = pSession->hook; in sessionPreupdateOneChange()
1330 stat1.pSession = pSession; in sessionPreupdateOneChange()
1331 pSession->hook.pCtx = (void*)&stat1; in sessionPreupdateOneChange()
1332 pSession->hook.xNew = sessionStat1New; in sessionPreupdateOneChange()
1333 pSession->hook.xOld = sessionStat1Old; in sessionPreupdateOneChange()
1334 pSession->hook.xCount = sessionStat1Count; in sessionPreupdateOneChange()
1335 pSession->hook.xDepth = sessionStat1Depth; in sessionPreupdateOneChange()
1336 if( pSession->pZeroBlob==0 ){ in sessionPreupdateOneChange()
1343 pSession->pZeroBlob = p; in sessionPreupdateOneChange()
1350 rc = sessionPreupdateHash(pSession, pTab, op==SQLITE_INSERT, &iHash, &bNull); in sessionPreupdateOneChange()
1357 if( sessionPreupdateEqual(pSession, pTab, pC, op) ) break; in sessionPreupdateOneChange()
1375 TESTONLY(int trc = ) pSession->hook.xOld(pSession->hook.pCtx, i, &p); in sessionPreupdateOneChange()
1378 TESTONLY(int trc = ) pSession->hook.xNew(pSession->hook.pCtx, i, &p); in sessionPreupdateOneChange()
1389 pC = (SessionChange *)sessionMalloc64(pSession, nByte); in sessionPreupdateOneChange()
1406 pSession->hook.xOld(pSession->hook.pCtx, i, &p); in sessionPreupdateOneChange()
1408 pSession->hook.xNew(pSession->hook.pCtx, i, &p); in sessionPreupdateOneChange()
1414 if( pSession->bIndirect || pSession->hook.xDepth(pSession->hook.pCtx) ){ in sessionPreupdateOneChange()
1425 if( pSession->hook.xDepth(pSession->hook.pCtx)==0 in sessionPreupdateOneChange()
1426 && pSession->bIndirect==0 in sessionPreupdateOneChange()
1433 if( pSession->bEnableSize ){ in sessionPreupdateOneChange()
1434 rc = sessionUpdateMaxSize(op, pSession, pTab, pC); in sessionPreupdateOneChange()
1442 pSession->hook = stat1.hook; in sessionPreupdateOneChange()
1445 pSession->rc = rc; in sessionPreupdateOneChange()
1450 sqlite3_session *pSession, in sessionFindTable() argument
1459 for(pRet=pSession->pTable; pRet; pRet=pRet->pNext){ in sessionFindTable()
1463 if( pRet==0 && pSession->bAutoAttach ){ in sessionFindTable()
1466 if( pSession->xTableFilter==0 in sessionFindTable()
1467 || pSession->xTableFilter(pSession->pFilterCtx, zName) in sessionFindTable()
1469 rc = sqlite3session_attach(pSession, zName); in sessionFindTable()
1471 pRet = pSession->pTable; in sessionFindTable()
1498 sqlite3_session *pSession; in xPreUpdate() local
1503 for(pSession=(sqlite3_session *)pCtx; pSession; pSession=pSession->pNext){ in xPreUpdate()
1509 if( pSession->bEnable==0 ) continue; in xPreUpdate()
1510 if( pSession->rc ) continue; in xPreUpdate()
1511 if( sqlite3_strnicmp(zDb, pSession->zDb, nDb+1) ) continue; in xPreUpdate()
1513 pSession->rc = sessionFindTable(pSession, zName, &pTab); in xPreUpdate()
1515 assert( pSession->rc==SQLITE_OK ); in xPreUpdate()
1516 sessionPreupdateOneChange(op, pSession, pTab); in xPreUpdate()
1518 sessionPreupdateOneChange(SQLITE_INSERT, pSession, pTab); in xPreUpdate()
1545 sqlite3_session *pSession in sessionPreupdateHooks() argument
1547 pSession->hook.pCtx = (void*)pSession->db; in sessionPreupdateHooks()
1548 pSession->hook.xOld = sessionPreupdateOld; in sessionPreupdateHooks()
1549 pSession->hook.xNew = sessionPreupdateNew; in sessionPreupdateHooks()
1550 pSession->hook.xCount = sessionPreupdateCount; in sessionPreupdateHooks()
1551 pSession->hook.xDepth = sessionPreupdateDepth; in sessionPreupdateHooks()
1586 sqlite3_session *pSession, in sessionDiffHooks() argument
1589 pSession->hook.pCtx = (void*)pDiffCtx; in sessionDiffHooks()
1590 pSession->hook.xOld = sessionDiffOld; in sessionDiffHooks()
1591 pSession->hook.xNew = sessionDiffNew; in sessionDiffHooks()
1592 pSession->hook.xCount = sessionDiffCount; in sessionDiffHooks()
1593 pSession->hook.xDepth = sessionDiffDepth; in sessionDiffHooks()
1668 sqlite3_session *pSession, in sessionDiffFindNew() argument
1681 rc = sqlite3_prepare(pSession->db, zStmt, -1, &pStmt, 0); in sessionDiffFindNew()
1683 SessionDiffCtx *pDiffCtx = (SessionDiffCtx*)pSession->hook.pCtx; in sessionDiffFindNew()
1687 sessionPreupdateOneChange(op, pSession, pTab); in sessionDiffFindNew()
1698 sqlite3_session *pSession, in sessionDiffFindModified() argument
1706 pSession->zDb, zFrom, pTab->zName, pTab->azCol, pTab->abPK in sessionDiffFindModified()
1713 pSession->zDb, pTab->zName, zFrom, pTab->zName, zExpr, zExpr2 in sessionDiffFindModified()
1719 rc = sqlite3_prepare(pSession->db, zStmt, -1, &pStmt, 0); in sessionDiffFindModified()
1722 SessionDiffCtx *pDiffCtx = (SessionDiffCtx*)pSession->hook.pCtx; in sessionDiffFindModified()
1726 sessionPreupdateOneChange(SQLITE_UPDATE, pSession, pTab); in sessionDiffFindModified()
1738 sqlite3_session *pSession, in sqlite3session_diff() argument
1743 const char *zDb = pSession->zDb; in sqlite3session_diff()
1744 int rc = pSession->rc; in sqlite3session_diff()
1748 sessionDiffHooks(pSession, &d); in sqlite3session_diff()
1750 sqlite3_mutex_enter(sqlite3_db_mutex(pSession->db)); in sqlite3session_diff()
1754 sqlite3 *db = pSession->db; in sqlite3session_diff()
1758 rc = sessionFindTable(pSession, zTbl, &pTo); in sqlite3session_diff()
1760 if( sessionInitTable(pSession, pTo) ){ in sqlite3session_diff()
1761 rc = pSession->rc; in sqlite3session_diff()
1806 rc = sessionDiffFindNew(SQLITE_INSERT, pSession, pTo, zDb, zFrom, zExpr); in sqlite3session_diff()
1811 rc = sessionDiffFindNew(SQLITE_DELETE, pSession, pTo, zFrom, zDb, zExpr); in sqlite3session_diff()
1816 rc = sessionDiffFindModified(pSession, pTo, zFrom, zExpr); in sqlite3session_diff()
1823 sessionPreupdateHooks(pSession); in sqlite3session_diff()
1824 sqlite3_mutex_leave(sqlite3_db_mutex(pSession->db)); in sqlite3session_diff()
1870 static void sessionDeleteTable(sqlite3_session *pSession, SessionTable *pList){ in sessionDeleteTable() argument
1882 sessionFree(pSession, p); in sessionDeleteTable()
1885 sessionFree(pSession, (char*)pTab->azCol); /* cast works around VC++ bug */ in sessionDeleteTable()
1886 sessionFree(pSession, pTab->apChange); in sessionDeleteTable()
1887 sessionFree(pSession, pTab); in sessionDeleteTable()
1894 void sqlite3session_delete(sqlite3_session *pSession){ in sqlite3session_delete() argument
1895 sqlite3 *db = pSession->db; in sqlite3session_delete()
1904 if( (*pp)==pSession ){ in sqlite3session_delete()
1911 sqlite3ValueFree(pSession->pZeroBlob); in sqlite3session_delete()
1915 sessionDeleteTable(pSession, pSession->pTable); in sqlite3session_delete()
1919 assert( pSession->nMalloc==0 ); in sqlite3session_delete()
1920 sqlite3_free(pSession); in sqlite3session_delete()
1927 sqlite3_session *pSession, in sqlite3session_table_filter() argument
1931 pSession->bAutoAttach = 1; in sqlite3session_table_filter()
1932 pSession->pFilterCtx = pCtx; in sqlite3session_table_filter()
1933 pSession->xTableFilter = xFilter; in sqlite3session_table_filter()
1945 sqlite3_session *pSession, /* Session object */ in sqlite3session_attach() argument
1949 sqlite3_mutex_enter(sqlite3_db_mutex(pSession->db)); in sqlite3session_attach()
1952 pSession->bAutoAttach = 1; in sqlite3session_attach()
1960 for(pTab=pSession->pTable; pTab; pTab=pTab->pNext){ in sqlite3session_attach()
1967 pTab = (SessionTable*)sessionMalloc64(pSession, nByte); in sqlite3session_attach()
1980 for(ppTab=&pSession->pTable; *ppTab; ppTab=&(*ppTab)->pNext); in sqlite3session_attach()
1986 sqlite3_mutex_leave(sqlite3_db_mutex(pSession->db)); in sqlite3session_attach()
2541 sqlite3_session *pSession, /* Session object */ in sessionGenerateChangeset() argument
2548 sqlite3 *db = pSession->db; /* Source database handle */ in sessionGenerateChangeset()
2565 if( pSession->rc ) return pSession->rc; in sessionGenerateChangeset()
2566 rc = sqlite3_exec(pSession->db, "SAVEPOINT changeset", 0, 0, 0); in sessionGenerateChangeset()
2571 for(pTab=pSession->pTable; rc==SQLITE_OK && pTab; pTab=pTab->pNext){ in sessionGenerateChangeset()
2583 rc = sessionTableInfo(0, db, pSession->zDb, zName, &nCol, 0,&azCol,&abPK); in sessionGenerateChangeset()
2594 db, pSession->zDb, zName, nCol, azCol, abPK, &pSel); in sessionGenerateChangeset()
2670 sqlite3_session *pSession, /* Session object */ in sqlite3session_changeset() argument
2677 rc = sessionGenerateChangeset(pSession, 0, 0, 0, pnChangeset,ppChangeset); in sqlite3session_changeset()
2679 || pSession->bEnableSize==0 || *pnChangeset<=pSession->nMaxChangesetSize in sqlite3session_changeset()
2688 sqlite3_session *pSession, in sqlite3session_changeset_strm() argument
2693 return sessionGenerateChangeset(pSession, 0, xOutput, pOut, 0, 0); in sqlite3session_changeset_strm()
2700 sqlite3_session *pSession, in sqlite3session_patchset_strm() argument
2705 return sessionGenerateChangeset(pSession, 1, xOutput, pOut, 0, 0); in sqlite3session_patchset_strm()
2716 sqlite3_session *pSession, /* Session object */ in sqlite3session_patchset() argument
2721 return sessionGenerateChangeset(pSession, 1, 0, 0, pnPatchset, ppPatchset); in sqlite3session_patchset()
2727 int sqlite3session_enable(sqlite3_session *pSession, int bEnable){ in sqlite3session_enable() argument
2729 sqlite3_mutex_enter(sqlite3_db_mutex(pSession->db)); in sqlite3session_enable()
2731 pSession->bEnable = bEnable; in sqlite3session_enable()
2733 ret = pSession->bEnable; in sqlite3session_enable()
2734 sqlite3_mutex_leave(sqlite3_db_mutex(pSession->db)); in sqlite3session_enable()
2741 int sqlite3session_indirect(sqlite3_session *pSession, int bIndirect){ in sqlite3session_indirect() argument
2743 sqlite3_mutex_enter(sqlite3_db_mutex(pSession->db)); in sqlite3session_indirect()
2745 pSession->bIndirect = bIndirect; in sqlite3session_indirect()
2747 ret = pSession->bIndirect; in sqlite3session_indirect()
2748 sqlite3_mutex_leave(sqlite3_db_mutex(pSession->db)); in sqlite3session_indirect()
2756 int sqlite3session_isempty(sqlite3_session *pSession){ in sqlite3session_isempty() argument
2760 sqlite3_mutex_enter(sqlite3_db_mutex(pSession->db)); in sqlite3session_isempty()
2761 for(pTab=pSession->pTable; pTab && ret==0; pTab=pTab->pNext){ in sqlite3session_isempty()
2764 sqlite3_mutex_leave(sqlite3_db_mutex(pSession->db)); in sqlite3session_isempty()
2772 sqlite3_int64 sqlite3session_memory_used(sqlite3_session *pSession){ in sqlite3session_memory_used() argument
2773 return pSession->nMalloc; in sqlite3session_memory_used()
2779 int sqlite3session_object_config(sqlite3_session *pSession, int op, void *pArg){ in sqlite3session_object_config() argument
2785 if( pSession->pTable ){ in sqlite3session_object_config()
2788 pSession->bEnableSize = (iArg!=0); in sqlite3session_object_config()
2791 *(int*)pArg = pSession->bEnableSize; in sqlite3session_object_config()
2805 sqlite3_int64 sqlite3session_changeset_size(sqlite3_session *pSession){ in sqlite3session_changeset_size() argument
2806 return pSession->nMaxChangesetSize; in sqlite3session_changeset_size()