aboutsummaryrefslogtreecommitdiff
path: root/src/window.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2018-07-07 17:30:44 +0000
committerdan <dan@noemail.net>2018-07-07 17:30:44 +0000
commitd4fc49f735a3da457affb29025e1bf3d7081a99d (patch)
tree6198c6a4ede75ec6626797ba8162fd7d367eebce /src/window.c
parente4984a2bf419391d5236b0e9558027dca15ac20a (diff)
downloadsqlite-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.c3
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