[firebase-br] Problemas com campos Numericos

Carlos H. Cantu listas em warmboot.com.br
Sex Out 18 21:05:36 -03 2019


NUMERIC (15,2) no dialeto 1 é armazenado internamente como double
precision, que garante até 15 digitos de precisão, mas está sujeito
aos "artefatos" inerentes ao armazenamento desse tipo de dado como
ponto flutuante, que não garante que o número recuperado é exatamente
o mesmo que foi armazenado.

Mudar um banco existente de dialeto 1 para 3 simplesmente através de
backup/restore não altera essa característica, ou seja, os campos
existentes continuam tendo a caracteristica de ponto flutuante, pois
não são convertidos automaticamente para o padrão de armazenamento
interno usado nativamente pelo dialeto 3 (que no seu caso seria um
BIGINT).

O recomendável é criar um banco no dialeto 3 via script e fazer um
PUMP dos dados pra ele.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

IC> Boa tarde ..

IC> Firebird 2.5 migrado para 3.0 .

IC> Estou tendo problemas com campos "Numeric(15,2)"  ...

IC> E esse banco era dialeto 1, e fiz a alteração do dialeto 1 para 3 e 
IC> depois fiz o backup e restore ..

IC>    Vi que em alguns casos os campos numeric .estão com valores estralhos
IC> e ao tentar fazer um DataPump esta dando problemas

IC> ex:

IC> Uma tabela com valor numeric esta sendo extraida com esse valor : 
IC> "1.88451045712187E-305"

IC>   INSERT INTO FINBDRDI (ID_BDR, VALOR, CODCTA) VALUES (249627, 
IC> 1.88451045712187E-305, '303');


IC> Ocasionando o erro abaixo processar esse sql.

IC> "Arithmetic overflow or division by zero has occurred. arithmetic 
IC> exception, numeric overflow, or string truncation. numeric value is out
IC> of range."


IC> O que eu poderia fazer pra ajustar esse problema ? .. existem casos 
IC> também que tem valores com o valor 'NAN' .. E consequentemente nao 
IC> consigo executar um datapump

IC> porque esses valores nao sao aceitos ..


IC> Desde ja agradeço


IC> Adilson Pazzini .






Mais detalhes sobre a lista de discussão lista