[firebase-br] Firedac+Commit+Delphi 10.3.1=problema?

Gladiston Santana gladiston em vidy.com.br
Ter Maio 14 17:01:33 -03 2019


Fiz o teste unitário e cheguei a conclusão de que usar os controles visuais
do FDConnection para efeito de isolamento de transação é perigoso, usando
os controles visuais não obtive efeito que desejava, isto é, que o
aplicativo "A" pudesse ver o que "B" commitou apenas realizando o refresh.
Os controles visuais apenas me permitiram determinar uma conexão otimista
ou pessimista, o que funcionou perfeito. Numa conexão pessimista tomei um
erro de "update conflit" quando tentei alterar algo que estava sendo
alterado simultaneamente, enquanto o otimista ficou esperando indefinidade
a transação ser commitada para prosseguir. Inclusive tentei usar um
parametro isc_tpb_lock_timeout para ver se era possivel determinar um tempo
de espera, mas infelizmente não deu certo.

Apesar de funcionar bem para otimista e pessimista, no que se refere a ver
dados commitados noutra transação, não obtive sucesso ajustando os
parametros FDConnection.TXOptions ou FDTransaction.Options.

Para obter exito no isolamento das transações e então conseguir observar o
que aplicativo "A" ou "B" fez foi necessário acrescentar os parametros de
conexão:
isc_tpb_read_committed
isc_tpb_rec_version
isc_tpb_wait

Daí então, os registros atualizados com .commit ou .commitretaining, estão
imediatamente disponiveis por outro aplicativo mediante a um simples
refresh.

Então é isso, usando os checkbox na propriedade do FDConnection.TxOptions
obtive resultados diferentes do que simplesmente adicionar os parametros
acima a conexão.

[]´s a todos.

Em seg, 13 de mai de 2019 às 17:56, Gladiston Santana <gladiston em vidy.com.br>
escreveu:

> Ainda estou estudando tal problema.
> vou nos proximos dias criar um teste unário e ver o que acontece.
>
>



Mais detalhes sobre a lista de discussão lista