Lines Matching refs:pWriter

70972   Btree *pWriter;       /* Btree with currently open write transaction */  member
71895 assert( eLock==READ_LOCK || (p==pBt->pWriter && p->inTrans==TRANS_WRITE) );
71906 if( pBt->pWriter!=p && (pBt->btsFlags & BTS_EXCLUSIVE)!=0 ){
71907 sqlite3ConnectionBlocked(p->db, pBt->pWriter->db);
71926 assert( p==pBt->pWriter );
72032 assert( (pBt->btsFlags & BTS_EXCLUSIVE)==0 || pBt->pWriter==pLock->pBtree );
72045 assert( (pBt->btsFlags & BTS_PENDING)==0 || pBt->pWriter );
72046 if( pBt->pWriter==p ){
72047 pBt->pWriter = 0;
72071 if( pBt->pWriter==p ){
72073 pBt->pWriter = 0;
75185 pBlock = pBt->pWriter->db;
75286 assert( !pBt->pWriter );
75287 pBt->pWriter = p;
201685 SegmentWriter *pWriter = *ppWriter;
201687 if( !pWriter ){
201692 pWriter = (SegmentWriter *)sqlite3_malloc64(sizeof(SegmentWriter));
201693 if( !pWriter ) return SQLITE_NOMEM;
201694 memset(pWriter, 0, sizeof(SegmentWriter));
201695 *ppWriter = pWriter;
201698 pWriter->aData = (char *)sqlite3_malloc64(p->nNodeSize);
201699 if( !pWriter->aData ) return SQLITE_NOMEM;
201700 pWriter->nSize = p->nNodeSize;
201706 pWriter->iFree = sqlite3_column_int64(pStmt, 0);
201707 pWriter->iFirst = pWriter->iFree;
201712 nData = pWriter->nData;
201714 nPrefix = fts3PrefixCompress(pWriter->zTerm, pWriter->nTerm, zTerm, nTerm);
201733 if( pWriter->iFree==LARGEST_INT64 ) return FTS_CORRUPT_VTAB;
201734 rc = fts3WriteSegment(p, pWriter->iFree++, pWriter->aData, nData);
201751 rc = fts3NodeAddTerm(p, &pWriter->pTree, isCopyTerm, zTerm, nPrefix+1);
201755 pWriter->nTerm = 0;
201767 pWriter->nLeafData += nReq;
201772 if( nReq>pWriter->nSize ){
201773 char *aNew = sqlite3_realloc64(pWriter->aData, nReq);
201775 pWriter->aData = aNew;
201776 pWriter->nSize = nReq;
201778 assert( nData+nReq<=pWriter->nSize );
201781 nData += sqlite3Fts3PutVarint(&pWriter->aData[nData], nPrefix);
201782 nData += sqlite3Fts3PutVarint(&pWriter->aData[nData], nSuffix);
201784 memcpy(&pWriter->aData[nData], &zTerm[nPrefix], nSuffix);
201786 nData += sqlite3Fts3PutVarint(&pWriter->aData[nData], nDoclist);
201788 memcpy(&pWriter->aData[nData], aDoclist, nDoclist);
201789 pWriter->nData = nData + nDoclist;
201797 if( nTerm>pWriter->nMalloc ){
201798 char *zNew = sqlite3_realloc64(pWriter->zMalloc, (i64)nTerm*2);
201802 pWriter->nMalloc = nTerm*2;
201803 pWriter->zMalloc = zNew;
201804 pWriter->zTerm = zNew;
201806 assert( pWriter->zTerm==pWriter->zMalloc );
201808 memcpy(pWriter->zTerm, zTerm, nTerm);
201810 pWriter->zTerm = (char *)zTerm;
201812 pWriter->nTerm = nTerm;
201825 SegmentWriter *pWriter, /* SegmentWriter to flush to the db */
201830 if( pWriter->pTree ){
201836 iLastLeaf = pWriter->iFree;
201837 rc = fts3WriteSegment(p, pWriter->iFree++, pWriter->aData, pWriter->nData);
201839 rc = fts3NodeWrite(p, pWriter->pTree, 1,
201840 pWriter->iFirst, pWriter->iFree, &iLast, &zRoot, &nRoot);
201844 pWriter->iFirst, iLastLeaf, iLast, pWriter->nLeafData, zRoot, nRoot);
201849 0, 0, 0, pWriter->nLeafData, pWriter->aData, pWriter->nData);
201859 static void fts3SegWriterFree(SegmentWriter *pWriter){
201860 if( pWriter ){
201861 sqlite3_free(pWriter->aData);
201862 sqlite3_free(pWriter->zMalloc);
201863 fts3NodeFree(pWriter->pTree);
201864 sqlite3_free(pWriter);
202668 SegmentWriter *pWriter = 0; /* Used to write the new, merged, segment */
202727 rc = fts3SegWriterAdd(p, &pWriter, 1,
202731 assert_fts3_nc( pWriter || bIgnoreEmpty );
202739 if( pWriter ){
202740 rc = fts3SegWriterFlush(p, pWriter, iNewLevel, iIdx);
202743 rc = fts3PromoteSegments(p, iNewLevel, pWriter->nLeafData);
202749 fts3SegWriterFree(pWriter);
203300 IncrmergeWriter *pWriter, /* Writer object */
203304 sqlite3_int64 iPtr = pWriter->aNodeWriter[0].iBlock;
203310 NodeWriter *pNode = &pWriter->aNodeWriter[iLayer];
203457 IncrmergeWriter *pWriter, /* Writer object */
203470 pLeaf = &pWriter->aNodeWriter[0];
203485 && pLeaf->iBlock < (pWriter->iStart + pWriter->nLeafEst)
203488 pWriter->nWork++;
203503 rc = fts3IncrmergePush(p, pWriter, zTerm, nPrefix+1);
203517 pWriter->nLeafData += nSpace;
203547 IncrmergeWriter *pWriter, /* Merge-writer object */
203560 NodeWriter *pNode = &pWriter->aNodeWriter[iRoot];
203587 Blob *pBlock = &pWriter->aNodeWriter[1].block;
203592 &pBlock->a[1], pWriter->aNodeWriter[0].iBlock
203597 pRoot = &pWriter->aNodeWriter[iRoot];
203601 NodeWriter *pNode = &pWriter->aNodeWriter[i];
203612 pWriter->iAbsLevel+1, /* level */
203613 pWriter->iIdx, /* idx */
203614 pWriter->iStart, /* start_block */
203615 pWriter->aNodeWriter[0].iBlock, /* leaves_end_block */
203616 pWriter->iEnd, /* end_block */
203617 (pWriter->bNoLeafData==0 ? pWriter->nLeafData : 0), /* end_block */
203702 IncrmergeWriter *pWriter /* Populate this object */
203723 fts3ReadEndBlockField(pSelect, 3, &iEnd, &pWriter->nLeafData);
203724 if( pWriter->nLeafData<0 ){
203725 pWriter->nLeafData = pWriter->nLeafData * -1;
203727 pWriter->bNoLeafData = (pWriter->nLeafData==0);
203774 pWriter->nLeafEst = (int)((iEnd - iStart) + 1)/FTS_MAX_APPENDABLE_HEIGHT;
203775 pWriter->iStart = iStart;
203776 pWriter->iEnd = iEnd;
203777 pWriter->iAbsLevel = iAbsLevel;
203778 pWriter->iIdx = iIdx;
203781 pWriter->aNodeWriter[i].iBlock = pWriter->iStart + i*pWriter->nLeafEst;
203784 pNode = &pWriter->aNodeWriter[nHeight];
203785 pNode->iBlock = pWriter->iStart + pWriter->nLeafEst*nHeight;
203798 pNode = &pWriter->aNodeWriter[i];
203813 pNode = &pWriter->aNodeWriter[i-1];
203898 IncrmergeWriter *pWriter /* Populate this object */
203922 pWriter->iStart = sqlite3_column_int64(pFirstBlock, 0);
203923 pWriter->iEnd = pWriter->iStart - 1;
203924 pWriter->iEnd += nLeafEst * FTS_MAX_APPENDABLE_HEIGHT;
203933 rc = fts3WriteSegment(p, pWriter->iEnd, 0, 0);
203936 pWriter->iAbsLevel = iAbsLevel;
203937 pWriter->nLeafEst = nLeafEst;
203938 pWriter->iIdx = iIdx;
203942 pWriter->aNodeWriter[i].iBlock = pWriter->iStart + i*pWriter->nLeafEst;
204368 IncrmergeWriter *pWriter; /* Writer object */
204375 const int nAlloc = sizeof(*pCsr) + sizeof(*pFilter) + sizeof(*pWriter);
204376 pWriter = (IncrmergeWriter *)sqlite3_malloc64(nAlloc);
204377 if( !pWriter ) return SQLITE_NOMEM;
204378 pFilter = (Fts3SegFilter *)&pWriter[1];
204451 memset(pWriter, 0, nAlloc);
204483 rc = fts3IncrmergeLoad(p, iAbsLevel, iIdx-1, zKey, nKey, pWriter);
204485 rc = fts3IncrmergeWriter(p, iAbsLevel, iIdx, pCsr, pWriter);
204488 if( rc==SQLITE_OK && pWriter->nLeafEst ){
204492 rc = fts3IncrmergeAppend(p, pWriter, pCsr);
204494 if( pWriter->nWork>=nRem && rc==SQLITE_ROW ) rc = SQLITE_OK;
204500 nRem -= (1 + pWriter->nWork);
204510 pWriter->nLeafData = pWriter->nLeafData * -1;
204512 fts3IncrmergeRelease(p, pWriter, &rc);
204513 if( nSeg==0 && pWriter->bNoLeafData==0 ){
204514 fts3PromoteSegments(p, iAbsLevel+1, pWriter->nLeafData);
204526 sqlite3_free(pWriter);
224658 sqlite3_stmt *pWriter;
224676 pWriter = pIter->pDelete;
224678 pWriter = pIter->pInsert;
224699 p->rc = sqlite3_bind_value(pWriter, i+1, pVal);
224718 p->rc = sqlite3_bind_value(pWriter, pIter->nCol+1, pVal);
224722 sqlite3_step(pWriter);
224723 p->rc = resetAndCollectError(pWriter, &p->zErrmsg);
239100 Fts5PoslistWriter *pWriter,
239105 sqlite3Fts5PoslistSafeAppend(pBuf, &pWriter->iPrev, iPos);
241193 Fts5PoslistWriter *pWriter = &a[i].writer;
241194 if( a[i].pOut->n==0 || iPos!=pWriter->iPrev ){
241195 sqlite3Fts5PoslistWriterAppend(a[i].pOut, pWriter, iPos);
244621 sqlite3_stmt *pWriter; /* "INSERT ... %_data VALUES(?,?)" */
245187 if( p->pWriter==0 ){
245189 fts5IndexPrepareStmt(p, &p->pWriter, sqlite3_mprintf(
245196 sqlite3_bind_int64(p->pWriter, 1, iRowid);
245197 sqlite3_bind_blob(p->pWriter, 2, pData, nData, SQLITE_STATIC);
245198 sqlite3_step(p->pWriter);
245199 p->rc = sqlite3_reset(p->pWriter);
245200 sqlite3_bind_null(p->pWriter, 2);
248416 Fts5SegWriter *pWriter,
248420 assert( bFlush==0 || (pWriter->nDlidx>0 && pWriter->aDlidx[0].buf.n>0) );
248421 for(i=0; i<pWriter->nDlidx; i++){
248422 Fts5DlidxWriter *pDlidx = &pWriter->aDlidx[i];
248427 FTS5_DLIDX_ROWID(pWriter->iSegid, i, pDlidx->pgno),
248442 Fts5SegWriter *pWriter,
248445 if( p->rc==SQLITE_OK && nLvl>=pWriter->nDlidx ){
248447 pWriter->aDlidx, sizeof(Fts5DlidxWriter) * nLvl
248452 size_t nByte = sizeof(Fts5DlidxWriter) * (nLvl - pWriter->nDlidx);
248453 memset(&aDlidx[pWriter->nDlidx], 0, nByte);
248454 pWriter->aDlidx = aDlidx;
248455 pWriter->nDlidx = nLvl;
248466 static int fts5WriteFlushDlidx(Fts5Index *p, Fts5SegWriter *pWriter){
248471 if( pWriter->aDlidx[0].buf.n>0 && pWriter->nEmpty>=FTS5_MIN_DLIDX_SIZE ){
248474 fts5WriteDlidxClear(p, pWriter, bFlag);
248475 pWriter->nEmpty = 0;
248490 static void fts5WriteFlushBtree(Fts5Index *p, Fts5SegWriter *pWriter){
248493 assert( pWriter->iBtPage || pWriter->nEmpty==0 );
248494 if( pWriter->iBtPage==0 ) return;
248495 bFlag = fts5WriteFlushDlidx(p, pWriter);
248498 const char *z = (pWriter->btterm.n>0?(const char*)pWriter->btterm.p:"");
248501 sqlite3_bind_blob(p->pIdxWriter, 2, z, pWriter->btterm.n, SQLITE_STATIC);
248502 sqlite3_bind_int64(p->pIdxWriter, 3, bFlag + ((i64)pWriter->iBtPage<<1));
248507 pWriter->iBtPage = 0;
248521 Fts5SegWriter *pWriter, /* Writer object */
248524 fts5WriteFlushBtree(p, pWriter);
248526 fts5BufferSet(&p->rc, &pWriter->btterm, nTerm, pTerm);
248527 pWriter->iBtPage = pWriter->writer.pgno;
248537 Fts5SegWriter *pWriter /* Writer object */
248541 if( pWriter->bFirstRowidInPage && pWriter->aDlidx[0].buf.n>0 ){
248542 Fts5DlidxWriter *pDlidx = &pWriter->aDlidx[0];
248548 pWriter->nEmpty++;
248567 Fts5SegWriter *pWriter,
248575 Fts5DlidxWriter *pDlidx = &pWriter->aDlidx[i];
248585 FTS5_DLIDX_ROWID(pWriter->iSegid, i, pDlidx->pgno),
248588 fts5WriteDlidxGrow(p, pWriter, i+2);
248589 pDlidx = &pWriter->aDlidx[i];
248612 i64 iPgno = (i==0 ? pWriter->writer.pgno : pDlidx[-1].pgno);
248625 static void fts5WriteFlushLeaf(Fts5Index *p, Fts5SegWriter *pWriter){
248627 Fts5PageWriter *pPage = &pWriter->writer;
248630 assert( (pPage->pgidx.n==0)==(pWriter->bFirstTermInPage) );
248636 if( pWriter->bFirstTermInPage ){
248639 fts5WriteBtreeNoTerm(p, pWriter);
248646 iRowid = FTS5_SEGMENT_ROWID(pWriter->iSegid, pPage->pgno);
248657 pWriter->nLeafWritten++;
248660 pWriter->bFirstTermInPage = 1;
248661 pWriter->bFirstRowidInPage = 1;
248673 Fts5SegWriter *pWriter,
248677 Fts5PageWriter *pPage = &pWriter->writer;
248678 Fts5Buffer *pPgidx = &pWriter->writer.pgidx;
248683 assert( pPage->buf.n>4 || pWriter->bFirstTermInPage );
248688 fts5WriteFlushLeaf(p, pWriter);
248704 if( pWriter->bFirstTermInPage ){
248724 fts5WriteBtreeTerm(p, pWriter, n, pTerm);
248726 pPage = &pWriter->writer;
248740 pWriter->bFirstTermInPage = 0;
248742 pWriter->bFirstRowidInPage = 0;
248743 pWriter->bFirstRowidInDoclist = 1;
248745 assert( p->rc || (pWriter->nDlidx>0 && pWriter->aDlidx[0].buf.n==0) );
248746 pWriter->aDlidx[0].pgno = pPage->pgno;
248754 Fts5SegWriter *pWriter,
248758 Fts5PageWriter *pPage = &pWriter->writer;
248761 fts5WriteFlushLeaf(p, pWriter);
248767 if( pWriter->bFirstRowidInPage ){
248769 fts5WriteDlidxAppend(p, pWriter, iRowid);
248773 if( pWriter->bFirstRowidInDoclist || pWriter->bFirstRowidInPage ){
248776 assert_nc( p->rc || iRowid>pWriter->iPrevRowid );
248778 (u64)iRowid - (u64)pWriter->iPrevRowid
248781 pWriter->iPrevRowid = iRowid;
248782 pWriter->bFirstRowidInDoclist = 0;
248783 pWriter->bFirstRowidInPage = 0;
248789 Fts5SegWriter *pWriter,
248793 Fts5PageWriter *pPage = &pWriter->writer;
248810 fts5WriteFlushLeaf(p, pWriter);
248823 Fts5SegWriter *pWriter, /* Writer object */
248827 Fts5PageWriter *pLeaf = &pWriter->writer;
248831 fts5WriteFlushLeaf(p, pWriter);
248835 fts5WriteFlushBtree(p, pWriter);
248841 fts5BufferFree(&pWriter->btterm);
248843 for(i=0; i<pWriter->nDlidx; i++){
248844 sqlite3Fts5BufferFree(&pWriter->aDlidx[i].buf);
248846 sqlite3_free(pWriter->aDlidx);
248851 Fts5SegWriter *pWriter,
248856 memset(pWriter, 0, sizeof(Fts5SegWriter));
248857 pWriter->iSegid = iSegid;
248859 fts5WriteDlidxGrow(p, pWriter, 1);
248860 pWriter->writer.pgno = 1;
248861 pWriter->bFirstTermInPage = 1;
248862 pWriter->iBtPage = 1;
248864 assert( pWriter->writer.buf.n==0 );
248865 assert( pWriter->writer.pgidx.n==0 );
248868 sqlite3Fts5BufferSize(&p->rc, &pWriter->writer.pgidx, nBuffer);
248869 sqlite3Fts5BufferSize(&p->rc, &pWriter->writer.buf, nBuffer);
248881 memset(pWriter->writer.buf.p, 0, 4);
248882 pWriter->writer.buf.n = 4;
248887 sqlite3_bind_int(p->pIdxWriter, 1, pWriter->iSegid);
248967 Fts5SegWriter *pWriter = (Fts5SegWriter*)pCtx;
248968 fts5WriteAppendPoslistData(p, pWriter, pChunk, nChunk);
251107 sqlite3_finalize(p->pWriter);