Lines Matching refs:pCur
668 static void csvtabCursorRowReset(CsvCursor *pCur){ in csvtabCursorRowReset() argument
669 CsvTable *pTab = (CsvTable*)pCur->base.pVtab; in csvtabCursorRowReset()
672 sqlite3_free(pCur->azVal[i]); in csvtabCursorRowReset()
673 pCur->azVal[i] = 0; in csvtabCursorRowReset()
674 pCur->aLen[i] = 0; in csvtabCursorRowReset()
696 CsvCursor *pCur = (CsvCursor*)cur; in csvtabClose() local
697 csvtabCursorRowReset(pCur); in csvtabClose()
698 csv_reader_reset(&pCur->rdr); in csvtabClose()
708 CsvCursor *pCur; in csvtabOpen() local
710 nByte = sizeof(*pCur) + (sizeof(char*)+sizeof(int))*pTab->nCol; in csvtabOpen()
711 pCur = sqlite3_malloc64( nByte ); in csvtabOpen()
712 if( pCur==0 ) return SQLITE_NOMEM; in csvtabOpen()
713 memset(pCur, 0, nByte); in csvtabOpen()
714 pCur->azVal = (char**)&pCur[1]; in csvtabOpen()
715 pCur->aLen = (int*)&pCur->azVal[pTab->nCol]; in csvtabOpen()
716 *ppCursor = &pCur->base; in csvtabOpen()
717 if( csv_reader_open(&pCur->rdr, pTab->zFilename, pTab->zData) ){ in csvtabOpen()
718 csv_xfer_error(pTab, &pCur->rdr); in csvtabOpen()
730 CsvCursor *pCur = (CsvCursor*)cur; in csvtabNext() local
735 z = csv_read_one_field(&pCur->rdr); in csvtabNext()
740 if( pCur->aLen[i] < pCur->rdr.n+1 ){ in csvtabNext()
741 char *zNew = sqlite3_realloc64(pCur->azVal[i], pCur->rdr.n+1); in csvtabNext()
743 csv_errmsg(&pCur->rdr, "out of memory"); in csvtabNext()
744 csv_xfer_error(pTab, &pCur->rdr); in csvtabNext()
747 pCur->azVal[i] = zNew; in csvtabNext()
748 pCur->aLen[i] = pCur->rdr.n+1; in csvtabNext()
750 memcpy(pCur->azVal[i], z, pCur->rdr.n+1); in csvtabNext()
753 }while( pCur->rdr.cTerm==',' ); in csvtabNext()
755 pCur->iRowid = -1; in csvtabNext()
757 pCur->iRowid++; in csvtabNext()
759 sqlite3_free(pCur->azVal[i]); in csvtabNext()
760 pCur->azVal[i] = 0; in csvtabNext()
761 pCur->aLen[i] = 0; in csvtabNext()
777 CsvCursor *pCur = (CsvCursor*)cur; in csvtabColumn() local
779 if( i>=0 && i<pTab->nCol && pCur->azVal[i]!=0 ){ in csvtabColumn()
780 sqlite3_result_text(ctx, pCur->azVal[i], -1, SQLITE_TRANSIENT); in csvtabColumn()
789 CsvCursor *pCur = (CsvCursor*)cur; in csvtabRowid() local
790 *pRowid = pCur->iRowid; in csvtabRowid()
799 CsvCursor *pCur = (CsvCursor*)cur; in csvtabEof() local
800 return pCur->iRowid<0; in csvtabEof()
812 CsvCursor *pCur = (CsvCursor*)pVtabCursor; in csvtabFilter() local
814 pCur->iRowid = 0; in csvtabFilter()
819 if( csv_append(&pCur->rdr, 0) ) return SQLITE_NOMEM; in csvtabFilter()
821 if( pCur->rdr.in==0 ){ in csvtabFilter()
822 assert( pCur->rdr.zIn==pTab->zData ); in csvtabFilter()
824 assert( (size_t)pTab->iStart<=pCur->rdr.nIn ); in csvtabFilter()
825 pCur->rdr.iIn = pTab->iStart; in csvtabFilter()
827 fseek(pCur->rdr.in, pTab->iStart, SEEK_SET); in csvtabFilter()
828 pCur->rdr.iIn = 0; in csvtabFilter()
829 pCur->rdr.nIn = 0; in csvtabFilter()