On 19-07-2012 16:21, Vinicius Santos wrote:
>
>     Creio que não esteja correto não, porque o tipo de dado da coluna
>     dele é NUMERIC(14,4) e parece que ele não está respeitando essa
>     precisão... fiz alguns testes aqui e não consegui reproduzir aquele
>     comportamento:
>
>
> Também concordo com você. Ele deveria dar um erro para valores tão
> grandes como este, certo?
>
> Fiz o teste que você pediu: UPDATE nova_tabela SET valor = TRUNC(valor, 4);
>
> Depois do UPDATE tudo funciona normalmente!
>
>
>     Como a precisão da coluna "valor" é 4 ele "trunca" os decimais na
>     quarta casa... e isso parece não estar ocorrendo com o Vinicius.
>
>
> Novamente concordo. Ele poderia dar um erro, ao invés de aceitar um
> valor tão grande como este. Já que foi especificado a precisão de 4.

Cheque a documentação.
Internamente, o tipo "numeric" é armazenado como "float".

Repito: isso é comportamento esperado.

Não há sanitização de entrada. As casas do tipo "numeric" são utilizadas 
só para apresentação, não para modificação.

Tirei meu foco "documental" e fiz uma busca por possíveis bugs no tipo 
numeric e nenhum dos que encontrei são relacionados ao comportamento que 
vimos aqui.

Provavelmente se alguém entrar na hackers e indicar que isso é um bug 
vai tomar toco do Tom Lane.

[]s

Flavio Henrique A. Gurgel
Consultor e Instrutor 4Linux
Tel: +55-11-2125-4747
www.4linux.com.br

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a