aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <>2024-03-24 16:42:12 +0000
committerdrh <>2024-03-24 16:42:12 +0000
commit5b9ba67d8efaf39674ae9ee92fc4e07c2e4cfe2d (patch)
tree7cb0b8aa30a54782dcbebadcd838f403b65948c8 /src/expr.c
parentc2526e2c2d62cad935927f0aba112b788fce741a (diff)
downloadsqlite-5b9ba67d8efaf39674ae9ee92fc4e07c2e4cfe2d.tar.gz
sqlite-5b9ba67d8efaf39674ae9ee92fc4e07c2e4cfe2d.zip
Do not automatically assume that ROWID is NOT NULL when compiled with
SQLITE_ALLOW_ROWID_IN_VIEW. dbsqlfuzz 31b38eeb63a4e1562de665078f52b7b47a7543cf FossilOrigin-Name: b5d2dce18fcd00749a3efe8386df42fca103f86bd862f2610cfb05651ddb9d59
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 3d5b2b9c6..4b2bbcfbd 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -2738,9 +2738,12 @@ int sqlite3ExprCanBeNull(const Expr *p){
return 0;
case TK_COLUMN:
assert( ExprUseYTab(p) );
- return ExprHasProperty(p, EP_CanBeNull) ||
- p->y.pTab==0 || /* Reference to column of index on expression */
- (p->iColumn>=0
+ return ExprHasProperty(p, EP_CanBeNull)
+ || p->y.pTab==0 /* Reference to column of index on expression */
+#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 */
&& p->y.pTab->aCol[p->iColumn].notNull==0);
default: