aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <>2024-03-24 16:33:31 +0000
committerdrh <>2024-03-24 16:33:31 +0000
commita631eb378d94eb10ade6a0c2d18b2e411c1da806 (patch)
tree4f53ee3c3777c43dde3b5473f5e5d43551e49ddc /src/expr.c
parentd9eee787bd1ab041fef140dd29a5a8316647d3bc (diff)
downloadsqlite-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.c9
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);