diff options
author | drh <> | 2023-03-25 23:40:21 +0000 |
---|---|---|
committer | drh <> | 2023-03-25 23:40:21 +0000 |
commit | debc3202c6ac81a4baee951cddfad9a2087ed56e (patch) | |
tree | 9ae3b5ed79d58d473ad5e09b31aa8c2bef6516a0 /src/expr.c | |
parent | de0416171b4f62bdd134ff6d97950f33050ad63a (diff) | |
download | sqlite-debc3202c6ac81a4baee951cddfad9a2087ed56e.tar.gz sqlite-debc3202c6ac81a4baee951cddfad9a2087ed56e.zip |
Add usage detection to the NULL value generator for the left table of a
RIGHT JOIN inside of an aggregate.
FossilOrigin-Name: 4d05a009dfb63bcb4173da4d09ccc00c308ce4dd2534a32aeb23c5d8d6a1fd4b
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/expr.c b/src/expr.c index 372e59803..cd09c0d71 100644 --- a/src/expr.c +++ b/src/expr.c @@ -4224,9 +4224,15 @@ expr_code_doover: assert( pAggInfo!=0 ); assert( pExpr->iAgg>=0 ); if( pExpr->iAgg>=pAggInfo->nColumn ){ + /* Happens when the left table of a RIGHT JOIN is null and + ** is using an expression index */ sqlite3VdbeAddOp2(v, OP_Null, 0, target); - /* FIXME: Need to verify that tests run this opcode - ** Some kind of coverage macro.. VdbeCoverage(v); tag-20230325-2 */ +#ifdef SQLITE_VDBE_COVERAGE + /* Verify that the OP_Null above is exercised by tests + ** tag-20230325-2 */ + sqlite3VdbeAddOp2(v, OP_NotNull, target, 1); + VdbeCoverageNeverTaken(v); +#endif break; } pCol = &pAggInfo->aCol[pExpr->iAgg]; |