Is this the latest driver (7.5.xxx)?
I've seen a message in MaxDB list about bug in JDBC driver concerning
decimal precision and nasty roundings...
My2c,
Richter
Em Qua, 2004-08-18 �s 15:55, Armin Waibel escreveu:
> Hi Jason, Stuart,
>
> it's an really nasty issue! If I apply 'option 3'
>
>
> else if ((value instanceof BigDecimal) && (sqlType == Types.DECIMAL
> || sqlType == Types.NUMERIC))
> {
> ps.setObject(index, value, sqlType,
> ((BigDecimal) value).scale());
> }
>
>
> sapDB/maxDB does not pass NumberAccuracyTest:
>
> Testcase: testBigDecimal took 0,015 sec
> FAILED
> expected:<67.3456> but was:<67.0>
> junit.framework.AssertionFailedError: expected:<67.3456> but was:<67.0>
> at
> org.apache.ojb.broker.NumberAccuracyTest.testBigDecimal(NumberAccuracyTest.java:55)
>
> seems that in that case maxDB has problem with scale setting.
> If I use option 2
>
> else if(sqlType == Types.DECIMAL || sqlType == Types.NUMERIC)
> {
> ps.setObject(index, value);
> }
>
> All tests pass.
> What to do?
> - Apply option 3 to default Platform and override
> #setObjectForStatement(...) in maxDB to use option 2 or old behavior?
> - Apply option 2 to default Platform and override Sybase Platform
> #setObjectForStatement(...) and use option 3 for Sybase?
> - Apply option 2 for DB2 and option 3 for Sybase?
>
> regards,
> Armin
>
>
>
> Jason Mihalick wrote:
> > Armin Waibel wrote:
> >
> >> I local apply your patch to PlatformDefaultImpl and run the test-suite
> >> against sapDB/maxDB with success.
> >> So, what do the experts think about it? ;-)
> >> Apply this patch to PlatformDefaultImpl?
> >>
> > I haven't corresponded yet with the other folks that replied to my post,
> > but I do think since other folks are seeing the problem in Sybase and
> > other platforms that it does indeed belong in PlatformDefaultImpl.
> > Also, if you look at the JavaDoc for setObject...
> >
> > Option 1 ->
> > http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html#setObject(int,%20java.lang.Object,%20int)
> >
> >
> >
> > vs.
> >
> > Option 2 ->
> > http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html#setObject(int,%20java.lang.Object)
> >
> >
> >
> > OR
> >
> > Option 3 ->
> > http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html#setObject(int,%20java.lang.Object,%20int,%20int)
> >
> >
> >
> > it's pretty evident that either the 2nd or 3rd option is the proper
> > choice here. That brings up the question, which is the best choice?
> > Even though I know that option 2 works for DB2, it does seem like option
> > 3 is the saftest route to go. The JavaDoc is pretty explicit for option
> > 3 about the handling of DECIMAL data types. So after having reviewed
> > this in more detail, my vote would be to go with the patch as suggested
> > by Stuart Heriot in the following post:
> >
> > http://nagoya.apache.org/eyebrowse/[EMAIL PROTECTED]&msgNo=13981
> >
> >
> >
> >>>
> >>> This posting, incidentally, did receive some feedbadk from other
> >>> users saying that they had seen the same problem.
> >>>
> >>
> >> Do all of them agree apply the patch in PlatformDefaultImpl? Does it
> >> solve the sybase problem too?
> >>
> > Yes, I think the concensus is to go with Option 3 above.
> >
> > Thanks,
> > Jason
> >
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]