The offical for ZeosLib 7.3 Report problems, ask for help, post proposals for the new version of Zeoslib 7.3/v8
Quick Info:
-We made two new drivers: odbc(raw and unicode version) and oledb
-GUID domain/field-defined support for FB
-extended error infos of Firebird
-performance ups are still in queue
In future some more feature will arrive, so stay tuned and don't hassitate to help
if (fActiveTransaction <> nil) and (fActiveTransaction.QueryInterface(IImmediatelyReleasable, imm) = S_OK) and (imm <> Sender) then begin
imm.ReleaseImmediat(Sender, AError);
I looked into this. The problem is that this line doesn't do anything with a TList - at least as far as I can see. Could you please check if Optimizations are turned off in the project settings? Sometimes this gives better stack traces.
My first suggestion is disable optimizations in Delphi. This helps keeping the stack trace correct. Maybe it is worth setting up a separate application for tests and do something like this:
- Connect to MariaDB/MySQL from Zeos
- Stop MariaDB/MySQL (or just pull the network cable)
- Try to do something in Zeos
Usually this should lead to an exception telling you that the connection was lost.
function TZMySQLConnection.AbortOperation: Integer;
Var
killquery: SQLString;
izc: IZConnection;
Begin
{ EH untested, just prepared
if Assigned(FPlainDriver.mariadb_cancel) then begin
Result := FPlainDriver.mariadb_cancel(FHandle);
FPlainDriver.mariadb_reconnect(FHandle)
end else }begin
// https://dev.mysql.com/doc/refman/5.7/en/mysql-kill.html
killquery := 'KILL QUERY ' + IntToStr(FPlainDriver.mysql_thread_id(FHandle));
izc := DriverManager.GetConnection(GetURL);
Result := izc.CreateStatement.ExecuteUpdate(killquery);
end;
End;
Delphi 12.2, Zeos 8 from latest GIT snapshot
Using:
- MySQL server 8.0.18; libmysql.dll 8.0.40 x64 5.7.19 x68, libmariadb.dll 3.3.11
- Oracle server 11.2.0, 12.1.0, 19.0.0; oci.dll 21.15
- MSSQL 2012, 2019; sybdb.dll FreeTDS_3102
- SQLite 3.47