Index: src/where.c ================================================================== --- src/where.c +++ src/where.c @@ -2906,14 +2906,14 @@ WO_EQ|WO_ISNULL|WO_IN, pIdx); if( pConstraint==0 ){ isEq = 0; }else if( pConstraint->eOperator==WO_IN ){ break; - }else if( pConstraint->prereqRight==0 ){ - isEq = 1; }else if( pConstraint->eOperator==WO_ISNULL ){ uniqueNotNull = 0; + isEq = 1; + }else if( pConstraint->prereqRight==0 ){ isEq = 1; }else{ Expr *pRight = pConstraint->pExpr->pRight; if( pRight->op==TK_COLUMN ){ WHERETRACE((" .. isOrderedColumn(tab=%d,col=%d)", @@ -2933,21 +2933,23 @@ if( isEq==0 ){ break; }else{ continue; } - }else if( sortOrder==2 ){ - sortOrder = termSortOrder; - }else if( termSortOrder!=sortOrder ){ - break; + }else if( isEq!=1 ){ + if( sortOrder==2 ){ + sortOrder = termSortOrder; + }else if( termSortOrder!=sortOrder ){ + break; + } } j++; pOBItem++; if( iColumn<0 ){ seenRowid = 1; break; - }else if( pTab->aCol[iColumn].notNull==0 ){ + }else if( pTab->aCol[iColumn].notNull==0 && isEq==0 ){ uniqueNotNull = 0; } } /* If we have not found at least one ORDER BY term that matches the