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
 			 */