From b7d5ed4bd75ec53ae4a5d841d20ee9ebf9ceaac2 Mon Sep 17 00:00:00 2001 From: lacak Date: Tue, 4 Jun 2013 10:11:38 +0000 Subject: [PATCH] fcl-db: sqldb: Some SQLConnections does not support statement [un]preparation, so let them do cleanup f.e. cancel pending queries and/or free resultset when dataset is closed. git-svn-id: trunk@24803 - --- packages/fcl-db/src/sqldb/sqldb.pp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/fcl-db/src/sqldb/sqldb.pp b/packages/fcl-db/src/sqldb/sqldb.pp index 5401f74d88..4be67d9f9f 100644 --- a/packages/fcl-db/src/sqldb/sqldb.pp +++ b/packages/fcl-db/src/sqldb/sqldb.pp @@ -1419,7 +1419,7 @@ begin if Assigned(Fstatement) then Result := FStatement.Prepared else - Result:=False; + Result := False; end; function TCustomSQLQuery.AddFilter(SQLstr: string): string; @@ -1448,7 +1448,7 @@ begin FreeFldBuffers; FStatement.Unprepare; FIsEOF := False; - inherited internalclose; + inherited InternalClose; FStatement.DoPrepare; FStatement.DoExecute; inherited InternalOpen; @@ -1575,14 +1575,18 @@ procedure TCustomSQLQuery.InternalClose; begin if not IsReadFromPacket then begin - if assigned(Cursor) and Cursor.FSelectable then FreeFldBuffers; - FStatement.Unprepare; + if assigned(Cursor) and Cursor.FSelectable then + FreeFldBuffers; + // Some SQLConnections does not support statement [un]preparation, + // so let them do cleanup f.e. cancel pending queries and/or free resultset + if not FStatement.Prepared then + FStatement.DoUnprepare; end else - begin + begin if assigned(Cursor) then FStatement.DeAllocateCursor; - end; + end; if DefaultFields then DestroyFields; FIsEOF := False; @@ -1590,7 +1594,7 @@ begin if assigned(FInsertQry) then FreeAndNil(FInsertQry); if assigned(FDeleteQry) then FreeAndNil(FDeleteQry); // FRecordSize := 0; - inherited internalclose; + inherited InternalClose; end; procedure TCustomSQLQuery.InternalInitFieldDefs;