Index: java/engine/org/apache/derby/iapi/types/SQLDecimal.java =================================================================== --- java/engine/org/apache/derby/iapi/types/SQLDecimal.java (revision 106621) +++ java/engine/org/apache/derby/iapi/types/SQLDecimal.java (working copy) @@ -32,10 +32,13 @@ import org.apache.derby.iapi.error.StandardException; import org.apache.derby.iapi.services.cache.ClassSize; +import org.apache.derby.iapi.services.info.JVMInfo; import java.math.BigDecimal; import java.math.BigInteger; import java.lang.Math; +import java.lang.reflect.Method; +import java.lang.reflect.InvocationTargetException; import java.io.ObjectOutput; import java.io.ObjectInput; import java.io.IOException; @@ -130,7 +133,7 @@ value = val; } - public SQLDecimal(BigDecimal val, int precision, int scale) + public SQLDecimal(BigDecimal val, int nprecision, int scale) throws StandardException { @@ -309,10 +312,42 @@ BigDecimal localValue = getBigDecimal(); if (localValue == null) return null; - else + else if (JVMInfo.JDK_ID < 6) return localValue.toString(); + else + { + // use reflection so we can still compile using JDK1.4 + // if we are prepared to require 1.5 to compile then this can be a direct call + try { + return (String) toPlainString.invoke(localValue, null); + } catch (IllegalAccessException e) { + // can't happen based on the JDK spec + throw new IllegalAccessError("toPlainString"); + } catch (InvocationTargetException e) { + Throwable t = e.getTargetException(); + if (t instanceof RuntimeException) { + throw (RuntimeException) t; + } else if (t instanceof Error) { + throw (Error) t; + } else { + // can't happen + throw new IncompatibleClassChangeError("toPlainString"); + } + } + } } + private static final Method toPlainString; + static { + Method m; + try { + m = BigDecimal.class.getMethod("toPlainString", null); + } catch (NoSuchMethodException e) { + m = null; + } + toPlainString = m; + } + public Object getObject() { /* Index: java/engine/org/apache/derby/iapi/services/info/JVMInfo.java =================================================================== --- java/engine/org/apache/derby/iapi/services/info/JVMInfo.java (revision 106101) +++ java/engine/org/apache/derby/iapi/services/info/JVMInfo.java (working copy) @@ -33,6 +33,7 @@