From: books at ejurka.com (Kris Jurka) Date: Mon, 09 Jun 2008 20:47:51 -0700 Subject: [Pljava-dev] Possible bug, when updating BigDecimal from trigger/function In-Reply-To: <484C3BE0.8010406@click.cz> References: <484C3BE0.8010406@click.cz> Message-ID: <484DF967.1090001@ejurka.com> Petr Mich?lek wrote: > > When PL/Java trigger/function is updating BigDecimal, scale of new > BigDecimal value is not checked. Because of this, is possible store in > database numeric value with greater precision than is in column definition. > > Please can anybody confirm this behavior and is possible to fix this. > I haven't tested it myself, but it certainly looks like something that would happen when updating TriggerData. Under the hood we're using SPI_modifytuple which is apparently too low level for pg to do the precision/scale checks and it expects us to perform them before calling this method. For pljava, the conversion to backend type is going through a generic type conversion routine which doesn't have access to typmod information. It seems like we'd have to modify the whole coerceObject interface to support passing around typmod. I'm not sure how hard that would be to do. Kris Jurka