diff options
author | drh <> | 2024-03-24 16:33:31 +0000 |
---|---|---|
committer | drh <> | 2024-03-24 16:33:31 +0000 |
commit | a631eb378d94eb10ade6a0c2d18b2e411c1da806 (patch) | |
tree | 4f53ee3c3777c43dde3b5473f5e5d43551e49ddc /src/expr.c | |
parent | d9eee787bd1ab041fef140dd29a5a8316647d3bc (diff) | |
download | sqlite-a631eb378d94eb10ade6a0c2d18b2e411c1da806.tar.gz sqlite-a631eb378d94eb10ade6a0c2d18b2e411c1da806.zip |
Do not automatically assume that ROWID is NOT NULL when compiled with
SQLITE_ALLOW_ROWID_IN_VIEW.
dbsqlfuzz 31b38eeb63a4e1562de665078f52b7b47a7543cf
FossilOrigin-Name: 80c4223098c1827ff3a564f1f9a4203164a943e9a83eef99df68378fa3c4764b
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/expr.c b/src/expr.c index 7e3f38279..d71353f17 100644 --- a/src/expr.c +++ b/src/expr.c @@ -2801,9 +2801,12 @@ int sqlite3ExprCanBeNull(const Expr *p){ return 0; case TK_COLUMN: assert( ExprUseYTab(p) ); - return ExprHasProperty(p, EP_CanBeNull) || - NEVER(p->y.pTab==0) || /* Reference to column of index on expr */ - (p->iColumn>=0 + return ExprHasProperty(p, EP_CanBeNull) + || NEVER(p->y.pTab==0) /* Reference to column of index on expr */ +#ifdef SQLITE_ALLOW_ROWID_IN_VIEW + || (p->iColumn==XN_ROWID && IsView(p->y.pTab)) +#endif + || (p->iColumn>=0 && p->y.pTab->aCol!=0 /* Possible due to prior error */ && ALWAYS(p->iColumn<p->y.pTab->nCol) && p->y.pTab->aCol[p->iColumn].notNull==0); |