Return-Path: Delivered-To: apmail-db-torque-dev-archive@www.apache.org Received: (qmail 57001 invoked from network); 8 Nov 2007 15:49:14 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 8 Nov 2007 15:49:14 -0000 Received: (qmail 13723 invoked by uid 500); 8 Nov 2007 15:49:02 -0000 Delivered-To: apmail-db-torque-dev-archive@db.apache.org Received: (qmail 13706 invoked by uid 500); 8 Nov 2007 15:49:02 -0000 Mailing-List: contact torque-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Apache Torque Developers List" Reply-To: "Apache Torque Developers List" Delivered-To: mailing list torque-dev@db.apache.org Received: (qmail 13695 invoked by uid 99); 8 Nov 2007 15:49:02 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 08 Nov 2007 07:49:02 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 08 Nov 2007 15:49:47 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id CBBD9714233 for ; Thu, 8 Nov 2007 07:48:50 -0800 (PST) Message-ID: <30731515.1194536930831.JavaMail.jira@brutus> Date: Thu, 8 Nov 2007 07:48:50 -0800 (PST) From: "CG Monroe (JIRA)" To: torque-dev@db.apache.org Subject: [jira] Resolved: (TORQUE-53) Inserting wrong data if data type is Double and 0(zero) is the last digit In-Reply-To: <14685065.1155913334029.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/TORQUE-53?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] CG Monroe resolved TORQUE-53. ----------------------------- Resolution: Fixed Fix Version/s: 3.3-RC3 Added better conversion handling in Village for BigDecimal values. Double and Float types will be converted using appropriate constructors rather than the somewhat buggy BigDecimal(String) constructor. > Inserting wrong data if data type is Double and 0(zero) is the last digit > ------------------------------------------------------------------------- > > Key: TORQUE-53 > URL: https://issues.apache.org/jira/browse/TORQUE-53 > Project: Torque > Issue Type: Bug > Components: Runtime, Village > Affects Versions: 3.2 > Environment: Windows NT > Reporter: Sudhakar Pandey > Assignee: CG Monroe > Fix For: 3.3-RC3 > > > Problem: Torque is inserting wrong data in the database for Double type. > Database description > ~~~~~~~~~~~~~~~~~ > Database: Oracle 10g > Oracle JDBC version: 10.2.0.1.0 > Table Name: Bank_Account > Column Name: Current_Balance > Column dataType: NUMBER(15,4) > When I am trying to enter a value new Double(1234567890) it insert/update 12.3456 in the database. This happens only if the number of digits are more than 7 and last digit is 0(zero). > I have tried updating using directly PreparedStatement and it just worked fine. Problem comes only with Torque. > Following is the program I have used for varification: > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > ............ > public static void main(String argv[]) { > TorqueInitializer.init(); > Connection db_connection = null; > db_connection = Common.getConnection(); > > if (db_connection == null) { > System.out.println("Unable to get dbConnection"); > } > > try { > BankAccount bankAccount = showCurrentBalance(db_connection); > long value = 12345l; > for (int i = 5; i < 11; i++, value = ((value * 10) + i)) { > System.out.println("Value=" + value); > System.out.print(" "); > bankAccount = showCurrentBalance(db_connection); > > if (updateUsingPrepStat) > updateCurrentBalanceUsingPStat(db_connection, new Double( > value * 10)); > else > updateCurrentBalanceUsingTorque(bankAccount, db_connection, > new Double(value * 10)); > System.out.print(" "); > bankAccount = showCurrentBalance(db_connection); > } > } catch (Exception e) { > e.printStackTrace(); > } finally { > > if (db_connection != null) > try { > db_connection.close(); > } catch (SQLException e) { > e.printStackTrace(); > } > } > } > > public static BankAccount showCurrentBalance(Connection db_connection) { > try { > Criteria c = new Criteria(); > c.add(BankAccountPeer.BANK_ACCOUNT_ID, new Long(1523764)); > List list = BankAccountPeer.doSelect(c, db_connection); > BankAccount bankAccount = (BankAccount) list.get(0); > System.out.println("Current account balance: " > + bankAccount.getCurrentBalance()); > return bankAccount; > } catch (TorqueException e) { > e.printStackTrace(); > } > return null; > } > > public static void updateCurrentBalanceUsingTorque(BankAccount bankAccount, > Connection db_connection, Double value) throws Exception { > bankAccount.setCurrentBalance(value); > bankAccount.save(db_connection, "ibdv70"); > } > ............ >