[firebase-br] Isso já ocorreu com mais alguém?

Gladiston Santana gladiston em vidy.com.br
Sex Mar 4 10:50:29 -03 2016


Tentei reproduzir pela terceira vez, mas dessa vez fiz a limpa na máquina e
reinstalei o FB 2.5.4 para .2.5.5.
Novamente criei a base do zero através de scripts e carreguei a base com os
tradicionais 700M de dados .
Refiz o calculado e ainda estou conferindo item-a-item um calculado para
que não haja engano e depois de uns 15 minutos de conferencia ainda não
achei nenhum erro.
Eu não compreendi exatamente o que houve.
Problemas com arredondamentos são conhecidos por misturar tipos diferentes
float, int e bcd. O que faço por aqui é não misturar esses tipos, quase
sempre declaro minhas variaveis como type of column para nunca nunca errar
o tipo e tamanho de uma variavel que será enviada para o banco, mas com os
numeros eu faço essas declarações explicitamente como numeric para ter
certeza de que não estou misturando dados de natureza diferentes e tambem
porque type of column carrega as constraints do banco para a variavel e
isso pode ser um problema em algumas situações.
O Carlos pediu para tentar ver se consigo reproduzir, mas devido a
complexidade do programa, da base e do calculo (sabe o que é calcular um
preço de venda em todas as etapas de um processo industral, né?) é
complicado criar um teste unitário.
O que eu faço por aqui é usar o IBExpert e ficar debugando a procedure
step-by-step e é assim que estou descobrindo que o valor que a procedure
calculou deu certo, mas o FB gravou errado.
Eu acho, que talvez tenha sido porque havia transações ao fundo e quando
paro para procurar o problema não ocorre porque é apenas eu e o ibexpert.
Eu tenho quase certeza que não chegarei a nenhuma compreensão real do
problema e vou depositar novamente o problema nos gremlins.


Em 3 de março de 2016 14:11, Adilson B. Cápua Jr. <juniorcapua em gmail.com>
escreveu:

> Sempre que usava NUMERIC(12,2) para campos do tipo monetário eu tive
> problemas com arredondamentos.
> Só resolvi meus problemas quando passei a usar NUMERIC(12,4)
>
> Seu problema pode ser isso!



Mais detalhes sobre a lista de discussão lista