Prevent NULLS FIRST/LAST from being used in CREATE INDEX and other statements.
FossilOrigin-Name: bb9767a287097a615aeb4abdba689b10e1a1c36c016c8e55905b508075e62c86
diff --git a/src/expr.c b/src/expr.c
index c5072aa..6948c5a 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -1653,6 +1653,7 @@
** Set the sort order for the last element on the given ExprList.
*/
void sqlite3ExprListSetSortOrder(ExprList *p, int iSortOrder, int eNulls){
+ struct ExprList_item *pItem;
if( p==0 ) return;
assert( p->nExpr>0 );
@@ -1666,10 +1667,18 @@
|| eNulls==SQLITE_SO_DESC
);
- if( iSortOrder==SQLITE_SO_UNDEFINED ) iSortOrder = SQLITE_SO_ASC;
- p->a[p->nExpr-1].sortFlags = (u8)iSortOrder;
- if( eNulls!=SQLITE_SO_UNDEFINED && iSortOrder!=eNulls ){
- p->a[p->nExpr-1].sortFlags |= KEYINFO_ORDER_BIGNULL;
+ pItem = &p->a[p->nExpr-1];
+ assert( pItem->bNulls==0 );
+ if( iSortOrder==SQLITE_SO_UNDEFINED ){
+ iSortOrder = SQLITE_SO_ASC;
+ }
+ pItem->sortFlags = (u8)iSortOrder;
+
+ if( eNulls!=SQLITE_SO_UNDEFINED ){
+ pItem->bNulls = 1;
+ if( iSortOrder!=eNulls ){
+ pItem->sortFlags |= KEYINFO_ORDER_BIGNULL;
+ }
}
}