Branch Coverage

expr.c
Criterion Covered Total %
branch 222 552 40.2


line true false branch
28 0 701 if( pNew==0 ){
35 554 147 if( pToken ){
43 44 103 if( pLeft && pRight ){
34 10 if( pLeft && pRight ){
60 83 0 if( pExpr && pRight->z && pLeft->z ){
82 1 if( pExpr && pRight->z && pLeft->z ){
82 0 if( pExpr && pRight->z && pLeft->z ){
61 82 0 if( pLeft->dyn==0 && pRight->dyn==0 ){
82 0 if( pLeft->dyn==0 && pRight->dyn==0 ){
77 0 39 if( pNew==0 ){
83 36 3 if( pToken ){
97 2600 740 if( p==0 ) return;
98 30 710 if( p->span.dyn ) sqliteFree((char*)p->span.z);
99 30 710 if( p->token.dyn ) sqliteFree((char*)p->token.z);
122 60 0 if( p==0 ) return 0;
124 0 0 if( pNew==0 ) return 0;
126 0 0 if( p->token.z!=0 ){
140 0 60 if( pTo->dyn ) sqliteFree((char*)pTo->z);
141 60 0 if( pFrom->z ){
153 30 0 if( p==0 ) return 0;
155 0 0 if( pNew==0 ) return 0;
158 0 0 if( pItem==0 ){
162 0 0 for(i=0; inExpr; i++, pItem++){
165 0 0 if( pOldExpr->span.z!=0 && pNewExpr ){
0 0 if( pOldExpr->span.z!=0 && pNewExpr ){
184 0 0 if( p==0 ) return 0;
185 0 0 nByte = sizeof(*p) + (p->nSrc>0 ? sizeof(p->a[0]) * (p->nSrc-1) : 0);
187 0 0 if( pNew==0 ) return 0;
189 0 0 for(i=0; inSrc; i++){
207 0 0 if( p==0 ) return 0;
209 0 0 if( pNew==0 ) return 0;
212 0 0 if( pNew->a==0 ) return 0;
213 0 0 for(i=0; inId; i++){
223 0 0 if( p==0 ) return 0;
225 0 0 if( pNew==0 ) return 0;
249 262 383 if( pList==0 ){
251 0 262 if( pList==0 ){
257 322 323 if( pList->nAlloc<=pList->nExpr ){
260 0 322 if( pList->a==0 ){
267 15 630 if( pExpr || pName ){
0 15 if( pExpr || pName ){
271 42 588 if( pName ){
284 964 262 if( pList==0 ) return;
287 630 262 for(i=0; inExpr; i++){
317 33 3 if( p->pLeft && !sqliteExprIsConstant(p->pLeft) ) return 0;
33 0 if( p->pLeft && !sqliteExprIsConstant(p->pLeft) ) return 0;
318 0 3 if( p->pRight && !sqliteExprIsConstant(p->pRight) ) return 0;
0 0 if( p->pRight && !sqliteExprIsConstant(p->pRight) ) return 0;
319 3 0 if( p->pList ){
321 6 0 for(i=0; ipList->nExpr; i++){
322 3 3 if( !sqliteExprIsConstant(p->pList->a[i].pExpr) ) return 0;
325 0 0 return p->pLeft!=0 || p->pRight!=0 || (p->pList && p->pList->nExpr>0);
0 0 return p->pLeft!=0 || p->pRight!=0 || (p->pList && p->pList->nExpr>0);
0 0 return p->pLeft!=0 || p->pRight!=0 || (p->pList && p->pList->nExpr>0);
0 0 return p->pLeft!=0 || p->pRight!=0 || (p->pList && p->pList->nExpr>0);
340 0 0 if( sqliteFitsIn32Bits(p->token.z) ){
349 0 0 if( n>0 && z[0]=='-' ){ z++; n--; }
0 0 if( n>0 && z[0]=='-' ){ z++; n--; }
350 0 0 while( n>0 && *z && isdigit(*z) ){ z++; n--; }
0 0 while( n>0 && *z && isdigit(*z) ){ z++; n--; }
0 0 while( n>0 && *z && isdigit(*z) ){ z++; n--; }
351 0 0 if( n==0 && sqliteFitsIn32Bits(p->token.z) ){
0 0 if( n==0 && sqliteFitsIn32Bits(p->token.z) ){
362 0 0 if( sqliteExprIsInteger(p->pLeft, &v) ){
377 0 0 if( sqliteStrICmp(z, "_ROWID_")==0 ) return 1;
378 0 0 if( sqliteStrICmp(z, "ROWID")==0 ) return 1;
379 0 0 if( sqliteStrICmp(z, "OID")==0 ) return 1;
427 0 389 if( pDbToken && pDbToken->z ){
0 0 if( pDbToken && pDbToken->z ){
433 7 382 if( pTableToken && pTableToken->z ){
7 0 if( pTableToken && pTableToken->z ){
442 0 389 if( sqlite_malloc_failed ){
448 396 389 for(i=0; inSrc; i++){
453 0 396 if( pTab==0 ) continue;
455 13 383 if( zTab ){
456 0 13 if( pItem->zAlias ){
458 0 0 if( sqliteStrICmp(zTabName, zTab)!=0 ) continue;
461 13 0 if( zTabName==0 || sqliteStrICmp(zTabName, zTab)!=0 ) continue;
6 7 if( zTabName==0 || sqliteStrICmp(zTabName, zTab)!=0 ) continue;
462 0 7 if( zDb!=0 && sqliteStrICmp(db->aDb[pTab->iDb].zName, zDb)!=0 ){
0 0 if( zDb!=0 && sqliteStrICmp(db->aDb[pTab->iDb].zName, zDb)!=0 ){
467 389 1 if( 0==(cntTab++) ){
471 996 1 for(j=0, pCol=pTab->aCol; jnCol; j++, pCol++){
472 389 607 if( sqliteStrICmp(pCol->zName, zCol)==0 ){
477 389 0 pExpr->iColumn = j==pTab->iPKey ? -1 : j;
487 389 0 if( zDb==0 && zTab!=0 && cnt==0 && pParse->trigStack!=0 ){
7 382 if( zDb==0 && zTab!=0 && cnt==0 && pParse->trigStack!=0 ){
0 7 if( zDb==0 && zTab!=0 && cnt==0 && pParse->trigStack!=0 ){
0 0 if( zDb==0 && zTab!=0 && cnt==0 && pParse->trigStack!=0 ){
490 0 0 if( pTriggerStack->newIdx != -1 && sqliteStrICmp("new", zTab) == 0 ){
0 0 if( pTriggerStack->newIdx != -1 && sqliteStrICmp("new", zTab) == 0 ){
494 0 0 }else if( pTriggerStack->oldIdx != -1 && sqliteStrICmp("old", zTab) == 0 ){
0 0 }else if( pTriggerStack->oldIdx != -1 && sqliteStrICmp("old", zTab) == 0 ){
500 0 0 if( pTab ){
506 0 0 for(j=0; j < pTab->nCol; j++, pCol++) {
507 0 0 if( sqliteStrICmp(pCol->zName, zCol)==0 ){
509 0 0 pExpr->iColumn = j==pTab->iPKey ? -1 : j;
520 0 389 if( cnt==0 && cntTab==1 && sqliteIsRowid(zCol) ){
0 0 if( cnt==0 && cntTab==1 && sqliteIsRowid(zCol) ){
0 0 if( cnt==0 && cntTab==1 && sqliteIsRowid(zCol) ){
538 0 389 if( cnt==0 && pEList!=0 ){
0 0 if( cnt==0 && pEList!=0 ){
539 0 0 for(j=0; jnExpr; j++){
541 0 0 if( zAs!=0 && sqliteStrICmp(zAs, zCol)==0 ){
0 0 if( zAs!=0 && sqliteStrICmp(zAs, zCol)==0 ){
560 0 389 if( cnt==0 && zTab==0 && pColumnToken->z[0]=='"' ){
0 0 if( cnt==0 && zTab==0 && pColumnToken->z[0]=='"' ){
0 0 if( cnt==0 && zTab==0 && pColumnToken->z[0]=='"' ){
569 0 389 if( cnt!=1 ){
572 0 0 zErr = cnt==0 ? "no such column: %s" : "ambiguous column name: %s";
573 0 0 if( zDb ){
575 0 0 }else if( zTab ){
637 684 0 if( pExpr==0 || pSrcList==0 ) return 0;
0 684 if( pExpr==0 || pSrcList==0 ) return 0;
638 547 684 for(i=0; inSrc; i++){
647 77 0 if( pExpr->token.z[0]=='\'' ) break;
653 0 382 if( lookupName(pParse, 0, 0, &pExpr->token, pSrcList, pEList, pExpr) ){
669 7 0 if( pRight->op==TK_ID ){
679 0 7 if( lookupName(pParse, pDb, pTable, pColumn, pSrcList, 0, pExpr) ){
687 0 6 if( v==0 ) return 1;
688 0 6 if( sqliteExprResolveIds(pParse, pSrcList, pEList, pExpr->pLeft) ){
691 0 6 if( pExpr->pSelect ){
701 6 0 }else if( pExpr->pList ){
708 12 6 for(i=0; ipList->nExpr; i++){
710 0 12 if( !sqliteExprIsConstant(pE2) ){
715 0 12 if( sqliteExprCheck(pParse, pE2, 0, 0) ){
720 12 6 for(i=0; ipList->nExpr; i++){
722 12 0 switch( pE2->op ){
750 0 0 if( sqliteSelect(pParse, pExpr->pSelect, SRT_Mem, pExpr->iColumn,0,0,0) ){
758 30 182 if( pExpr->pLeft
759 0 30 && sqliteExprResolveIds(pParse, pSrcList, pEList, pExpr->pLeft) ){
762 26 186 if( pExpr->pRight
763 0 26 && sqliteExprResolveIds(pParse, pSrcList, pEList, pExpr->pRight) ){
766 39 173 if( pExpr->pList ){
769 32 39 for(i=0; inExpr; i++){
771 0 32 if( sqliteExprResolveIds(pParse, pSrcList, pEList, pArg) ){
825 0 740 if( pExpr==0 ) return 0;
826 39 701 switch( pExpr->op ){
830 39 0 int n = pExpr->pList ? pExpr->pList->nExpr : 0; /* Number of arguments */
841 0 39 if( pDef==0 ){
843 0 0 if( pDef==0 ){
851 15 24 if( is_agg && !allowAgg ){
0 15 if( is_agg && !allowAgg ){
855 0 39 }else if( no_such_func ){
858 0 39 }else if( wrong_num_args ){
863 15 24 if( is_agg ){
865 15 0 if( pIsAgg ) *pIsAgg = 1;
867 71 0 for(i=0; nErr==0 && i
32 39 for(i=0; nErr==0 && i
868 26 6 nErr = sqliteExprCheck(pParse, pExpr->pList->a[i].pExpr,
21 5 nErr = sqliteExprCheck(pParse, pExpr->pList->a[i].pExpr,
871 39 0 if( pDef==0 ){
873 0 39 }else if( pDef->dataType>=0 ){
874 0 0 if( pDef->dataType
880 0 39 }else if( pDef->dataType==SQLITE_ARGS ){
882 0 0 for(i=0; i
883 0 0 if( sqliteExprType(pExpr->pList->a[i].pExpr)==SQLITE_SO_NUM ){
888 36 3 }else if( pDef->dataType==SQLITE_NUMERIC ){
895 36 704 if( pExpr->pLeft ){
898 740 0 if( nErr==0 && pExpr->pRight ){
26 714 if( nErr==0 && pExpr->pRight ){
901 740 0 if( nErr==0 && pExpr->pList ){
45 695 if( nErr==0 && pExpr->pList ){
904 89 0 for(i=0; nErr==0 && i
44 45 for(i=0; nErr==0 && i
923 0 155 if( p==0 ) return SQLITE_SO_NUM;
924 156 0 while( p ) switch( p->op ){
962 22 1 if( sqliteExprType(p->pLeft)==SQLITE_SO_NUM ){
985 0 0 if( p->pRight && sqliteExprType(p->pRight)==SQLITE_SO_NUM ){
0 0 if( p->pRight && sqliteExprType(p->pRight)==SQLITE_SO_NUM ){
988 0 0 if( p->pList ){
991 0 0 for(i=1; inExpr; i+=2){
992 0 0 if( sqliteExprType(pList->a[i].pExpr)==SQLITE_SO_NUM ){
1014 633 0 if( v==0 || pExpr==0 ) return;
0 633 if( v==0 || pExpr==0 ) return;
1042 3 368 if( pParse->useAgg ){
1044 368 0 }else if( pExpr->iColumn>=0 ){
1054 119 78 if( pExpr->op==TK_INTEGER && sqliteFitsIn32Bits(pExpr->token.z) ){
119 0 if( pExpr->op==TK_INTEGER && sqliteFitsIn32Bits(pExpr->token.z) ){
1078 0 0 if( pParse->db->file_format>=4 && sqliteExprType(pExpr)==SQLITE_SO_TEXT ){
0 0 if( pParse->db->file_format>=4 && sqliteExprType(pExpr)==SQLITE_SO_TEXT ){
1112 0 0 if( pExpr->pLeft->op==TK_FLOAT || pExpr->pLeft->op==TK_INTEGER ){
0 0 if( pExpr->pLeft->op==TK_FLOAT || pExpr->pLeft->op==TK_INTEGER ){
1116 0 0 if( pExpr->pLeft->op==TK_INTEGER && sqliteFitsIn32Bits(z) ){
0 0 if( pExpr->pLeft->op==TK_INTEGER && sqliteFitsIn32Bits(z) ){
1151 24 0 int nExpr = pList ? pList->nExpr : 0;
1175 0 0 if( pExpr->pSelect ){
1211 0 0 if( pExpr->pLeft ){
1214 0 0 for(i=0; i
1216 0 0 if( pExpr->pLeft ){
1228 0 0 if( pExpr->pLeft ){
1231 0 0 if( pExpr->pRight ){
1240 0 0 if( !pParse->trigStack ){
1246 0 0 if( pExpr->iColumn == OE_Rollback ||
0 0 if( pExpr->iColumn == OE_Rollback ||
1247 0 0 pExpr->iColumn == OE_Abort ||
1278 0 39 if( pList==0 ) return 0;
1281 32 39 for(pItem=pList->a, i=0; i
1283 0 32 if( includeTypes ){
1284 0 0 sqliteVdbeOp3(v, OP_String, 0, 0,
1289 0 39 return includeTypes ? n*2 : n;
1303 0 0 if( v==0 || pExpr==0 ) return;
0 0 if( v==0 || pExpr==0 ) return;
1340 0 0 if( pParse->db->file_format>=4 && sqliteExprType(pExpr)==SQLITE_SO_TEXT ){
0 0 if( pParse->db->file_format>=4 && sqliteExprType(pExpr)==SQLITE_SO_TEXT ){
1358 0 0 sqliteVdbeAddOp(v, OP_Goto, 0, jumpIfNull ? dest : addr+4);
1359 0 0 if( pExpr->pSelect ){
1398 36 0 if( v==0 || pExpr==0 ) return;
0 36 if( v==0 || pExpr==0 ) return;
1433 23 0 if( pParse->db->file_format>=4 && sqliteExprType(pExpr)==SQLITE_SO_TEXT ){
1 22 if( pParse->db->file_format>=4 && sqliteExprType(pExpr)==SQLITE_SO_TEXT ){
1459 0 6 sqliteVdbeAddOp(v, OP_Goto, 0, jumpIfNull ? dest : addr+4);
1460 0 6 if( pExpr->pSelect ){
1494 0 0 if( pA==0 ){
1496 0 0 }else if( pB==0 ){
1499 0 0 if( pA->op!=pB->op ) return 0;
1500 0 0 if( !sqliteExprCompare(pA->pLeft, pB->pLeft) ) return 0;
1501 0 0 if( !sqliteExprCompare(pA->pRight, pB->pRight) ) return 0;
1502 0 0 if( pA->pList ){
1503 0 0 if( pB->pList==0 ) return 0;
1504 0 0 if( pA->pList->nExpr!=pB->pList->nExpr ) return 0;
1505 0 0 for(i=0; ipList->nExpr; i++){
1506 0 0 if( !sqliteExprCompare(pA->pList->a[i].pExpr, pB->pList->a[i].pExpr) ){
1510 0 0 }else if( pB->pList ){
1513 0 0 if( pA->pSelect || pB->pSelect ) return 0;
0 0 if( pA->pSelect || pB->pSelect ) return 0;
1514 0 0 if( pA->iTable!=pB->iTable || pA->iColumn!=pB->iColumn ) return 0;
0 0 if( pA->iTable!=pB->iTable || pA->iColumn!=pB->iColumn ) return 0;
1515 0 0 if( pA->token.z ){
1516 0 0 if( pB->token.z==0 ) return 0;
1517 0 0 if( pB->token.n!=pA->token.n ) return 0;
1518 0 0 if( sqliteStrNICmp(pA->token.z, pB->token.z, pB->token.n)!=0 ) return 0;
1527 15 3 if( (pParse->nAgg & 0x7)==0 ){
1530 0 15 if( aAgg==0 ){
1555 0 20 if( pExpr==0 ) return 0;
1559 4 3 for(i=0; inAgg; i++){
1560 1 3 if( aAgg[i].isAgg ) continue;
1561 2 1 if( aAgg[i].pExpr->iTable==pExpr->iTable
1562 2 0 && aAgg[i].pExpr->iColumn==pExpr->iColumn ){
1566 3 2 if( i>=pParse->nAgg ){
1568 0 3 if( i<0 ) return 1;
1577 2 15 for(i=0; inAgg; i++){
1578 2 0 if( !aAgg[i].isAgg ) continue;
1579 0 0 if( sqliteExprCompare(aAgg[i].pExpr, pExpr) ){
1583 15 0 if( i>=pParse->nAgg ){
1585 0 15 if( i<0 ) return 1;
1588 15 0 pParse->aAgg[i].pFunc = sqliteFindFunction(pParse->db,
1596 0 0 if( pExpr->pLeft ){
1599 0 0 if( nErr==0 && pExpr->pRight ){
0 0 if( nErr==0 && pExpr->pRight ){
1602 0 0 if( nErr==0 && pExpr->pList ){
0 0 if( nErr==0 && pExpr->pList ){
1605 0 0 for(i=0; nErr==0 && i
0 0 for(i=0; nErr==0 && i
1639 278 717 if( p && !createFlag && nArg<0 ){
78 200 if( p && !createFlag && nArg<0 ){
0 78 if( p && !createFlag && nArg<0 ){
1640 0 0 while( p && p->xFunc==0 && p->xStep==0 ){ p = p->pNext; }
0 0 while( p && p->xFunc==0 && p->xStep==0 ){ p = p->pNext; }
0 0 while( p && p->xFunc==0 && p->xStep==0 ){ p = p->pNext; }
1644 353 939 while( p && p->nArg!=nArg ){
297 56 while( p && p->nArg!=nArg ){
1645 172 125 if( p->nArg<0 && !createFlag && (p->xFunc || p->xStep) ) pMaybe = p;
22 150 if( p->nArg<0 && !createFlag && (p->xFunc || p->xStep) ) pMaybe = p;
12 10 if( p->nArg<0 && !createFlag && (p->xFunc || p->xStep) ) pMaybe = p;
12 0 if( p->nArg<0 && !createFlag && (p->xFunc || p->xStep) ) pMaybe = p;
1648 56 939 if( p && !createFlag && p->xFunc==0 && p->xStep==0 ){
56 0 if( p && !createFlag && p->xFunc==0 && p->xStep==0 ){
18 38 if( p && !createFlag && p->xFunc==0 && p->xStep==0 ){
0 18 if( p && !createFlag && p->xFunc==0 && p->xStep==0 ){
1651 939 56 if( p==0 && pMaybe ){
22 917 if( p==0 && pMaybe ){
1655 917 56 if( p==0 && createFlag && (p = sqliteMalloc(sizeof(*p)))!=0 ){
917 0 if( p==0 && createFlag && (p = sqliteMalloc(sizeof(*p)))!=0 ){
917 0 if( p==0 && createFlag && (p = sqliteMalloc(sizeof(*p)))!=0 ){
1658 200 717 p->dataType = pFirst ? pFirst->dataType : SQLITE_NUMERIC;