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