Lines Matching refs:pIter
796 static void rbuObjIterFreeCols(RbuObjIter *pIter){ in rbuObjIterFreeCols() argument
798 for(i=0; i<pIter->nTblCol; i++){ in rbuObjIterFreeCols()
799 sqlite3_free(pIter->azTblCol[i]); in rbuObjIterFreeCols()
800 sqlite3_free(pIter->azTblType[i]); in rbuObjIterFreeCols()
802 sqlite3_free(pIter->azTblCol); in rbuObjIterFreeCols()
803 pIter->azTblCol = 0; in rbuObjIterFreeCols()
804 pIter->azTblType = 0; in rbuObjIterFreeCols()
805 pIter->aiSrcOrder = 0; in rbuObjIterFreeCols()
806 pIter->abTblPk = 0; in rbuObjIterFreeCols()
807 pIter->abNotNull = 0; in rbuObjIterFreeCols()
808 pIter->nTblCol = 0; in rbuObjIterFreeCols()
809 pIter->eType = 0; /* Invalid value */ in rbuObjIterFreeCols()
816 static void rbuObjIterClearStatements(RbuObjIter *pIter){ in rbuObjIterClearStatements() argument
819 sqlite3_finalize(pIter->pSelect); in rbuObjIterClearStatements()
820 sqlite3_finalize(pIter->pInsert); in rbuObjIterClearStatements()
821 sqlite3_finalize(pIter->pDelete); in rbuObjIterClearStatements()
822 sqlite3_finalize(pIter->pTmpInsert); in rbuObjIterClearStatements()
823 pUp = pIter->pRbuUpdate; in rbuObjIterClearStatements()
830 sqlite3_free(pIter->aIdxCol); in rbuObjIterClearStatements()
831 sqlite3_free(pIter->zIdxSql); in rbuObjIterClearStatements()
833 pIter->pSelect = 0; in rbuObjIterClearStatements()
834 pIter->pInsert = 0; in rbuObjIterClearStatements()
835 pIter->pDelete = 0; in rbuObjIterClearStatements()
836 pIter->pRbuUpdate = 0; in rbuObjIterClearStatements()
837 pIter->pTmpInsert = 0; in rbuObjIterClearStatements()
838 pIter->nCol = 0; in rbuObjIterClearStatements()
839 pIter->nIdxCol = 0; in rbuObjIterClearStatements()
840 pIter->aIdxCol = 0; in rbuObjIterClearStatements()
841 pIter->zIdxSql = 0; in rbuObjIterClearStatements()
848 static void rbuObjIterFinalize(RbuObjIter *pIter){ in rbuObjIterFinalize() argument
849 rbuObjIterClearStatements(pIter); in rbuObjIterFinalize()
850 sqlite3_finalize(pIter->pTblIter); in rbuObjIterFinalize()
851 sqlite3_finalize(pIter->pIdxIter); in rbuObjIterFinalize()
852 rbuObjIterFreeCols(pIter); in rbuObjIterFinalize()
853 memset(pIter, 0, sizeof(RbuObjIter)); in rbuObjIterFinalize()
864 static int rbuObjIterNext(sqlite3rbu *p, RbuObjIter *pIter){ in rbuObjIterNext() argument
869 rbuObjIterClearStatements(pIter); in rbuObjIterNext()
870 if( pIter->zIdx==0 ){ in rbuObjIterNext()
881 if( pIter->bCleanup ){ in rbuObjIterNext()
882 rbuObjIterFreeCols(pIter); in rbuObjIterNext()
883 pIter->bCleanup = 0; in rbuObjIterNext()
884 rc = sqlite3_step(pIter->pTblIter); in rbuObjIterNext()
886 rc = resetAndCollectError(pIter->pTblIter, &p->zErrmsg); in rbuObjIterNext()
887 pIter->zTbl = 0; in rbuObjIterNext()
889 pIter->zTbl = (const char*)sqlite3_column_text(pIter->pTblIter, 0); in rbuObjIterNext()
890 pIter->zDataTbl = (const char*)sqlite3_column_text(pIter->pTblIter,1); in rbuObjIterNext()
891 rc = (pIter->zDataTbl && pIter->zTbl) ? SQLITE_OK : SQLITE_NOMEM; in rbuObjIterNext()
894 if( pIter->zIdx==0 ){ in rbuObjIterNext()
895 sqlite3_stmt *pIdx = pIter->pIdxIter; in rbuObjIterNext()
896 rc = sqlite3_bind_text(pIdx, 1, pIter->zTbl, -1, SQLITE_STATIC); in rbuObjIterNext()
899 rc = sqlite3_step(pIter->pIdxIter); in rbuObjIterNext()
901 rc = resetAndCollectError(pIter->pIdxIter, &p->zErrmsg); in rbuObjIterNext()
902 pIter->bCleanup = 1; in rbuObjIterNext()
903 pIter->zIdx = 0; in rbuObjIterNext()
905 pIter->zIdx = (const char*)sqlite3_column_text(pIter->pIdxIter, 0); in rbuObjIterNext()
906 pIter->iTnum = sqlite3_column_int(pIter->pIdxIter, 1); in rbuObjIterNext()
907 pIter->bUnique = sqlite3_column_int(pIter->pIdxIter, 2); in rbuObjIterNext()
908 rc = pIter->zIdx ? SQLITE_OK : SQLITE_NOMEM; in rbuObjIterNext()
916 rbuObjIterFinalize(pIter); in rbuObjIterNext()
980 static int rbuObjIterFirst(sqlite3rbu *p, RbuObjIter *pIter){ in rbuObjIterFirst() argument
982 memset(pIter, 0, sizeof(RbuObjIter)); in rbuObjIterFirst()
984 rc = prepareFreeAndCollectError(p->dbRbu, &pIter->pTblIter, &p->zErrmsg, in rbuObjIterFirst()
994 rc = prepareAndCollectError(p->dbMain, &pIter->pIdxIter, &p->zErrmsg, in rbuObjIterFirst()
1001 pIter->bCleanup = 1; in rbuObjIterFirst()
1003 return rbuObjIterNext(p, pIter); in rbuObjIterFirst()
1087 static void rbuAllocateIterArrays(sqlite3rbu *p, RbuObjIter *pIter, int nCol){ in rbuAllocateIterArrays() argument
1093 pIter->azTblCol = azNew; in rbuAllocateIterArrays()
1094 pIter->azTblType = &azNew[nCol]; in rbuAllocateIterArrays()
1095 pIter->aiSrcOrder = (int*)&pIter->azTblType[nCol]; in rbuAllocateIterArrays()
1096 pIter->abTblPk = (u8*)&pIter->aiSrcOrder[nCol]; in rbuAllocateIterArrays()
1097 pIter->abNotNull = (u8*)&pIter->abTblPk[nCol]; in rbuAllocateIterArrays()
1098 pIter->abIndexed = (u8*)&pIter->abNotNull[nCol]; in rbuAllocateIterArrays()
1271 static void rbuObjIterCacheIndexedCols(sqlite3rbu *p, RbuObjIter *pIter){ in rbuObjIterCacheIndexedCols() argument
1276 memcpy(pIter->abIndexed, pIter->abTblPk, sizeof(u8)*pIter->nTblCol); in rbuObjIterCacheIndexedCols()
1278 sqlite3_mprintf("PRAGMA main.index_list = %Q", pIter->zTbl) in rbuObjIterCacheIndexedCols()
1282 pIter->nIndex = 0; in rbuObjIterCacheIndexedCols()
1289 memset(pIter->abIndexed, 0x01, sizeof(u8)*pIter->nTblCol); in rbuObjIterCacheIndexedCols()
1296 if( iCid>=0 ) pIter->abIndexed[iCid] = 1; in rbuObjIterCacheIndexedCols()
1298 memset(pIter->abIndexed, 0x01, sizeof(u8)*pIter->nTblCol); in rbuObjIterCacheIndexedCols()
1303 pIter->nIndex++; in rbuObjIterCacheIndexedCols()
1306 if( pIter->eType==RBU_PK_WITHOUT_ROWID ){ in rbuObjIterCacheIndexedCols()
1308 pIter->nIndex--; in rbuObjIterCacheIndexedCols()
1312 if( bIndex==0 ) pIter->abIndexed = 0; in rbuObjIterCacheIndexedCols()
1325 static int rbuObjIterCacheTableInfo(sqlite3rbu *p, RbuObjIter *pIter){ in rbuObjIterCacheTableInfo() argument
1326 if( pIter->azTblCol==0 ){ in rbuObjIterCacheTableInfo()
1335 assert( pIter->eType==0 ); in rbuObjIterCacheTableInfo()
1336 rbuTableType(p, pIter->zTbl, &pIter->eType, &iTnum, &pIter->iPkTnum); in rbuObjIterCacheTableInfo()
1337 if( p->rc==SQLITE_OK && pIter->eType==RBU_PK_NOTABLE ){ in rbuObjIterCacheTableInfo()
1339 p->zErrmsg = sqlite3_mprintf("no such table: %s", pIter->zTbl); in rbuObjIterCacheTableInfo()
1342 if( pIter->zIdx==0 ) pIter->iTnum = iTnum; in rbuObjIterCacheTableInfo()
1344 assert( pIter->eType==RBU_PK_NONE || pIter->eType==RBU_PK_IPK in rbuObjIterCacheTableInfo()
1345 || pIter->eType==RBU_PK_EXTERNAL || pIter->eType==RBU_PK_WITHOUT_ROWID in rbuObjIterCacheTableInfo()
1346 || pIter->eType==RBU_PK_VTAB in rbuObjIterCacheTableInfo()
1353 sqlite3_mprintf("SELECT * FROM '%q'", pIter->zDataTbl) in rbuObjIterCacheTableInfo()
1357 rbuAllocateIterArrays(p, pIter, nCol); in rbuObjIterCacheTableInfo()
1363 pIter->aiSrcOrder[pIter->nTblCol] = pIter->nTblCol; in rbuObjIterCacheTableInfo()
1364 pIter->azTblCol[pIter->nTblCol++] = zCopy; in rbuObjIterCacheTableInfo()
1375 && bRbuRowid!=(pIter->eType==RBU_PK_VTAB || pIter->eType==RBU_PK_NONE) in rbuObjIterCacheTableInfo()
1379 "table %q %s rbu_rowid column", pIter->zDataTbl, in rbuObjIterCacheTableInfo()
1389 sqlite3_mprintf("PRAGMA table_info(%Q)", pIter->zTbl) in rbuObjIterCacheTableInfo()
1395 for(i=iOrder; i<pIter->nTblCol; i++){ in rbuObjIterCacheTableInfo()
1396 if( 0==strcmp(zName, pIter->azTblCol[i]) ) break; in rbuObjIterCacheTableInfo()
1398 if( i==pIter->nTblCol ){ in rbuObjIterCacheTableInfo()
1401 pIter->zDataTbl, zName in rbuObjIterCacheTableInfo()
1409 SWAP(int, pIter->aiSrcOrder[i], pIter->aiSrcOrder[iOrder]); in rbuObjIterCacheTableInfo()
1410 SWAP(char*, pIter->azTblCol[i], pIter->azTblCol[iOrder]); in rbuObjIterCacheTableInfo()
1413 pIter->azTblType[iOrder] = rbuStrndup(zType, &p->rc); in rbuObjIterCacheTableInfo()
1415 pIter->abTblPk[iOrder] = (u8)iPk; in rbuObjIterCacheTableInfo()
1416 pIter->abNotNull[iOrder] = (u8)bNotNull || (iPk!=0); in rbuObjIterCacheTableInfo()
1422 rbuObjIterCacheIndexedCols(p, pIter); in rbuObjIterCacheTableInfo()
1423 assert( pIter->eType!=RBU_PK_VTAB || pIter->abIndexed==0 ); in rbuObjIterCacheTableInfo()
1424 assert( pIter->eType!=RBU_PK_VTAB || pIter->nIndex==0 ); in rbuObjIterCacheTableInfo()
1437 RbuObjIter *pIter /* Object iterator for column names */ in rbuObjIterGetCollist() argument
1442 for(i=0; i<pIter->nTblCol; i++){ in rbuObjIterGetCollist()
1443 const char *z = pIter->azTblCol[i]; in rbuObjIterGetCollist()
1458 RbuObjIter *pIter, /* Object iterator for column names */ in rbuObjIterGetPkList() argument
1468 for(i=0; i<pIter->nTblCol; i++){ in rbuObjIterGetPkList()
1469 if( (int)pIter->abTblPk[i]==iPk ){ in rbuObjIterGetPkList()
1470 const char *zCol = pIter->azTblCol[i]; in rbuObjIterGetPkList()
1476 if( i==pIter->nTblCol ) break; in rbuObjIterGetPkList()
1503 RbuObjIter *pIter, /* RBU iterator object */ in rbuVacuumTableStart() argument
1512 "SELECT max(_rowid_) FROM \"%s%w\"", zWrite, pIter->zTbl in rbuVacuumTableStart()
1521 char *zOrder = rbuObjIterGetPkList(p, pIter, "", ", ", " DESC"); in rbuVacuumTableStart()
1522 char *zSelect = rbuObjIterGetPkList(p, pIter, "quote(", "||','||", ")"); in rbuVacuumTableStart()
1523 char *zList = rbuObjIterGetPkList(p, pIter, "", ", ", ""); in rbuVacuumTableStart()
1529 zSelect, zWrite, pIter->zTbl, zOrder in rbuVacuumTableStart()
1570 RbuObjIter *pIter /* RBU iterator object */ in rbuVacuumIndexStart() argument
1583 sqlite3_mprintf("PRAGMA main.index_xinfo = %Q", pIter->zIdx) in rbuVacuumIndexStart()
1595 if( pIter->eType==RBU_PK_IPK ){ in rbuVacuumIndexStart()
1597 for(i=0; pIter->abTblPk[i]==0; i++); in rbuVacuumIndexStart()
1598 assert( i<pIter->nTblCol ); in rbuVacuumIndexStart()
1599 zCol = pIter->azTblCol[i]; in rbuVacuumIndexStart()
1604 zCol = pIter->azTblCol[iCid]; in rbuVacuumIndexStart()
1627 zSelect, pIter->zTbl, zOrder in rbuVacuumIndexStart()
1632 for(iCol=0; iCol<pIter->nCol; iCol++){ in rbuVacuumIndexStart()
1685 RbuObjIter *pIter, /* Object iterator for column names */ in rbuObjIterGetIndexCols() argument
1705 sqlite3_mprintf("PRAGMA main.index_xinfo = %Q", pIter->zIdx) in rbuObjIterGetIndexCols()
1719 pIter->aIdxCol[iSeq].nSpan, pIter->aIdxCol[iSeq].zSpan, zCollate in rbuObjIterGetIndexCols()
1726 if( pIter->eType==RBU_PK_IPK ){ in rbuObjIterGetIndexCols()
1728 for(i=0; pIter->abTblPk[i]==0; i++); in rbuObjIterGetIndexCols()
1729 assert( i<pIter->nTblCol ); in rbuObjIterGetIndexCols()
1730 zCol = pIter->azTblCol[i]; in rbuObjIterGetIndexCols()
1738 zCol = pIter->azTblCol[iCid]; in rbuObjIterGetIndexCols()
1739 zType = pIter->azTblType[iCid]; in rbuObjIterGetIndexCols()
1744 if( pIter->bUnique==0 || sqlite3_column_int(pXInfo, 5) ){ in rbuObjIterGetIndexCols()
1797 RbuObjIter *pIter, in rbuObjIterGetOldlist() argument
1801 if( p->rc==SQLITE_OK && pIter->abIndexed ){ in rbuObjIterGetOldlist()
1804 for(i=0; i<pIter->nTblCol; i++){ in rbuObjIterGetOldlist()
1805 if( pIter->abIndexed[i] ){ in rbuObjIterGetOldlist()
1806 const char *zCol = pIter->azTblCol[i]; in rbuObjIterGetOldlist()
1819 if( pIter->eType==RBU_PK_EXTERNAL || pIter->eType==RBU_PK_NONE ){ in rbuObjIterGetOldlist()
1838 RbuObjIter *pIter in rbuObjIterGetWhere() argument
1841 if( pIter->eType==RBU_PK_VTAB || pIter->eType==RBU_PK_NONE ){ in rbuObjIterGetWhere()
1842 zList = rbuMPrintf(p, "_rowid_ = ?%d", pIter->nTblCol+1); in rbuObjIterGetWhere()
1843 }else if( pIter->eType==RBU_PK_EXTERNAL ){ in rbuObjIterGetWhere()
1846 for(i=0; i<pIter->nTblCol; i++){ in rbuObjIterGetWhere()
1847 if( pIter->abTblPk[i] ){ in rbuObjIterGetWhere()
1859 for(i=0; i<pIter->nTblCol; i++){ in rbuObjIterGetWhere()
1860 if( pIter->abTblPk[i] ){ in rbuObjIterGetWhere()
1861 const char *zCol = pIter->azTblCol[i]; in rbuObjIterGetWhere()
1902 RbuObjIter *pIter, in rbuObjIterGetSetlist() argument
1909 if( (int)strlen(zMask)!=pIter->nTblCol ){ in rbuObjIterGetSetlist()
1913 for(i=0; i<pIter->nTblCol; i++){ in rbuObjIterGetSetlist()
1914 char c = zMask[pIter->aiSrcOrder[i]]; in rbuObjIterGetSetlist()
1917 zList, zSep, pIter->azTblCol[i], i+1 in rbuObjIterGetSetlist()
1923 zList, zSep, pIter->azTblCol[i], pIter->azTblCol[i], i+1 in rbuObjIterGetSetlist()
1929 zList, zSep, pIter->azTblCol[i], pIter->azTblCol[i], i+1 in rbuObjIterGetSetlist()
1981 static char *rbuWithoutRowidPK(sqlite3rbu *p, RbuObjIter *pIter){ in rbuWithoutRowidPK() argument
1983 assert( pIter->zIdx==0 ); in rbuWithoutRowidPK()
1990 sqlite3_mprintf("PRAGMA main.index_list = %Q", pIter->zTbl) in rbuWithoutRowidPK()
2040 static void rbuCreateImposterTable2(sqlite3rbu *p, RbuObjIter *pIter){ in rbuCreateImposterTable2() argument
2041 if( p->rc==SQLITE_OK && pIter->eType==RBU_PK_EXTERNAL ){ in rbuCreateImposterTable2()
2042 int tnum = pIter->iPkTnum; /* Root page of PK index */ in rbuCreateImposterTable2()
2076 iCid, pIter->azTblType[iCid], zCollate in rbuCreateImposterTable2()
2114 static void rbuCreateImposterTable(sqlite3rbu *p, RbuObjIter *pIter){ in rbuCreateImposterTable() argument
2115 if( p->rc==SQLITE_OK && pIter->eType!=RBU_PK_VTAB ){ in rbuCreateImposterTable()
2116 int tnum = pIter->iTnum; in rbuCreateImposterTable()
2122 for(iCol=0; p->rc==SQLITE_OK && iCol<pIter->nTblCol; iCol++){ in rbuCreateImposterTable()
2124 const char *zCol = pIter->azTblCol[iCol]; in rbuCreateImposterTable()
2128 p->dbMain, "main", pIter->zTbl, zCol, 0, &zColl, 0, 0, 0 in rbuCreateImposterTable()
2131 if( pIter->eType==RBU_PK_IPK && pIter->abTblPk[iCol] ){ in rbuCreateImposterTable()
2137 zSql, zComma, zCol, pIter->azTblType[iCol], zPk, zColl, in rbuCreateImposterTable()
2138 (pIter->abNotNull[iCol] ? " NOT NULL" : "") in rbuCreateImposterTable()
2143 if( pIter->eType==RBU_PK_WITHOUT_ROWID ){ in rbuCreateImposterTable()
2144 char *zPk = rbuWithoutRowidPK(p, pIter); in rbuCreateImposterTable()
2152 pIter->zTbl, zSql, in rbuCreateImposterTable()
2153 (pIter->eType==RBU_PK_WITHOUT_ROWID ? " WITHOUT ROWID" : "") in rbuCreateImposterTable()
2172 RbuObjIter *pIter, in rbuObjIterPrepareTmpInsert() argument
2176 int bRbuRowid = (pIter->eType==RBU_PK_EXTERNAL || pIter->eType==RBU_PK_NONE); in rbuObjIterPrepareTmpInsert()
2177 char *zBind = rbuObjIterGetBindlist(p, pIter->nTblCol + 1 + bRbuRowid); in rbuObjIterPrepareTmpInsert()
2179 assert( pIter->pTmpInsert==0 ); in rbuObjIterPrepareTmpInsert()
2181 p->dbRbu, &pIter->pTmpInsert, &p->zErrmsg, sqlite3_mprintf( in rbuObjIterPrepareTmpInsert()
2183 p->zStateDb, pIter->zDataTbl, zCollist, zRbuRowid, zBind in rbuObjIterPrepareTmpInsert()
2218 static char *rbuObjIterGetIndexWhere(sqlite3rbu *p, RbuObjIter *pIter){ in rbuObjIterGetIndexWhere() argument
2223 assert( pIter->zIdxSql==0 && pIter->nIdxCol==0 && pIter->aIdxCol==0 ); in rbuObjIterGetIndexWhere()
2232 rc = sqlite3_bind_text(pStmt, 1, pIter->zIdx, -1, SQLITE_STATIC); in rbuObjIterGetIndexWhere()
2236 pIter->zIdxSql = zSql = rbuStrndup(zSql, &rc); in rbuObjIterGetIndexWhere()
2249 pIter->aIdxCol, (nIdxAlloc+16)*sizeof(RbuSpan) in rbuObjIterGetIndexWhere()
2255 pIter->aIdxCol = aIdxCol; in rbuObjIterGetIndexWhere()
2262 pIter->aIdxCol[0].zSpan = &zSql[i+1]; in rbuObjIterGetIndexWhere()
2269 int nSpan = &zSql[i] - pIter->aIdxCol[iIdxCol].zSpan; in rbuObjIterGetIndexWhere()
2270 pIter->aIdxCol[iIdxCol++].nSpan = nSpan; in rbuObjIterGetIndexWhere()
2275 int nSpan = &zSql[i] - pIter->aIdxCol[iIdxCol].zSpan; in rbuObjIterGetIndexWhere()
2276 pIter->aIdxCol[iIdxCol++].nSpan = nSpan; in rbuObjIterGetIndexWhere()
2277 pIter->aIdxCol[iIdxCol].zSpan = &zSql[i+1]; in rbuObjIterGetIndexWhere()
2301 pIter->nIdxCol = iIdxCol; in rbuObjIterGetIndexWhere()
2320 RbuObjIter *pIter, in rbuObjIterPrepareAll() argument
2323 assert( pIter->bCleanup==0 ); in rbuObjIterPrepareAll()
2324 if( pIter->pSelect==0 && rbuObjIterCacheTableInfo(p, pIter)==SQLITE_OK ){ in rbuObjIterPrepareAll()
2325 const int tnum = pIter->iTnum; in rbuObjIterPrepareAll()
2328 const char *zIdx = pIter->zIdx; in rbuObjIterPrepareAll()
2337 const char *zTbl = pIter->zTbl; in rbuObjIterPrepareAll()
2345 assert( pIter->eType!=RBU_PK_VTAB ); in rbuObjIterPrepareAll()
2346 zPart = rbuObjIterGetIndexWhere(p, pIter); in rbuObjIterPrepareAll()
2348 p, pIter, &zImposterCols, &zImposterPK, &zWhere, &nBind in rbuObjIterPrepareAll()
2362 pIter->nCol = nBind; in rbuObjIterPrepareAll()
2365 p->dbMain, &pIter->pInsert, &p->zErrmsg, in rbuObjIterPrepareAll()
2373 p->dbMain, &pIter->pDelete, &p->zErrmsg, in rbuObjIterPrepareAll()
2384 zStart = rbuVacuumIndexStart(p, pIter); in rbuObjIterPrepareAll()
2394 pIter->zDataTbl, in rbuObjIterPrepareAll()
2402 if( pIter->eType==RBU_PK_EXTERNAL || pIter->eType==RBU_PK_NONE ){ in rbuObjIterPrepareAll()
2405 zCollist, p->zStateDb, pIter->zDataTbl, in rbuObjIterPrepareAll()
2415 zCollist, p->zStateDb, pIter->zDataTbl, zPart, in rbuObjIterPrepareAll()
2416 zCollist, pIter->zDataTbl, in rbuObjIterPrepareAll()
2423 p->rc = prepareFreeAndCollectError(p->dbRbu,&pIter->pSelect,pz,zSql); in rbuObjIterPrepareAll()
2435 int bRbuRowid = (pIter->eType==RBU_PK_VTAB) in rbuObjIterPrepareAll()
2436 ||(pIter->eType==RBU_PK_NONE) in rbuObjIterPrepareAll()
2437 ||(pIter->eType==RBU_PK_EXTERNAL && rbuIsVacuum(p)); in rbuObjIterPrepareAll()
2438 const char *zTbl = pIter->zTbl; /* Table this step applies to */ in rbuObjIterPrepareAll()
2441 char *zBindings = rbuObjIterGetBindlist(p, pIter->nTblCol + bRbuRowid); in rbuObjIterPrepareAll()
2442 char *zWhere = rbuObjIterGetWhere(p, pIter); in rbuObjIterPrepareAll()
2443 char *zOldlist = rbuObjIterGetOldlist(p, pIter, "old"); in rbuObjIterPrepareAll()
2444 char *zNewlist = rbuObjIterGetOldlist(p, pIter, "new"); in rbuObjIterPrepareAll()
2446 zCollist = rbuObjIterGetCollist(p, pIter); in rbuObjIterPrepareAll()
2447 pIter->nCol = pIter->nTblCol; in rbuObjIterPrepareAll()
2450 rbuCreateImposterTable(p, pIter); in rbuObjIterPrepareAll()
2451 rbuCreateImposterTable2(p, pIter); in rbuObjIterPrepareAll()
2452 zWrite = (pIter->eType==RBU_PK_VTAB ? "" : "rbu_imp_"); in rbuObjIterPrepareAll()
2456 p->rc = prepareFreeAndCollectError(p->dbMain, &pIter->pInsert, pz, in rbuObjIterPrepareAll()
2468 p->rc = prepareFreeAndCollectError(p->dbMain, &pIter->pDelete, pz, in rbuObjIterPrepareAll()
2475 if( rbuIsVacuum(p)==0 && pIter->abIndexed ){ in rbuObjIterPrepareAll()
2477 if( pIter->eType==RBU_PK_EXTERNAL || pIter->eType==RBU_PK_NONE ){ in rbuObjIterPrepareAll()
2485 , p->zStateDb, pIter->zDataTbl in rbuObjIterPrepareAll()
2486 , (pIter->eType==RBU_PK_EXTERNAL ? ", 0 AS rbu_rowid" : "") in rbuObjIterPrepareAll()
2487 , pIter->zDataTbl in rbuObjIterPrepareAll()
2510 if( pIter->eType==RBU_PK_EXTERNAL || pIter->eType==RBU_PK_NONE ){ in rbuObjIterPrepareAll()
2520 rbuObjIterPrepareTmpInsert(p, pIter, zCollist, zRbuRowid); in rbuObjIterPrepareAll()
2534 zStart = rbuVacuumTableStart(p, pIter, bRbuRowid, zWrite); in rbuObjIterPrepareAll()
2543 zOrder = rbuObjIterGetPkList(p, pIter, "", ", ", ""); in rbuObjIterPrepareAll()
2548 p->rc = prepareFreeAndCollectError(p->dbRbu, &pIter->pSelect, pz, in rbuObjIterPrepareAll()
2554 pIter->zDataTbl, (zStart ? zStart : ""), in rbuObjIterPrepareAll()
2587 RbuObjIter *pIter, /* Object iterator */ in rbuGetUpdateStmt() argument
2602 for(pp=&pIter->pRbuUpdate; *pp; pp=&((*pp)->pNext)){ in rbuGetUpdateStmt()
2606 pUp->pNext = pIter->pRbuUpdate; in rbuGetUpdateStmt()
2607 pIter->pRbuUpdate = pUp; in rbuGetUpdateStmt()
2616 for(pp=&pIter->pRbuUpdate; *pp!=pUp; pp=&((*pp)->pNext)); in rbuGetUpdateStmt()
2621 pUp = (RbuUpdateStmt*)rbuMalloc(p, sizeof(RbuUpdateStmt)+pIter->nTblCol+1); in rbuGetUpdateStmt()
2625 char *zWhere = rbuObjIterGetWhere(p, pIter); in rbuGetUpdateStmt()
2626 char *zSet = rbuObjIterGetSetlist(p, pIter, zMask); in rbuGetUpdateStmt()
2630 memcpy(pUp->zMask, zMask, pIter->nTblCol); in rbuGetUpdateStmt()
2631 pUp->pNext = pIter->pRbuUpdate; in rbuGetUpdateStmt()
2632 pIter->pRbuUpdate = pUp; in rbuGetUpdateStmt()
2637 if( pIter->eType!=RBU_PK_VTAB ) zPrefix = "rbu_imp_"; in rbuGetUpdateStmt()
2639 zPrefix, pIter->zTbl, zSet, zWhere in rbuGetUpdateStmt()
3341 RbuObjIter *pIter = &p->objiter; in rbuStepOneOp() local
3347 assert( eType!=RBU_DELETE || pIter->zIdx==0 ); in rbuStepOneOp()
3361 pWriter = pIter->pDelete; in rbuStepOneOp()
3363 pWriter = pIter->pInsert; in rbuStepOneOp()
3366 for(i=0; i<pIter->nCol; i++){ in rbuStepOneOp()
3371 && pIter->zIdx==0 && pIter->eType==RBU_PK_IPK && pIter->abTblPk[i] in rbuStepOneOp()
3372 && sqlite3_column_type(pIter->pSelect, i)==SQLITE_NULL in rbuStepOneOp()
3379 if( eType==RBU_DELETE && pIter->abTblPk[i]==0 ){ in rbuStepOneOp()
3383 pVal = sqlite3_column_value(pIter->pSelect, i); in rbuStepOneOp()
3387 if( pIter->zIdx==0 ){ in rbuStepOneOp()
3388 if( pIter->eType==RBU_PK_VTAB in rbuStepOneOp()
3389 || pIter->eType==RBU_PK_NONE in rbuStepOneOp()
3390 || (pIter->eType==RBU_PK_EXTERNAL && rbuIsVacuum(p)) in rbuStepOneOp()
3399 assertColumnName(pIter->pSelect, pIter->nCol+1, in rbuStepOneOp()
3402 pVal = sqlite3_column_value(pIter->pSelect, pIter->nCol+1); in rbuStepOneOp()
3403 p->rc = sqlite3_bind_value(pWriter, pIter->nCol+1, pVal); in rbuStepOneOp()
3424 RbuObjIter *pIter = &p->objiter; in rbuStep() local
3433 assert( eType!=RBU_UPDATE || pIter->zIdx==0 ); in rbuStep()
3435 if( pIter->zIdx==0 && (eType==RBU_IDX_DELETE || eType==RBU_IDX_INSERT) ){ in rbuStep()
3439 if( pIter->zIdx==0 ){ in rbuStep()
3453 rbuGetUpdateStmt(p, pIter, zMask, &pUpdate); in rbuStep()
3456 for(i=0; p->rc==SQLITE_OK && i<pIter->nCol; i++){ in rbuStep()
3457 char c = zMask[pIter->aiSrcOrder[i]]; in rbuStep()
3458 pVal = sqlite3_column_value(pIter->pSelect, i); in rbuStep()
3459 if( pIter->abTblPk[i] || c!='.' ){ in rbuStep()
3464 && (pIter->eType==RBU_PK_VTAB || pIter->eType==RBU_PK_NONE) in rbuStep()
3467 assertColumnName(pIter->pSelect, pIter->nCol+1, "rbu_rowid"); in rbuStep()
3468 pVal = sqlite3_column_value(pIter->pSelect, pIter->nCol+1); in rbuStep()
3469 p->rc = sqlite3_bind_value(pUpdate, pIter->nCol+1, pVal); in rbuStep()
3656 RbuObjIter *pIter = &p->objiter; in sqlite3rbu_step() local
3666 while( p->rc==SQLITE_OK && pIter->zTbl ){ in sqlite3rbu_step()
3668 if( pIter->bCleanup ){ in sqlite3rbu_step()
3672 if( rbuIsVacuum(p)==0 && pIter->abIndexed ){ in sqlite3rbu_step()
3674 "DELETE FROM %s.'rbu_tmp_%q'", p->zStateDb, pIter->zDataTbl in sqlite3rbu_step()
3678 rbuObjIterPrepareAll(p, pIter, 0); in sqlite3rbu_step()
3682 int rc = sqlite3_step(pIter->pSelect); in sqlite3rbu_step()
3688 p->rc = sqlite3_reset(pIter->pSelect); in sqlite3rbu_step()
3693 rbuObjIterNext(p, pIter); in sqlite3rbu_step()
3697 assert( pIter->zTbl==0 ); in sqlite3rbu_step()
3800 RbuObjIter *pIter = &p->objiter; in rbuSetupOal() local
3803 while( rc==SQLITE_OK && pIter->zTbl && (pIter->bCleanup in rbuSetupOal()
3804 || rbuStrCompare(pIter->zIdx, pState->zIdx) in rbuSetupOal()
3805 || (pState->zDataTbl==0 && rbuStrCompare(pIter->zTbl, pState->zTbl)) in rbuSetupOal()
3806 || (pState->zDataTbl && rbuStrCompare(pIter->zDataTbl, pState->zDataTbl)) in rbuSetupOal()
3808 rc = rbuObjIterNext(p, pIter); in rbuSetupOal()
3811 if( rc==SQLITE_OK && !pIter->zTbl ){ in rbuSetupOal()
4520 rbu_file *pIter; in rbuMainlistAdd() local
4524 for(pIter=pRbuVfs->pMain; pIter; pIter=pIter->pMainNext); in rbuMainlistAdd()
4528 for(pIter=pRbuVfs->pMainRbu; pIter && pIter!=p; pIter=pIter->pMainRbuNext){} in rbuMainlistAdd()
4529 if( pIter==0 ){ in rbuMainlistAdd()