diff options
author | dan <dan@noemail.net> | 2018-07-07 17:30:44 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2018-07-07 17:30:44 +0000 |
commit | d4fc49f735a3da457affb29025e1bf3d7081a99d (patch) | |
tree | 6198c6a4ede75ec6626797ba8162fd7d367eebce /src/window.c | |
parent | e4984a2bf419391d5236b0e9558027dca15ac20a (diff) | |
download | sqlite-d4fc49f735a3da457affb29025e1bf3d7081a99d.tar.gz sqlite-d4fc49f735a3da457affb29025e1bf3d7081a99d.zip |
Fix a problem with the handling of NULL values in the min() window function.
FossilOrigin-Name: b76f35b09235d44dc3d176377bbb9c18b7cdc9392800103ff53c54730a427a5c
Diffstat (limited to 'src/window.c')
-rw-r--r-- | src/window.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/window.c b/src/window.c index 24dbc7930..b1ae0b6bc 100644 --- a/src/window.c +++ b/src/window.c @@ -1085,6 +1085,8 @@ static void windowAggStep( if( (pWin->pFunc->funcFlags & SQLITE_FUNC_MINMAX) && pWin->eStart!=TK_UNBOUNDED ){ + int addrIsNull = sqlite3VdbeAddOp1(v, OP_IsNull, regArg); + VdbeCoverage(v); if( bInverse==0 ){ sqlite3VdbeAddOp2(v, OP_AddImm, pWin->regApp+1, 1); sqlite3VdbeAddOp2(v, OP_SCopy, regArg, pWin->regApp); @@ -1096,6 +1098,7 @@ static void windowAggStep( sqlite3VdbeAddOp1(v, OP_Delete, pWin->csrApp); sqlite3VdbeJumpHere(v, sqlite3VdbeCurrentAddr(v)-2); } + sqlite3VdbeJumpHere(v, addrIsNull); }else if( pWin->regApp ){ assert( pWin->pFunc->xSFunc==nth_valueStepFunc || pWin->pFunc->xSFunc==first_valueStepFunc |