• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt/router/sqlite/

Lines Matching defs:pLevel

95936 ** and to set up the WhereLevel object pLevel so that the code generator
95944 WhereLevel *pLevel /* Write new index here */
95992 pLevel->plan.nEq = nColumn;
96012 pLevel->plan.wsFlags |= WHERE_COLUMN_EQ | WHERE_IDX_ONLY | WO_EQ;
96021 pLevel->plan.u.pIdx = pIdx;
96044 assert( (u32)n==pLevel->plan.nEq );
96066 assert( pLevel->iIdxCur>=0 );
96067 sqlite3VdbeAddOp4(v, OP_OpenAutoindex, pLevel->iIdxCur, nColumn+1, 0,
96072 addrTop = sqlite3VdbeAddOp1(v, OP_Rewind, pLevel->iTabCur);
96074 sqlite3GenerateIndexKey(pParse, pIdx, pLevel->iTabCur, regRecord, 1);
96075 sqlite3VdbeAddOp2(v, OP_IdxInsert, pLevel->iIdxCur, regRecord);
96077 sqlite3VdbeAddOp2(v, OP_Next, pLevel->iTabCur, addrTop+1);
97101 static void disableTerm(WhereLevel *pLevel, WhereTerm *pTerm){
97104 && (pLevel->iLeftJoin==0 || ExprHasProperty(pTerm->pExpr, EP_FromJoin))
97110 disableTerm(pLevel, pOther);
97170 WhereLevel *pLevel, /* When level of the FROM clause we are working on */
97194 assert( pLevel->plan.wsFlags & WHERE_IN_ABLE );
97195 if( pLevel->u.in.nIn==0 ){
97196 pLevel->addrNxt = sqlite3VdbeMakeLabel(v);
97198 pLevel->u.in.nIn++;
97199 pLevel->u.in.aInLoop =
97200 sqlite3DbReallocOrFree(pParse->db, pLevel->u.in.aInLoop,
97201 sizeof(pLevel->u.in.aInLoop[0])*pLevel->u.in.nIn);
97202 pIn = pLevel->u.in.aInLoop;
97204 pIn += pLevel->u.in.nIn - 1;
97213 pLevel->u.in.nIn = 0;
97217 disableTerm(pLevel, pTerm);
97235 ** The only thing it does is allocate the pLevel->iMem memory cell and
97262 WhereLevel *pLevel, /* Which nested loop of the FROM we are coding */
97268 int nEq = pLevel->plan.nEq; /* The number of == or IN constraints to code */
97271 int iCur = pLevel->iTabCur; /* The cursor of the table */
97279 assert( pLevel->plan.wsFlags & WHERE_INDEXED );
97280 pIdx = pLevel->plan.u.pIdx;
97285 nReg = pLevel->plan.nEq + nExtraReg;
97299 pTerm = findTerm(pWC, iCur, k, notReady, pLevel->plan.wsFlags, pIdx);
97305 r1 = codeEqualityTerm(pParse, pTerm, pLevel, regBase+j);
97318 sqlite3ExprCodeIsNullJump(v, pRight, regBase+j, pLevel->addrBrk);
97348 WhereLevel *pLevel; /* The where level to be coded */
97362 pLevel = &pWInfo->a[iLevel];
97363 pTabItem = &pWInfo->pTabList->a[pLevel->iFrom];
97365 bRev = (pLevel->plan.wsFlags & WHERE_REVERSE)!=0;
97366 omitTable = (pLevel->plan.wsFlags & WHERE_IDX_ONLY)!=0
97379 addrBrk = pLevel->addrBrk = pLevel->addrNxt = sqlite3VdbeMakeLabel(v);
97380 addrCont = pLevel->addrCont = sqlite3VdbeMakeLabel(v);
97386 if( pLevel->iFrom>0 && (pTabItem[0].jointype & JT_LEFT)!=0 ){
97387 pLevel->iLeftJoin = ++pParse->nMem;
97388 sqlite3VdbeAddOp2(v, OP_Integer, 0, pLevel->iLeftJoin);
97393 if( (pLevel->plan.wsFlags & WHERE_VIRTUALTABLE)!=0 ){
97398 sqlite3_index_info *pVtabIdx = pLevel->plan.u.pVtabIdx;
97425 disableTerm(pLevel, &pWC->a[iTerm]);
97428 pLevel->op = OP_VNext;
97429 pLevel->p1 = iCur;
97430 pLevel->p2 = sqlite3VdbeCurrentAddr(v);
97436 if( pLevel->plan.wsFlags & WHERE_ROWID_EQ ){
97449 iRowidReg = codeEqualityTerm(pParse, pTerm, pLevel, iReleaseReg);
97450 addrNxt = pLevel->addrNxt;
97455 pLevel->op = OP_Noop;
97456 }else if( pLevel->plan.wsFlags & WHERE_ROWID_RANGE ){
97498 disableTerm(pLevel, pStart);
97515 disableTerm(pLevel, pEnd);
97518 pLevel->op = bRev ? OP_Prev : OP_Next;
97519 pLevel->p1 = iCur;
97520 pLevel->p2 = start;
97522 pLevel->p5 = SQLITE_STMTSTATUS_FULLSCAN_STEP;
97524 assert( pLevel->p5==0 );
97533 }else if( pLevel->plan.wsFlags & (WHERE_COLUMN_RANGE|WHERE_COLUMN_EQ) ){
97580 int nEq = pLevel->plan.nEq; /* Number of == or IN terms */
97597 pIdx = pLevel->plan.u.pIdx;
97598 iIdxCur = pLevel->iIdxCur;
97610 && (pLevel->plan.wsFlags&WHERE_ORDERBY)
97622 if( pLevel->plan.wsFlags & WHERE_TOP_LIMIT ){
97626 if( pLevel->plan.wsFlags & WHERE_BTM_LIMIT ){
97636 pParse, pLevel, pWC, notReady, nExtraReg, &zStartAff
97639 addrNxt = pLevel->addrNxt;
97721 pLevel->p2 = sqlite3VdbeCurrentAddr(v);
97738 testcase( pLevel->plan.wsFlags & WHERE_BTM_LIMIT );
97739 testcase( pLevel->plan.wsFlags & WHERE_TOP_LIMIT );
97740 if( pLevel->plan.wsFlags & (WHERE_BTM_LIMIT|WHERE_TOP_LIMIT) ){
97747 disableTerm(pLevel, pRangeStart);
97748 disableTerm(pLevel, pRangeEnd);
97759 pLevel->op = bRev ? OP_Prev : OP_Next;
97760 pLevel->p1 = iIdxCur;
97764 if( pLevel->plan.wsFlags & WHERE_MULTI_OR ){
97816 pTerm = pLevel->plan.u.pTerm;
97822 pLevel->op = OP_Return;
97823 pLevel->p1 = regReturn;
97841 memcpy(&pOrTab->a[k], &origSrc[pLevel[k].iFrom], sizeof(pOrTab->a[k]));
97897 sqlite3VdbeAddOp2(v, OP_Goto, 0, pLevel->addrBrk);
97901 if( !untestedTerms ) disableTerm(pLevel, pTerm);
97913 pLevel->op = aStep[bRev];
97914 pLevel->p1 = iCur;
97915 pLevel->p2 = 1 + sqlite3VdbeAddOp2(v, aStart[bRev], iCur, addrBrk);
97916 pLevel->p5 = SQLITE_STMTSTATUS_FULLSCAN_STEP;
97941 if( pLevel->iLeftJoin && !ExprHasProperty(pE, EP_FromJoin) ){
97952 if( pLevel->iLeftJoin ){
97953 pLevel->addrFirst = sqlite3VdbeCurrentAddr(v);
97954 sqlite3VdbeAddOp2(v, OP_Integer, 1, pLevel->iLeftJoin);
98121 WhereLevel *pLevel; /* A single level in the pWInfo list */
98254 pLevel = pWInfo->a;
98257 for(i=iFrom=0, pLevel=pWInfo->a; i<nTabList; i++, pLevel++){
98388 pLevel-pWInfo->a));
98393 pLevel->plan = bestPlan.plan;
98397 pLevel->iIdxCur = pParse->nTab++;
98399 pLevel->iIdxCur = -1;
98402 pLevel->iFrom = (u8)bestJ;
98451 for(i=0, pLevel=pWInfo->a; i<nTabList; i++, pLevel++){
98458 struct SrcList_item *pItem = &pTabList->a[pLevel->iFrom];
98463 if( (pLevel->plan.wsFlags & WHERE_TEMP_INDEX)!=0 ){
98465 }else if( (pLevel->plan.wsFlags & WHERE_INDEXED)!=0 ){
98467 zMsg, pLevel->plan.u.pIdx->zName);
98468 }else if( pLevel->plan.wsFlags & WHERE_MULTI_OR ){
98470 }else if( pLevel->plan.wsFlags & (WHERE_ROWID_EQ|WHERE_ROWID_RANGE) ){
98474 else if( (pLevel->plan.wsFlags & WHERE_VIRTUALTABLE)!=0 ){
98475 sqlite3_index_info *pVtabIdx = pLevel->plan.u.pVtabIdx;
98480 if( pLevel->plan.wsFlags & WHERE_ORDERBY ){
98483 sqlite3VdbeAddOp4(v, OP_Explain, i, pLevel->iFrom, 0, zMsg, P4_DYNAMIC);
98486 pTabItem = &pTabList->a[pLevel->iFrom];
98488 pLevel->iTabCur = pTabItem->iCursor;
98494 if( (pLevel->plan.wsFlags & WHERE_VIRTUALTABLE)!=0 ){
98500 if( (pLevel->plan.wsFlags & WHERE_IDX_ONLY)==0
98518 if( (pLevel->plan.wsFlags & WHERE_TEMP_INDEX)!=0 ){
98519 constructAutomaticIndex(pParse, pWC, pTabItem, notReady, pLevel);
98522 if( (pLevel->plan.wsFlags & WHERE_INDEXED)!=0 ){
98523 Index *pIx = pLevel->plan.u.pIdx;
98525 int iIdxCur = pLevel->iIdxCur;
98558 pLevel = &pWInfo->a[i];
98559 pTabItem = &pTabList->a[pLevel->iFrom];
98564 if( pLevel->plan.wsFlags & WHERE_IDX_ONLY ){
98573 testcase( pLevel->plan.wsFlags & WHERE_ROWID_EQ );
98574 testcase( pLevel->plan.wsFlags & WHERE_ROWID_RANGE );
98575 if( pLevel->plan.wsFlags & (WHERE_ROWID_EQ|WHERE_ROWID_RANGE) ){
98578 }else if( (pLevel->plan.wsFlags & WHERE_INDEXED)!=0 ){
98579 n = sqlite3Strlen30(pLevel->plan.u.pIdx->zName);
98581 memcpy(&sqlite3_query_plan[nQPlan], pLevel->plan.u.pIdx->zName, n);
98619 WhereLevel *pLevel;
98627 pLevel = &pWInfo->a[i];
98628 sqlite3VdbeResolveLabel(v, pLevel->addrCont);
98629 if( pLevel->op!=OP_Noop ){
98630 sqlite3VdbeAddOp2(v, pLevel->op, pLevel->p1, pLevel->p2);
98631 sqlite3VdbeChangeP5(v, pLevel->p5);
98633 if( pLevel->plan.wsFlags & WHERE_IN_ABLE && pLevel->u.in.nIn>0 ){
98636 sqlite3VdbeResolveLabel(v, pLevel->addrNxt);
98637 for(j=pLevel->u.in.nIn, pIn=&pLevel->u.in.aInLoop[j-1]; j>0; j--, pIn--){
98642 sqlite3DbFree(db, pLevel->u.in.aInLoop);
98644 sqlite3VdbeResolveLabel(v, pLevel->addrBrk);
98645 if( pLevel->iLeftJoin ){
98647 addr = sqlite3VdbeAddOp1(v, OP_IfPos, pLevel->iLeftJoin);
98648 assert( (pLevel->plan.wsFlags & WHERE_IDX_ONLY)==0
98649 || (pLevel->plan.wsFlags & WHERE_INDEXED)!=0 );
98650 if( (pLevel->plan.wsFlags & WHERE_IDX_ONLY)==0 ){
98653 if( pLevel->iIdxCur>=0 ){
98654 sqlite3VdbeAddOp1(v, OP_NullRow, pLevel->iIdxCur);
98656 if( pLevel->op==OP_Return ){
98657 sqlite3VdbeAddOp2(v, OP_Gosub, pLevel->p1, pLevel->addrFirst);
98659 sqlite3VdbeAddOp2(v, OP_Goto, 0, pLevel->addrFirst);
98673 for(i=0, pLevel=pWInfo->a; i<pWInfo->nLevel; i++, pLevel++){
98674 struct SrcList_item *pTabItem = &pTabList->a[pLevel->iFrom];
98681 int ws = pLevel->plan.wsFlags;
98686 sqlite3VdbeAddOp1(v, OP_Close, pLevel->iIdxCur);
98703 if( (pLevel->plan.wsFlags & WHERE_INDEXED)!=0 && !db->mallocFailed){
98706 Index *pIdx = pLevel->plan.u.pIdx;
98712 if( pOp->p1!=pLevel->iTabCur ) continue;
98717 pOp->p1 = pLevel->iIdxCur;
98721 assert( (pLevel->plan.wsFlags & WHERE_IDX_ONLY)==0
98724 pOp->p1 = pLevel->iIdxCur;