From b21c7f4a99e09067e4aeb13e252d98aac9d23f2d Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Tue, 16 Feb 2021 13:23:44 +0200 Subject: [PATCH] MXS-3408 Fix leak in qc_sqlite Without this fix, there will be a leak every time a SELECT statement uses ... PRECEDING or ... FOLLOWING (except for the case when ... is UNBOUNDED). --- query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y b/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y index 34c169635..4abd5bb78 100644 --- a/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y +++ b/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y @@ -2060,11 +2060,15 @@ wf_frame_units ::= ROWS. wf_frame_start ::= UNBOUNDED PRECEDING. wf_frame_start ::= CURRENT ROW. -wf_frame_start ::= term PRECEDING. +wf_frame_start ::= term(X) PRECEDING. { + sqlite3ExprDelete(pParse->db, X.pExpr); +} wf_frame_bound ::= wf_frame_start. wf_frame_bound ::= UNBOUNDED FOLLOWING. -wf_frame_bound ::= term FOLLOWING. +wf_frame_bound ::= term(X) FOLLOWING. { + sqlite3ExprDelete(pParse->db, X.pExpr); +} wf_frame_extent ::= wf_frame_start. wf_frame_extent ::= BETWEEN wf_frame_bound AND wf_frame_bound.