Thread: Driver bug (DECIMAL column issue)

Driver bug (DECIMAL column issue)

From
Jiri Skrivanek
Date:
Hello,
we are using jdbc6.5-1.2.jar driver for connection to PostgreSQL
database. We have a problem to update DECIMAL column when we are using
CachedRowSet in JDBC application created inside Forte for Java IDE. We
suppose this a bug in driver. From our investigations it seems it might
be a problem with PreparedStatement. See below steps to reproduce in
Forte for Java. Anyway we think the most important is this error
message:

ERROR:  Unable to identify an operator '=' for types 'numeric' and
'float8'
        You will have to retype this query using an explicit cast

Please could you inform us, if this issue will be solved by you or if
there is new version of driver.

Thank you.

Jiri Skrivanek
Quality Assurance Engineer, Forte Tools
Sun Microsystems Czech, Software Platforms and Products


====================================================================================
It is impossible to update decimal value in PostreSQL database.

- create a table with one row (e.g. dec1 DECIMAL(15,5))
- generate application with JTable and DataNavigator showing this table
(e.g. by JDBC Form Wizard)
- add new row, fill in the column decimal value (e.g. 12.34), push
accept changes
- now it is OK, changes were successfully saved into database
- try to modify the value and push accept button
- exception is thrown and it is not possible to change the value

ERROR:  Unable to identify an operator '=' for types 'numeric' and
'float8'
        You will have to retype this query using an explicit cast

java.sql.SQLException: acceptChanges Failed
        at
sun.jdbc.rowset.CachedRowSet.acceptChanges(CachedRowSet.java:791)
        at
org.netbeans.lib.sql.DataNavigator.updateButtonActionPerformed(DataNavigator.java:345)
        at
org.netbeans.lib.sql.DataNavigator.access$600(DataNavigator.java:31)
        at
org.netbeans.lib.sql.DataNavigator$7.actionPerformed(DataNavigator.java:165)
        at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)
        at
javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504)
        at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378)
        at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
        at
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:216)
        at
java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:230)
        at java.awt.Component.processMouseEvent(Component.java:3715)
        at java.awt.Component.processEvent(Component.java:3544)
        at java.awt.Container.processEvent(Container.java:1165)
        at java.awt.Component.dispatchEventImpl(Component.java:2593)
        at java.awt.Container.dispatchEventImpl(Container.java:1214)
        at java.awt.Component.dispatchEvent(Component.java:2497)
        at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2452)
        at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:2217)
        at
java.awt.LightweightDispatcher.dispatchEvent(Container.java:2126)
        at java.awt.Container.dispatchEventImpl(Container.java:1201)
        at java.awt.Window.dispatchEventImpl(Window.java:912)
        at java.awt.Component.dispatchEvent(Component.java:2497)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:333)
        at
java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:103)
        at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)