diff options
author | drh <> | 2024-03-24 16:42:12 +0000 |
---|---|---|
committer | drh <> | 2024-03-24 16:42:12 +0000 |
commit | 5b9ba67d8efaf39674ae9ee92fc4e07c2e4cfe2d (patch) | |
tree | 7cb0b8aa30a54782dcbebadcd838f403b65948c8 /src/expr.c | |
parent | c2526e2c2d62cad935927f0aba112b788fce741a (diff) | |
download | sqlite-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.c | 9 |
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: |