Icon View Incident Report

Serious Serious
Reported By: Oliver Bock
Reported On: 2/26/2004
For: Version 4.04 Build 1
# 1581 GROUP BY SELECT Statements Without an ORDER BY Cause Memory Leak

Aggregate queries leak memory.

var
   db: TDBISAMDatabase;
   qry: TDBISAMQuery;
begin
   db := TDBISAMDatabase.Create(nil);
   db.Directory := '.';
   db.DatabaseName := 'fiddlesticks';
   db.Connected := true;

   qry := TDBISAMQuery.Create(nil);
   qry.DatabaseName := db.DatabaseName;
   qry.SessionName  := db.SessionName;
   qry.SQL.Add('DROP TABLE IF EXISTS Test;'+
               'CREATE TABLE Test ( i integer, j integer )');
   qry.ExecSQL;
   qry.Free;

   qry := TDBISAMQuery.Create(nil);
   qry.DatabaseName := db.DatabaseName;
   qry.SessionName  := db.SessionName;
   // This query does not leak:
   // qry.SQL.Add('SELECT i, j FROM Test');
   // This query leaks:
   qry.SQL.Add('SELECT i, SUM(j) FROM Test GROUP BY i');
   qry.Open;
   qry.Free;
   
   db.Free;
end.



Comments Comments
Leak was 768 bytes, but only occurred once per preparation. Also, the leak only occurred with GROUP BY


Resolution Resolution
Fixed Problem on 3/18/0203 in version 4.05 build 1
Image