diff --git a/changelogs/unreleased/gh-8535-memleak-in-sqlSelect.md b/changelogs/unreleased/gh-8535-memleak-in-sqlSelect.md new file mode 100644 index 0000000000000000000000000000000000000000..d31ba0034546c7db540ce8751b5e070a6fca0b0d --- /dev/null +++ b/changelogs/unreleased/gh-8535-memleak-in-sqlSelect.md @@ -0,0 +1,4 @@ +## bugfix/sql + +* Fixed a memory leak when an error occurred in `SELECT` with a `GROUP BY` + expression (gh-8535, ghs-125). diff --git a/src/box/sql/select.c b/src/box/sql/select.c index 0c77890c617ce3c715897794b770977116b7c120..1d12b3b562ce63c41feec15d4b79332f7dbc65b7 100644 --- a/src/box/sql/select.c +++ b/src/box/sql/select.c @@ -6295,8 +6295,6 @@ sqlSelect(Parse * pParse, /* The parser context */ */ sqlVdbeJumpHere(v, addr1); updateAccumulator(pParse, &sAggInfo); - if (pParse->is_aborted) - goto select_end; sqlVdbeAddOp2(v, OP_Integer, 1, iUseFlag); VdbeComment((v, "indicate data in accumulator")); @@ -6310,6 +6308,8 @@ sqlSelect(Parse * pParse, /* The parser context */ sqlWhereEnd(pWInfo); sqlVdbeChangeToNoop(v, addrSortingIdx); } + if (pParse->is_aborted) + goto select_end; /* Output the final row of result */