pWriter 52523 ext/sqlite3/libsqlite/sqlite3.c Btree *pWriter; /* Btree with currently open write transaction */ pWriter 53311 ext/sqlite3/libsqlite/sqlite3.c assert( eLock==READ_LOCK || (p==pBt->pWriter && p->inTrans==TRANS_WRITE) ); pWriter 53322 ext/sqlite3/libsqlite/sqlite3.c if( pBt->pWriter!=p && (pBt->btsFlags & BTS_EXCLUSIVE)!=0 ){ pWriter 53323 ext/sqlite3/libsqlite/sqlite3.c sqlite3ConnectionBlocked(p->db, pBt->pWriter->db); pWriter 53342 ext/sqlite3/libsqlite/sqlite3.c assert( p==pBt->pWriter ); pWriter 53444 ext/sqlite3/libsqlite/sqlite3.c assert( (pBt->btsFlags & BTS_EXCLUSIVE)==0 || pBt->pWriter==pLock->pBtree ); pWriter 53457 ext/sqlite3/libsqlite/sqlite3.c assert( (pBt->btsFlags & BTS_PENDING)==0 || pBt->pWriter ); pWriter 53458 ext/sqlite3/libsqlite/sqlite3.c if( pBt->pWriter==p ){ pWriter 53459 ext/sqlite3/libsqlite/sqlite3.c pBt->pWriter = 0; pWriter 53480 ext/sqlite3/libsqlite/sqlite3.c if( pBt->pWriter==p ){ pWriter 53482 ext/sqlite3/libsqlite/sqlite3.c pBt->pWriter = 0; pWriter 55961 ext/sqlite3/libsqlite/sqlite3.c pBlock = pBt->pWriter->db; pWriter 56032 ext/sqlite3/libsqlite/sqlite3.c assert( !pBt->pWriter ); pWriter 56033 ext/sqlite3/libsqlite/sqlite3.c pBt->pWriter = p; pWriter 145159 ext/sqlite3/libsqlite/sqlite3.c SegmentWriter *pWriter = *ppWriter; pWriter 145161 ext/sqlite3/libsqlite/sqlite3.c if( !pWriter ){ pWriter 145166 ext/sqlite3/libsqlite/sqlite3.c pWriter = (SegmentWriter *)sqlite3_malloc(sizeof(SegmentWriter)); pWriter 145167 ext/sqlite3/libsqlite/sqlite3.c if( !pWriter ) return SQLITE_NOMEM; pWriter 145168 ext/sqlite3/libsqlite/sqlite3.c memset(pWriter, 0, sizeof(SegmentWriter)); pWriter 145169 ext/sqlite3/libsqlite/sqlite3.c *ppWriter = pWriter; pWriter 145172 ext/sqlite3/libsqlite/sqlite3.c pWriter->aData = (char *)sqlite3_malloc(p->nNodeSize); pWriter 145173 ext/sqlite3/libsqlite/sqlite3.c if( !pWriter->aData ) return SQLITE_NOMEM; pWriter 145174 ext/sqlite3/libsqlite/sqlite3.c pWriter->nSize = p->nNodeSize; pWriter 145180 ext/sqlite3/libsqlite/sqlite3.c pWriter->iFree = sqlite3_column_int64(pStmt, 0); pWriter 145181 ext/sqlite3/libsqlite/sqlite3.c pWriter->iFirst = pWriter->iFree; pWriter 145186 ext/sqlite3/libsqlite/sqlite3.c nData = pWriter->nData; pWriter 145188 ext/sqlite3/libsqlite/sqlite3.c nPrefix = fts3PrefixCompress(pWriter->zTerm, pWriter->nTerm, zTerm, nTerm); pWriter 145202 ext/sqlite3/libsqlite/sqlite3.c rc = fts3WriteSegment(p, pWriter->iFree++, pWriter->aData, nData); pWriter 145219 ext/sqlite3/libsqlite/sqlite3.c rc = fts3NodeAddTerm(p, &pWriter->pTree, isCopyTerm, zTerm, nPrefix+1); pWriter 145223 ext/sqlite3/libsqlite/sqlite3.c pWriter->nTerm = 0; pWriter 145235 ext/sqlite3/libsqlite/sqlite3.c pWriter->nLeafData += nReq; pWriter 145240 ext/sqlite3/libsqlite/sqlite3.c if( nReq>pWriter->nSize ){ pWriter 145241 ext/sqlite3/libsqlite/sqlite3.c char *aNew = sqlite3_realloc(pWriter->aData, nReq); pWriter 145243 ext/sqlite3/libsqlite/sqlite3.c pWriter->aData = aNew; pWriter 145244 ext/sqlite3/libsqlite/sqlite3.c pWriter->nSize = nReq; pWriter 145246 ext/sqlite3/libsqlite/sqlite3.c assert( nData+nReq<=pWriter->nSize ); pWriter 145249 ext/sqlite3/libsqlite/sqlite3.c nData += sqlite3Fts3PutVarint(&pWriter->aData[nData], nPrefix); pWriter 145250 ext/sqlite3/libsqlite/sqlite3.c nData += sqlite3Fts3PutVarint(&pWriter->aData[nData], nSuffix); pWriter 145251 ext/sqlite3/libsqlite/sqlite3.c memcpy(&pWriter->aData[nData], &zTerm[nPrefix], nSuffix); pWriter 145253 ext/sqlite3/libsqlite/sqlite3.c nData += sqlite3Fts3PutVarint(&pWriter->aData[nData], nDoclist); pWriter 145254 ext/sqlite3/libsqlite/sqlite3.c memcpy(&pWriter->aData[nData], aDoclist, nDoclist); pWriter 145255 ext/sqlite3/libsqlite/sqlite3.c pWriter->nData = nData + nDoclist; pWriter 145263 ext/sqlite3/libsqlite/sqlite3.c if( nTerm>pWriter->nMalloc ){ pWriter 145264 ext/sqlite3/libsqlite/sqlite3.c char *zNew = sqlite3_realloc(pWriter->zMalloc, nTerm*2); pWriter 145268 ext/sqlite3/libsqlite/sqlite3.c pWriter->nMalloc = nTerm*2; pWriter 145269 ext/sqlite3/libsqlite/sqlite3.c pWriter->zMalloc = zNew; pWriter 145270 ext/sqlite3/libsqlite/sqlite3.c pWriter->zTerm = zNew; pWriter 145272 ext/sqlite3/libsqlite/sqlite3.c assert( pWriter->zTerm==pWriter->zMalloc ); pWriter 145273 ext/sqlite3/libsqlite/sqlite3.c memcpy(pWriter->zTerm, zTerm, nTerm); pWriter 145275 ext/sqlite3/libsqlite/sqlite3.c pWriter->zTerm = (char *)zTerm; pWriter 145277 ext/sqlite3/libsqlite/sqlite3.c pWriter->nTerm = nTerm; pWriter 145290 ext/sqlite3/libsqlite/sqlite3.c SegmentWriter *pWriter, /* SegmentWriter to flush to the db */ pWriter 145295 ext/sqlite3/libsqlite/sqlite3.c if( pWriter->pTree ){ pWriter 145301 ext/sqlite3/libsqlite/sqlite3.c iLastLeaf = pWriter->iFree; pWriter 145302 ext/sqlite3/libsqlite/sqlite3.c rc = fts3WriteSegment(p, pWriter->iFree++, pWriter->aData, pWriter->nData); pWriter 145304 ext/sqlite3/libsqlite/sqlite3.c rc = fts3NodeWrite(p, pWriter->pTree, 1, pWriter 145305 ext/sqlite3/libsqlite/sqlite3.c pWriter->iFirst, pWriter->iFree, &iLast, &zRoot, &nRoot); pWriter 145309 ext/sqlite3/libsqlite/sqlite3.c pWriter->iFirst, iLastLeaf, iLast, pWriter->nLeafData, zRoot, nRoot); pWriter 145314 ext/sqlite3/libsqlite/sqlite3.c 0, 0, 0, pWriter->nLeafData, pWriter->aData, pWriter->nData); pWriter 145324 ext/sqlite3/libsqlite/sqlite3.c static void fts3SegWriterFree(SegmentWriter *pWriter){ pWriter 145325 ext/sqlite3/libsqlite/sqlite3.c if( pWriter ){ pWriter 145326 ext/sqlite3/libsqlite/sqlite3.c sqlite3_free(pWriter->aData); pWriter 145327 ext/sqlite3/libsqlite/sqlite3.c sqlite3_free(pWriter->zMalloc); pWriter 145328 ext/sqlite3/libsqlite/sqlite3.c fts3NodeFree(pWriter->pTree); pWriter 145329 ext/sqlite3/libsqlite/sqlite3.c sqlite3_free(pWriter); pWriter 146118 ext/sqlite3/libsqlite/sqlite3.c SegmentWriter *pWriter = 0; /* Used to write the new, merged, segment */ pWriter 146175 ext/sqlite3/libsqlite/sqlite3.c rc = fts3SegWriterAdd(p, &pWriter, 1, pWriter 146179 ext/sqlite3/libsqlite/sqlite3.c assert( pWriter || bIgnoreEmpty ); pWriter 146187 ext/sqlite3/libsqlite/sqlite3.c if( pWriter ){ pWriter 146188 ext/sqlite3/libsqlite/sqlite3.c rc = fts3SegWriterFlush(p, pWriter, iNewLevel, iIdx); pWriter 146191 ext/sqlite3/libsqlite/sqlite3.c rc = fts3PromoteSegments(p, iNewLevel, pWriter->nLeafData); pWriter 146197 ext/sqlite3/libsqlite/sqlite3.c fts3SegWriterFree(pWriter); pWriter 146735 ext/sqlite3/libsqlite/sqlite3.c IncrmergeWriter *pWriter, /* Writer object */ pWriter 146739 ext/sqlite3/libsqlite/sqlite3.c sqlite3_int64 iPtr = pWriter->aNodeWriter[0].iBlock; pWriter 146745 ext/sqlite3/libsqlite/sqlite3.c NodeWriter *pNode = &pWriter->aNodeWriter[iLayer]; pWriter 146886 ext/sqlite3/libsqlite/sqlite3.c IncrmergeWriter *pWriter, /* Writer object */ pWriter 146899 ext/sqlite3/libsqlite/sqlite3.c pLeaf = &pWriter->aNodeWriter[0]; pWriter 146912 ext/sqlite3/libsqlite/sqlite3.c pWriter->nWork++; pWriter 146927 ext/sqlite3/libsqlite/sqlite3.c rc = fts3IncrmergePush(p, pWriter, zTerm, nPrefix+1); pWriter 146941 ext/sqlite3/libsqlite/sqlite3.c pWriter->nLeafData += nSpace; pWriter 146971 ext/sqlite3/libsqlite/sqlite3.c IncrmergeWriter *pWriter, /* Merge-writer object */ pWriter 146984 ext/sqlite3/libsqlite/sqlite3.c NodeWriter *pNode = &pWriter->aNodeWriter[iRoot]; pWriter 147011 ext/sqlite3/libsqlite/sqlite3.c Blob *pBlock = &pWriter->aNodeWriter[1].block; pWriter 147016 ext/sqlite3/libsqlite/sqlite3.c &pBlock->a[1], pWriter->aNodeWriter[0].iBlock pWriter 147021 ext/sqlite3/libsqlite/sqlite3.c pRoot = &pWriter->aNodeWriter[iRoot]; pWriter 147025 ext/sqlite3/libsqlite/sqlite3.c NodeWriter *pNode = &pWriter->aNodeWriter[i]; pWriter 147036 ext/sqlite3/libsqlite/sqlite3.c pWriter->iAbsLevel+1, /* level */ pWriter 147037 ext/sqlite3/libsqlite/sqlite3.c pWriter->iIdx, /* idx */ pWriter 147038 ext/sqlite3/libsqlite/sqlite3.c pWriter->iStart, /* start_block */ pWriter 147039 ext/sqlite3/libsqlite/sqlite3.c pWriter->aNodeWriter[0].iBlock, /* leaves_end_block */ pWriter 147040 ext/sqlite3/libsqlite/sqlite3.c pWriter->iEnd, /* end_block */ pWriter 147041 ext/sqlite3/libsqlite/sqlite3.c (pWriter->bNoLeafData==0 ? pWriter->nLeafData : 0), /* end_block */ pWriter 147122 ext/sqlite3/libsqlite/sqlite3.c IncrmergeWriter *pWriter /* Populate this object */ pWriter 147143 ext/sqlite3/libsqlite/sqlite3.c fts3ReadEndBlockField(pSelect, 3, &iEnd, &pWriter->nLeafData); pWriter 147144 ext/sqlite3/libsqlite/sqlite3.c if( pWriter->nLeafData<0 ){ pWriter 147145 ext/sqlite3/libsqlite/sqlite3.c pWriter->nLeafData = pWriter->nLeafData * -1; pWriter 147147 ext/sqlite3/libsqlite/sqlite3.c pWriter->bNoLeafData = (pWriter->nLeafData==0); pWriter 147186 ext/sqlite3/libsqlite/sqlite3.c pWriter->nLeafEst = (int)((iEnd - iStart) + 1)/FTS_MAX_APPENDABLE_HEIGHT; pWriter 147187 ext/sqlite3/libsqlite/sqlite3.c pWriter->iStart = iStart; pWriter 147188 ext/sqlite3/libsqlite/sqlite3.c pWriter->iEnd = iEnd; pWriter 147189 ext/sqlite3/libsqlite/sqlite3.c pWriter->iAbsLevel = iAbsLevel; pWriter 147190 ext/sqlite3/libsqlite/sqlite3.c pWriter->iIdx = iIdx; pWriter 147193 ext/sqlite3/libsqlite/sqlite3.c pWriter->aNodeWriter[i].iBlock = pWriter->iStart + i*pWriter->nLeafEst; pWriter 147196 ext/sqlite3/libsqlite/sqlite3.c pNode = &pWriter->aNodeWriter[nHeight]; pWriter 147197 ext/sqlite3/libsqlite/sqlite3.c pNode->iBlock = pWriter->iStart + pWriter->nLeafEst*nHeight; pWriter 147206 ext/sqlite3/libsqlite/sqlite3.c pNode = &pWriter->aNodeWriter[i]; pWriter 147217 ext/sqlite3/libsqlite/sqlite3.c pNode = &pWriter->aNodeWriter[i-1]; pWriter 147298 ext/sqlite3/libsqlite/sqlite3.c IncrmergeWriter *pWriter /* Populate this object */ pWriter 147322 ext/sqlite3/libsqlite/sqlite3.c pWriter->iStart = sqlite3_column_int64(pFirstBlock, 0); pWriter 147323 ext/sqlite3/libsqlite/sqlite3.c pWriter->iEnd = pWriter->iStart - 1; pWriter 147324 ext/sqlite3/libsqlite/sqlite3.c pWriter->iEnd += nLeafEst * FTS_MAX_APPENDABLE_HEIGHT; pWriter 147333 ext/sqlite3/libsqlite/sqlite3.c rc = fts3WriteSegment(p, pWriter->iEnd, 0, 0); pWriter 147336 ext/sqlite3/libsqlite/sqlite3.c pWriter->iAbsLevel = iAbsLevel; pWriter 147337 ext/sqlite3/libsqlite/sqlite3.c pWriter->nLeafEst = nLeafEst; pWriter 147338 ext/sqlite3/libsqlite/sqlite3.c pWriter->iIdx = iIdx; pWriter 147342 ext/sqlite3/libsqlite/sqlite3.c pWriter->aNodeWriter[i].iBlock = pWriter->iStart + i*pWriter->nLeafEst; pWriter 147759 ext/sqlite3/libsqlite/sqlite3.c IncrmergeWriter *pWriter; /* Writer object */ pWriter 147766 ext/sqlite3/libsqlite/sqlite3.c const int nAlloc = sizeof(*pCsr) + sizeof(*pFilter) + sizeof(*pWriter); pWriter 147767 ext/sqlite3/libsqlite/sqlite3.c pWriter = (IncrmergeWriter *)sqlite3_malloc(nAlloc); pWriter 147768 ext/sqlite3/libsqlite/sqlite3.c if( !pWriter ) return SQLITE_NOMEM; pWriter 147769 ext/sqlite3/libsqlite/sqlite3.c pFilter = (Fts3SegFilter *)&pWriter[1]; pWriter 147829 ext/sqlite3/libsqlite/sqlite3.c memset(pWriter, 0, nAlloc); pWriter 147854 ext/sqlite3/libsqlite/sqlite3.c rc = fts3IncrmergeLoad(p, iAbsLevel, iIdx-1, zKey, nKey, pWriter); pWriter 147856 ext/sqlite3/libsqlite/sqlite3.c rc = fts3IncrmergeWriter(p, iAbsLevel, iIdx, pCsr, pWriter); pWriter 147859 ext/sqlite3/libsqlite/sqlite3.c if( rc==SQLITE_OK && pWriter->nLeafEst ){ pWriter 147862 ext/sqlite3/libsqlite/sqlite3.c rc = fts3IncrmergeAppend(p, pWriter, pCsr); pWriter 147864 ext/sqlite3/libsqlite/sqlite3.c if( pWriter->nWork>=nRem && rc==SQLITE_ROW ) rc = SQLITE_OK; pWriter 147869 ext/sqlite3/libsqlite/sqlite3.c nRem -= (1 + pWriter->nWork); pWriter 147879 ext/sqlite3/libsqlite/sqlite3.c pWriter->nLeafData = pWriter->nLeafData * -1; pWriter 147881 ext/sqlite3/libsqlite/sqlite3.c fts3IncrmergeRelease(p, pWriter, &rc); pWriter 147882 ext/sqlite3/libsqlite/sqlite3.c if( nSeg==0 && pWriter->bNoLeafData==0 ){ pWriter 147883 ext/sqlite3/libsqlite/sqlite3.c fts3PromoteSegments(p, iAbsLevel+1, pWriter->nLeafData); pWriter 147895 ext/sqlite3/libsqlite/sqlite3.c sqlite3_free(pWriter);