Lines Matching refs:pTab

517   SessionTable *pTab,             /* Session table handle */  in sessionPreupdateHash()  argument
526 assert( pTab->nCol==pSession->hook.xCount(pSession->hook.pCtx) ); in sessionPreupdateHash()
527 for(i=0; i<pTab->nCol; i++){ in sessionPreupdateHash()
528 if( pTab->abPK[i] ){ in sessionPreupdateHash()
565 assert( pTab->bStat1==0 || i!=1 ); in sessionPreupdateHash()
571 *piHash = (h % pTab->nChange); in sessionPreupdateHash()
599 SessionTable *pTab, /* Table handle */ in sessionChangeHash() argument
608 for(i=0; i<pTab->nCol; i++){ in sessionChangeHash()
610 int isPK = pTab->abPK[i]; in sessionChangeHash()
648 SessionTable *pTab, /* Table used for PK definition */ in sessionChangeEqual() argument
658 for(iCol=0; iCol<pTab->nCol; iCol++){ in sessionChangeEqual()
659 if( pTab->abPK[iCol] ){ in sessionChangeEqual()
772 SessionTable *pTab, /* Table change pertains to */ in sessionMergeUpdate() argument
793 for(i=0; i<pTab->nCol; i++){ in sessionMergeUpdate()
801 if( pTab->abPK[i] || nOld!=nNew || memcmp(aOld, aNew, nNew) ){ in sessionMergeUpdate()
802 if( pTab->abPK[i]==0 ) bRequired = 1; in sessionMergeUpdate()
818 for(i=0; i<pTab->nCol; i++){ in sessionMergeUpdate()
827 && (pTab->abPK[i] || (nOld==nNew && 0==memcmp(aOld, aNew, nNew))) in sessionMergeUpdate()
849 SessionTable *pTab, /* Table associated with change */ in sessionPreupdateEqual() argument
857 for(iCol=0; iCol<pTab->nCol; iCol++){ in sessionPreupdateEqual()
858 if( !pTab->abPK[iCol] ){ in sessionPreupdateEqual()
929 SessionTable *pTab in sessionGrowHash() argument
931 if( pTab->nChange==0 || pTab->nEntry>=(pTab->nChange/2) ){ in sessionGrowHash()
934 sqlite3_int64 nNew = 2*(sqlite3_int64)(pTab->nChange ? pTab->nChange : 128); in sessionGrowHash()
940 if( pTab->nChange==0 ){ in sessionGrowHash()
947 for(i=0; i<pTab->nChange; i++){ in sessionGrowHash()
950 for(p=pTab->apChange[i]; p; p=pNext){ in sessionGrowHash()
952 int iHash = sessionChangeHash(pTab, bPkOnly, p->aRecord, nNew); in sessionGrowHash()
959 sessionFree(pSession, pTab->apChange); in sessionGrowHash()
960 pTab->nChange = nNew; in sessionGrowHash()
961 pTab->apChange = apNew; in sessionGrowHash()
1125 static int sessionInitTable(sqlite3_session *pSession, SessionTable *pTab){ in sessionInitTable() argument
1126 if( pTab->nCol==0 ){ in sessionInitTable()
1128 assert( pTab->azCol==0 || pTab->abPK==0 ); in sessionInitTable()
1130 pTab->zName, &pTab->nCol, 0, &pTab->azCol, &abPK in sessionInitTable()
1134 for(i=0; i<pTab->nCol; i++){ in sessionInitTable()
1136 pTab->abPK = abPK; in sessionInitTable()
1140 if( 0==sqlite3_stricmp("sqlite_stat1", pTab->zName) ){ in sessionInitTable()
1141 pTab->bStat1 = 1; in sessionInitTable()
1146 1 + sessionVarintLen(pTab->nCol) + pTab->nCol + strlen(pTab->zName)+1 in sessionInitTable()
1151 return (pSession->rc || pTab->abPK==0); in sessionInitTable()
1197 SessionTable *pTab, /* Table that change applies to */ in sessionUpdateMaxSize() argument
1204 for(ii=0; ii<pTab->nCol; ii++){ in sessionUpdateMaxSize()
1218 for(ii=0; ii<pTab->nCol; ii++){ in sessionUpdateMaxSize()
1268 if( bChanged && pTab->abPK[ii] ){ in sessionUpdateMaxSize()
1276 }else if( pTab->abPK[ii] ){ in sessionUpdateMaxSize()
1303 SessionTable *pTab /* Table that change applies to */ in sessionPreupdateOneChange() argument
1313 if( sessionInitTable(pSession, pTab) ) return; in sessionPreupdateOneChange()
1317 if( pTab->nCol!=pSession->hook.xCount(pSession->hook.pCtx) ){ in sessionPreupdateOneChange()
1323 if( sessionGrowHash(pSession, 0, pTab) ){ in sessionPreupdateOneChange()
1328 if( pTab->bStat1 ){ in sessionPreupdateOneChange()
1350 rc = sessionPreupdateHash(pSession, pTab, op==SQLITE_INSERT, &iHash, &bNull); in sessionPreupdateOneChange()
1356 for(pC=pTab->apChange[iHash]; pC; pC=pC->pNext){ in sessionPreupdateOneChange()
1357 if( sessionPreupdateEqual(pSession, pTab, pC, op) ) break; in sessionPreupdateOneChange()
1368 pTab->nEntry++; in sessionPreupdateOneChange()
1372 for(i=0; i<pTab->nCol; i++){ in sessionPreupdateOneChange()
1377 }else if( pTab->abPK[i] ){ in sessionPreupdateOneChange()
1403 for(i=0; i<pTab->nCol; i++){ in sessionPreupdateOneChange()
1407 }else if( pTab->abPK[i] ){ in sessionPreupdateOneChange()
1419 pC->pNext = pTab->apChange[iHash]; in sessionPreupdateOneChange()
1420 pTab->apChange[iHash] = pC; in sessionPreupdateOneChange()
1434 rc = sessionUpdateMaxSize(op, pSession, pTab, pC); in sessionPreupdateOneChange()
1441 if( pTab->bStat1 ){ in sessionPreupdateOneChange()
1504 SessionTable *pTab; in xPreUpdate() local
1513 pSession->rc = sessionFindTable(pSession, zName, &pTab); in xPreUpdate()
1514 if( pTab ){ in xPreUpdate()
1516 sessionPreupdateOneChange(op, pSession, pTab); in xPreUpdate()
1518 sessionPreupdateOneChange(SQLITE_INSERT, pSession, pTab); in xPreUpdate()
1669 SessionTable *pTab, in sessionDiffFindNew() argument
1675 char *zStmt = sessionSelectFindNew(pTab->nCol, zDb1, zDb2, pTab->zName,zExpr); in sessionDiffFindNew()
1687 sessionPreupdateOneChange(op, pSession, pTab); in sessionDiffFindNew()
1699 SessionTable *pTab, in sessionDiffFindModified() argument
1705 char *zExpr2 = sessionExprCompareOther(pTab->nCol, in sessionDiffFindModified()
1706 pSession->zDb, zFrom, pTab->zName, pTab->azCol, pTab->abPK in sessionDiffFindModified()
1713 pSession->zDb, pTab->zName, zFrom, pTab->zName, zExpr, zExpr2 in sessionDiffFindModified()
1724 pDiffCtx->nOldOff = pTab->nCol; in sessionDiffFindModified()
1726 sessionPreupdateOneChange(SQLITE_UPDATE, pSession, pTab); in sessionDiffFindModified()
1872 SessionTable *pTab; in sessionDeleteTable() local
1874 for(pTab=pList; pTab; pTab=pNext){ in sessionDeleteTable()
1876 pNext = pTab->pNext; in sessionDeleteTable()
1877 for(i=0; i<pTab->nChange; i++){ in sessionDeleteTable()
1880 for(p=pTab->apChange[i]; p; p=pNextChange){ 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()
1954 SessionTable *pTab; /* New table object (if required) */ in sqlite3session_attach() local
1960 for(pTab=pSession->pTable; pTab; pTab=pTab->pNext){ in sqlite3session_attach()
1961 if( 0==sqlite3_strnicmp(pTab->zName, zName, nName+1) ) break; in sqlite3session_attach()
1964 if( !pTab ){ in sqlite3session_attach()
1967 pTab = (SessionTable*)sessionMalloc64(pSession, nByte); in sqlite3session_attach()
1968 if( !pTab ){ in sqlite3session_attach()
1977 memset(pTab, 0, sizeof(SessionTable)); in sqlite3session_attach()
1978 pTab->zName = (char *)&pTab[1]; in sqlite3session_attach()
1979 memcpy(pTab->zName, zName, nName+1); in sqlite3session_attach()
1981 *ppTab = pTab; in sqlite3session_attach()
2520 SessionTable *pTab, /* Table object to append header for */ in sessionAppendTableHdr() argument
2525 sessionAppendVarint(pBuf, pTab->nCol, pRc); in sessionAppendTableHdr()
2526 sessionAppendBlob(pBuf, pTab->abPK, pTab->nCol, pRc); in sessionAppendTableHdr()
2527 sessionAppendBlob(pBuf, (u8 *)pTab->zName, (int)strlen(pTab->zName)+1, pRc); in sessionAppendTableHdr()
2549 SessionTable *pTab; /* Used to iterate through attached tables */ in sessionGenerateChangeset() local
2571 for(pTab=pSession->pTable; rc==SQLITE_OK && pTab; pTab=pTab->pNext){ in sessionGenerateChangeset()
2572 if( pTab->nEntry ){ in sessionGenerateChangeset()
2573 const char *zName = pTab->zName; in sessionGenerateChangeset()
2584 if( !rc && (pTab->nCol!=nCol || memcmp(abPK, pTab->abPK, nCol)) ){ in sessionGenerateChangeset()
2589 sessionAppendTableHdr(&buf, bPatchset, pTab, &rc); in sessionGenerateChangeset()
2598 for(i=0; i<pTab->nChange && rc==SQLITE_OK; i++){ in sessionGenerateChangeset()
2601 for(p=pTab->apChange[i]; rc==SQLITE_OK && p; p=p->pNext){ in sessionGenerateChangeset()
2758 SessionTable *pTab; in sqlite3session_isempty() local
2761 for(pTab=pSession->pTable; pTab && ret==0; pTab=pTab->pNext){ in sqlite3session_isempty()
2762 ret = (pTab->nEntry>0); in sqlite3session_isempty()
4946 SessionTable *pTab, /* Table structure */ in sessionChangeMerge() argument
4975 for(i=0; i<pTab->nCol; i++){ in sessionChangeMerge()
4979 }else if( pTab->abPK[i]==0 ){ in sessionChangeMerge()
5008 for(i=0; i<pTab->nCol; i++){ in sessionChangeMerge()
5011 if( *a1==0xFF || (pTab->abPK[i]==0 && bIndirect) ){ in sessionChangeMerge()
5074 if( bPatchset==0 ) sessionSkipRecord(&a1, pTab->nCol); in sessionChangeMerge()
5075 sessionMergeRecord(&aCsr, pTab->nCol, aExist, a1); in sessionChangeMerge()
5083 if( 0==sessionMergeUpdate(&aCsr, pTab, bPatchset, aExist, 0,aRec,0) ){ in sessionChangeMerge()
5093 sessionSkipRecord(&a1, pTab->nCol); in sessionChangeMerge()
5094 sessionSkipRecord(&a2, pTab->nCol); in sessionChangeMerge()
5097 if( 0==sessionMergeUpdate(&aCsr, pTab, bPatchset, aRec, aExist,a1,a2) ){ in sessionChangeMerge()
5108 sessionMergeRecord(&aCsr, pTab->nCol, aRec, aExist); in sessionChangeMerge()
5135 SessionTable *pTab = 0; in sessionChangesetToHash() local
5155 if( !pTab || sqlite3_stricmp(zNew, pTab->zName) ){ in sessionChangesetToHash()
5161 for(pTab = pGrp->pList; pTab; pTab=pTab->pNext){ in sessionChangesetToHash()
5162 if( 0==sqlite3_strnicmp(pTab->zName, zNew, nNew+1) ) break; in sessionChangesetToHash()
5164 if( !pTab ){ in sessionChangesetToHash()
5167 pTab = sqlite3_malloc64(sizeof(SessionTable) + nCol + nNew+1); in sessionChangesetToHash()
5168 if( !pTab ){ in sessionChangesetToHash()
5172 memset(pTab, 0, sizeof(SessionTable)); in sessionChangesetToHash()
5173 pTab->nCol = nCol; in sessionChangesetToHash()
5174 pTab->abPK = (u8*)&pTab[1]; in sessionChangesetToHash()
5175 memcpy(pTab->abPK, abPK, nCol); in sessionChangesetToHash()
5176 pTab->zName = (char*)&pTab->abPK[nCol]; in sessionChangesetToHash()
5177 memcpy(pTab->zName, zNew, nNew+1); in sessionChangesetToHash()
5184 *ppTab = pTab; in sessionChangesetToHash()
5185 }else if( pTab->nCol!=nCol || memcmp(pTab->abPK, abPK, nCol) ){ in sessionChangesetToHash()
5191 if( sessionGrowHash(0, pIter->bPatchset, pTab) ){ in sessionChangesetToHash()
5196 pTab, (pIter->bPatchset && op==SQLITE_DELETE), aRec, pTab->nChange in sessionChangesetToHash()
5202 for(pp=&pTab->apChange[iHash]; *pp; pp=&(*pp)->pNext){ in sessionChangesetToHash()
5209 if( sessionChangeEqual(pTab, bPkOnly1, (*pp)->aRecord, bPkOnly2, aRec) ){ in sessionChangesetToHash()
5212 pTab->nEntry--; in sessionChangesetToHash()
5217 rc = sessionChangeMerge(pTab, bRebase, in sessionChangesetToHash()
5222 pChange->pNext = pTab->apChange[iHash]; in sessionChangesetToHash()
5223 pTab->apChange[iHash] = pChange; in sessionChangesetToHash()
5224 pTab->nEntry++; in sessionChangesetToHash()
5259 SessionTable *pTab; in sessionChangegroupOutput() local
5265 for(pTab=pGrp->pList; rc==SQLITE_OK && pTab; pTab=pTab->pNext){ in sessionChangegroupOutput()
5267 if( pTab->nEntry==0 ) continue; in sessionChangegroupOutput()
5269 sessionAppendTableHdr(&buf, pGrp->bPatch, pTab, &rc); in sessionChangegroupOutput()
5270 for(i=0; i<pTab->nChange; i++){ in sessionChangegroupOutput()
5272 for(p=pTab->apChange[i]; p; p=p->pNext){ in sessionChangegroupOutput()
5582 SessionTable *pTab = 0; in sessionRebase() local
5591 for(pTab=p->grp.pList; pTab; pTab=pTab->pNext){ in sessionRebase()
5592 if( 0==sqlite3_stricmp(pTab->zName, zTab) ) break; in sessionRebase()
5608 if( pTab && rc==SQLITE_OK ){ in sessionRebase()
5609 int iHash = sessionChangeHash(pTab, 0, aRec, pTab->nChange); in sessionRebase()
5611 for(pChange=pTab->apChange[iHash]; pChange; pChange=pChange->pNext){ in sessionRebase()
5612 if( sessionChangeEqual(pTab, 0, aRec, 0, pChange->aRecord) ){ in sessionRebase()