[firebase-br] Problemas com perda de dados
Campus
campus em sinos.net
Qui Jun 28 14:22:17 -03 2007
Jeferson, baixei a 6.6.1 e continua igual, veja a sequencia do código.
Destaquei em maiúsculas
1 - StartStransaction (Transação)
2 - Commit (Transação)
3 - Disconnect (Conexão)
4 - Close (Conexão)
**********************************************
procedure TZConnection.StartTransaction;
begin
CheckAutoCommitMode;
if FExplicitTransactionCounter = 0 then
AutoCommit := False;
DoStartTransaction;
Inc(FExplicitTransactionCounter); <----- INCREMENTA SEM TESTAR O
CONTEUDO
end;
***********************************************
procedure TZConnection.Commit;
var
ExplicitTran: Boolean;
begin
CheckConnected;
CheckNonAutoCommitMode;
ExplicitTran := FExplicitTransactionCounter > 0;
if FExplicitTransactionCounter < 2 then <--------------- SE FOR MAIOR NÃO
COMITA E NÃO MUDA O VALOR DE AUTOCOMMIT PARA TRUE
//when 0 then AutoCommit was turned off, when 1 StartTransaction was used
begin
ShowSQLHourGlass;
try
try
FConnection.Commit;
finally
FExplicitTransactionCounter := 0;
if ExplicitTran then
AutoCommit := True;
end;
finally
HideSQLHourGlass;
end;
DoCommit;
end
else
Dec(FExplicitTransactionCounter); <-------- SÓ DECREMENTA
end;
****************************************
procedure TZConnection.Disconnect;
begin
if FConnection <> nil then
begin
DoBeforeDisconnect;
ShowSqlHourGlass;
try
CloseAllDataSets;
FConnection.Close; <---------- CHAMA O FECHAMENTO DA CONEXÃO
FConnection := nil;
finally
HideSqlHourGlass;
end;
DoAfterDisconnect;
end;
end;
**********************************************
procedure TZInterbase6Connection.Close;
begin
if Closed then Exit;
if FTrHandle <> nil then
begin
if AutoCommit then <-------- SE NÃO FOR TRUE FAZ O ROLBACK
begin
FPlainDriver.isc_commit_transaction(@FStatusVector, @FTrHandle);
DriverManager.LogMessage(lcTransaction, FPlainDriver.GetProtocol,
Format('COMMITT TRANSACTION "%s"', [Database]));
end else begin
FPlainDriver.isc_rollback_transaction(@FStatusVector, @FTrHandle);
DriverManager.LogMessage(lcTransaction, FPlainDriver.GetProtocol,
Format('ROLLBACK TRANSACTION "%s"', [Database]));
end;
FTrHandle := nil;
CheckInterbase6Error(FPlainDriver, FStatusVector, lcDisconnect);
end;
if FHandle <> nil then
begin
FPlainDriver.isc_detach_database(@FStatusVector, @FHandle);
FHandle := nil;
CheckInterbase6Error(FPlainDriver, FStatusVector, lcDisconnect);
end;
DriverManager.LogMessage(lcConnect, FPlainDriver.GetProtocol,
Format('DISCONNECT FROM "%s"', [Database]));
inherited Close;
end;
----- Original Message -----
From: "Jeferson Oliveira" <jefersonfoliveira em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Thursday, June 28, 2007 9:43 AM
Subject: Re: [firebase-br] Problemas com perda de dados
Campus escreveu:
> Magno, no meu entender o Zeos tem um bug, não olhei as outras versões. eu
> tenho a 6.1.5.
Olá Campus!
Sugiro que faça um teste na versão atual do Zeos, que é a 6.6.1 beta.
Muitos problemas foram corrigidos desde a versão 6.1.5, e é possível
que esse também tenha sido.
Vale a pena conferir: http://forum.zeoslib.net.ms/
P.S.: Se possível comente aqui o resultado dos testes.
Abraço!
Jeferson Oliveira
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.476 / Virus Database: 269.9.10/873 - Release Date: 26/06/2007
23:54
Mais detalhes sobre a lista de discussão lista