You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by dj...@apache.org on 2005/01/06 22:45:35 UTC
svn commit: r124455 - in incubator/derby/code/trunk/java: engine/org/apache/derby/iapi/types engine/org/apache/derby/impl/sql/compile engine/org/apache/derby/impl/sql/execute testing/org/apache/derbyTesting/functionTests/master
Author: djd
Date: Thu Jan 6 13:45:32 2005
New Revision: 124455
URL: http://svn.apache.org/viewcvs?view=rev&rev=124455
Log:
Incremental step to isolating SQLDecimal and BigDecimal from
the majority of the code, for J2ME/CDC/Foundation/JSR169.
Modified:
incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataValueFactoryImpl.java
incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataType.java
incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataValue.java
incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/SQLDecimal.java
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTypeCompiler.java
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/MethodCallNode.java
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericConstantNode.java
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericTypeCompiler.java
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java
incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cast.out
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataValueFactoryImpl.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataValueFactoryImpl.java?view=diff&rev=124455&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataValueFactoryImpl.java&r1=124454&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataValueFactoryImpl.java&r2=124455
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataValueFactoryImpl.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataValueFactoryImpl.java Thu Jan 6 13:45:32 2005
@@ -22,7 +22,6 @@
import org.apache.derby.iapi.types.TypeId;
-import org.apache.derby.iapi.types.DataValueFactory;
import org.apache.derby.iapi.types.NumberDataValue;
import org.apache.derby.iapi.types.BooleanDataValue;
import org.apache.derby.iapi.types.BitDataValue;
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataType.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataType.java?view=diff&rev=124455&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataType.java&r1=124454&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataType.java&r2=124455
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataType.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataType.java Thu Jan 6 13:45:32 2005
@@ -298,7 +298,26 @@
setValue(theValue.booleanValue());
}
-
+ /**
+ Return the precision of this specific DECIMAL value.
+ If the value does not represent a SQL DECIMAL then
+ the return is undefined.
+ */
+ public int getDecimalValuePrecision()
+ {
+ return -1;
+ }
+
+ /**
+ Return the scale of this specific DECIMAL value.
+ If the value does not represent a SQL DECIMAL then
+ the return is undefined.
+ */
+ public int getDecimalValueScale()
+ {
+ return -1;
+ }
+
protected final boolean objectNull(Object o)
{
if (o == null)
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataValue.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataValue.java?view=diff&rev=124455&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataValue.java&r1=124454&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataValue.java&r2=124455
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataValue.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/NumberDataValue.java Thu Jan 6 13:45:32 2005
@@ -258,6 +258,20 @@
*
*/
public void setValue(Boolean theValue) throws StandardException;
+
+ /**
+ Return the precision of this specific DECIMAL value.
+ If the value does not represent a SQL DECIMAL then
+ the return is undefined.
+ */
+ public int getDecimalValuePrecision();
+
+ /**
+ Return the scale of this specific DECIMAL value.
+ If the value does not represent a SQL DECIMAL then
+ the return is undefined.
+ */
+ public int getDecimalValueScale();
}
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/SQLDecimal.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/SQLDecimal.java?view=diff&rev=124455&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/SQLDecimal.java&r1=124454&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/SQLDecimal.java&r2=124455
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/SQLDecimal.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/types/SQLDecimal.java Thu Jan 6 13:45:32 2005
@@ -65,12 +65,12 @@
*
* @author jamie
*/
-public final class SQLDecimal extends NumberDataType implements VariableSizeDataValue
+final class SQLDecimal extends NumberDataType implements VariableSizeDataValue
{
- public static final BigDecimal ZERO = BigDecimal.valueOf(0L);
- public static final BigDecimal ONE = BigDecimal.valueOf(1L);
- public static final BigDecimal MAXLONG_PLUS_ONE = BigDecimal.valueOf(Long.MAX_VALUE).add(ONE);
- public static final BigDecimal MINLONG_MINUS_ONE = BigDecimal.valueOf(Long.MIN_VALUE).subtract(ONE);
+ static final BigDecimal ZERO = BigDecimal.valueOf(0L);
+ static final BigDecimal ONE = BigDecimal.valueOf(1L);
+ static final BigDecimal MAXLONG_PLUS_ONE = BigDecimal.valueOf(Long.MAX_VALUE).add(ONE);
+ static final BigDecimal MINLONG_MINUS_ONE = BigDecimal.valueOf(Long.MIN_VALUE).subtract(ONE);
@@ -385,7 +385,7 @@
public int getLength()
{
- return getPrecision();
+ return getDecimalValuePrecision();
}
// this is for DataType's error generator
@@ -1040,7 +1040,7 @@
return this;
}
- public int getPrecision()
+ public int getDecimalValuePrecision()
{
return getPrecision(getBigDecimal());
}
@@ -1050,7 +1050,7 @@
*
* @return the precision
*/
- public static int getPrecision(BigDecimal decimalValue)
+ private static int getPrecision(BigDecimal decimalValue)
{
if ((decimalValue == null) ||
decimalValue.equals(ZERO))
@@ -1061,18 +1061,18 @@
return getWholeDigits(decimalValue) + decimalValue.scale();
}
- public int getScale()
+ public int getDecimalValueScale()
{
BigDecimal localValue = getBigDecimal();
return (localValue == null) ? 0 : localValue.scale();
}
- public int getWholeDigits()
+ private int getWholeDigits()
{
return getWholeDigits(getBigDecimal());
}
- public static int getWholeDigits(BigDecimal decimalValue)
+ private static int getWholeDigits(BigDecimal decimalValue)
{
if ((decimalValue == null) ||
decimalValue.equals(ZERO))
@@ -1091,15 +1091,5 @@
String s = decimalValue.toString();
return (decimalValue.scale() == 0) ? s.length() : s.indexOf('.');
- }
-
- /**
- * Return the value field
- *
- * @return BigDecimal
- */
- public BigDecimal getValue()
- {
- return getBigDecimal();
}
}
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTypeCompiler.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTypeCompiler.java?view=diff&rev=124455&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTypeCompiler.java&r1=124454&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTypeCompiler.java&r2=124455
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTypeCompiler.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTypeCompiler.java Thu Jan 6 13:45:32 2005
@@ -53,7 +53,7 @@
* @author Jeff
*/
-public abstract class BaseTypeCompiler implements TypeCompiler
+abstract class BaseTypeCompiler implements TypeCompiler
{
TypeId correspondingTypeId;
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java?view=diff&rev=124455&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java&r1=124454&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java&r2=124455
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java Thu Jan 6 13:45:32 2005
@@ -337,38 +337,23 @@
}
break;
+ case Types.DECIMAL:
+ // ignore decimal -> decimal casts for now
+ if (destJDBCTypeId == Types.DECIMAL ||
+ destJDBCTypeId == Types.NUMERIC)
+ break;
+ // fall through
case Types.TINYINT:
case Types.SMALLINT:
case Types.INTEGER:
case Types.BIGINT:
- long longValue = ((NumericConstantNode) castOperand).getLong();
- retNode = getCastFromIntegralType(
- longValue,
- destJDBCTypeId);
- break;
-
case Types.DOUBLE:
case Types.REAL:
- double doubleValue = ((NumericConstantNode) castOperand).getDouble();
- retNode = getCastFromNonIntegralType(
- doubleValue,
+ retNode = getCastFromNumericType(
+ ((ConstantNode) castOperand).getValue(),
destJDBCTypeId);
break;
- case Types.DECIMAL:
- // ignore decimal -> decimal casts for now
- if (destJDBCTypeId != Types.DECIMAL &&
- destJDBCTypeId != Types.NUMERIC)
- {
- /* SQLDecimal.getDouble() throws an exception if the
- * BigDecimal is outside of the range of double.
- */
- doubleValue = ((ConstantNode) castOperand).getValue().getDouble();
- retNode = getCastFromNonIntegralType(
- doubleValue,
- destJDBCTypeId);
- }
- break;
}
// Return the new constant if the cast was performed
@@ -668,93 +653,67 @@
*
* @exception StandardException Thrown on error
*/
- private ValueNode getCastFromNonIntegralType(
- double doubleValue,
+ private ValueNode getCastFromNumericType(
+ DataValueDescriptor constantValue,
int destJDBCTypeId)
throws StandardException
{
- String stringValue = null;
- ValueNode retNode = this;
+ int nodeType = -1;
+ Object constantObject = null;
switch (destJDBCTypeId)
{
case Types.CHAR:
+ nodeType = C_NodeTypes.CHAR_CONSTANT_NODE;
+ constantObject = constantValue.getString();
return (ValueNode) getNodeFactory().getNode(
- C_NodeTypes.CHAR_CONSTANT_NODE,
- Double.toString(doubleValue),
+ nodeType,
+ constantObject,
ReuseFactory.getInteger(
castTarget.getMaximumWidth()),
getContextManager());
+
case Types.TINYINT:
- doubleValue = Math.floor(doubleValue);
- if (doubleValue < Byte.MIN_VALUE ||
- doubleValue > Byte.MAX_VALUE)
- {
- throw StandardException.newException(SQLState.LANG_OUTSIDE_RANGE_FOR_DATATYPE, "TINYINT");
- }
- return (ValueNode) getNodeFactory().getNode(
- C_NodeTypes.TINYINT_CONSTANT_NODE,
- ReuseFactory.getByte(
- (byte) doubleValue),
- getContextManager());
+ nodeType = C_NodeTypes.TINYINT_CONSTANT_NODE;
+ constantObject = new Byte(constantValue.getByte());
+ break;
case Types.SMALLINT:
- doubleValue = Math.floor(doubleValue);
- if (doubleValue < Short.MIN_VALUE ||
- doubleValue > Short.MAX_VALUE)
- {
- throw StandardException.newException(SQLState.LANG_OUTSIDE_RANGE_FOR_DATATYPE, "SMALLINT");
- }
- return (ValueNode) getNodeFactory().getNode(
- C_NodeTypes.SMALLINT_CONSTANT_NODE,
- ReuseFactory.getShort(
- (short) doubleValue),
- getContextManager());
+ nodeType = C_NodeTypes.SMALLINT_CONSTANT_NODE;
+ constantObject = ReuseFactory.getShort(constantValue.getShort());
+ break;
case Types.INTEGER:
- doubleValue = Math.floor(doubleValue);
- if (doubleValue < Integer.MIN_VALUE ||
- doubleValue > Integer.MAX_VALUE)
- {
- throw StandardException.newException(SQLState.LANG_OUTSIDE_RANGE_FOR_DATATYPE, "INTEGER");
- }
- return (ValueNode) getNodeFactory().getNode(
- C_NodeTypes.INT_CONSTANT_NODE,
- ReuseFactory.getInteger(
- (int) doubleValue),
- getContextManager());
+ nodeType = C_NodeTypes.INT_CONSTANT_NODE;
+ constantObject = ReuseFactory.getInteger(constantValue.getInt());
+ break;
case Types.BIGINT:
- doubleValue = Math.floor(doubleValue);
- if (doubleValue < Long.MIN_VALUE ||
- doubleValue > Long.MAX_VALUE)
- {
- throw StandardException.newException(SQLState.LANG_OUTSIDE_RANGE_FOR_DATATYPE, "BIGINT");
- }
- return (ValueNode) getNodeFactory().getNode(
- C_NodeTypes.LONGINT_CONSTANT_NODE,
- ReuseFactory.getLong((long) doubleValue),
- getContextManager());
+ nodeType = C_NodeTypes.LONGINT_CONSTANT_NODE;
+ constantObject = ReuseFactory.getLong(constantValue.getLong());
+ break;
case Types.REAL:
-// System.out.println("cast to real!");
-// if (Math.abs(doubleValue) > Float.MAX_VALUE)
-// throw...
-// SQLReal.check(doubleValue);
-// jsk: rounding problem???
- return (ValueNode) getNodeFactory().getNode(
- C_NodeTypes.FLOAT_CONSTANT_NODE,
- new Float(NumberDataType.normalizeREAL(doubleValue)),
- getContextManager());
+ nodeType = C_NodeTypes.FLOAT_CONSTANT_NODE;
+ constantObject = new Float(NumberDataType.normalizeREAL(constantValue.getDouble()));
+ break;
case Types.DOUBLE:
- return (ValueNode) getNodeFactory().getNode(
- C_NodeTypes.DOUBLE_CONSTANT_NODE,
- new Double(doubleValue),
- getContextManager());
+ // no need to normalize here because no constant could be out of range for a double
+ nodeType = C_NodeTypes.DOUBLE_CONSTANT_NODE;
+ constantObject = new Double(constantValue.getDouble());
+ break;
}
- return retNode;
+ if (nodeType == -1)
+ return this;
+
+
+ return (ValueNode) getNodeFactory().getNode(
+ nodeType,
+ constantObject,
+ getContextManager());
+
}
/**
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/MethodCallNode.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/MethodCallNode.java?view=diff&rev=124455&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/MethodCallNode.java&r1=124454&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/MethodCallNode.java&r2=124455
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/MethodCallNode.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/MethodCallNode.java Thu Jan 6 13:45:32 2005
@@ -995,7 +995,7 @@
TypeId ctid = mapToTypeID( jsqlType );
- if (ctid.isNumericTypeId() || ctid.isBooleanTypeId())
+ if ((ctid.isNumericTypeId() && !ctid.isDecimalTypeId()) || ctid.isBooleanTypeId())
{
TypeCompiler tc = getTypeCompiler(ctid);
primParmTypeNames[i] = tc.getCorrespondingPrimitiveTypeName();
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericConstantNode.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericConstantNode.java?view=diff&rev=124455&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericConstantNode.java&r1=124454&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericConstantNode.java&r2=124455
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericConstantNode.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericConstantNode.java Thu Jan 6 13:45:32 2005
@@ -32,13 +32,13 @@
import org.apache.derby.iapi.types.TypeId;
import org.apache.derby.iapi.types.DataTypeUtilities;
+import org.apache.derby.iapi.types.NumberDataValue;
import org.apache.derby.impl.sql.compile.ExpressionClassBuilder;
import org.apache.derby.iapi.util.ReuseFactory;
import java.sql.Types;
-import java.math.BigDecimal;
public final class NumericConstantNode extends ConstantNode
{
@@ -61,7 +61,6 @@
boolean valueInP; // value in Predicate-- if TRUE a value was passed in
TypeId typeId = null;
int typeid = 0;
- Object val = null;
if (arg1 instanceof TypeId)
{
@@ -74,7 +73,6 @@
else
{
isNullable = Boolean.FALSE;
- val = arg1;
valueInP = true;
}
@@ -88,8 +86,7 @@
{
maxwidth = TypeId.SMALLINT_MAXWIDTH;
typeid = Types.TINYINT;
- setValue(getDataValueFactory().getDataValue(
- ((Byte)val).byteValue()));
+ setValue(getDataValueFactory().getDataValue((Byte) arg1));
}
break;
@@ -100,9 +97,7 @@
{
maxwidth = TypeId.INT_MAXWIDTH;
typeid = Types.INTEGER;
- setValue(
- getDataValueFactory().getDataValue(
- ((Integer) val).intValue()));
+ setValue(getDataValueFactory().getDataValue((Integer) arg1));
}
break;
@@ -113,9 +108,7 @@
{
maxwidth = TypeId.SMALLINT_MAXWIDTH;
typeid = Types.SMALLINT;
- setValue(
- getDataValueFactory().getDataValue(
- ((Short) val).shortValue()));
+ setValue(getDataValueFactory().getDataValue((Short) arg1));
}
break;
@@ -126,23 +119,24 @@
{
maxwidth = TypeId.LONGINT_MAXWIDTH;
typeid = Types.BIGINT;
- setValue(getDataValueFactory().getDataValue(((Long) arg1).longValue()));
+ setValue(getDataValueFactory().getDataValue((Long) arg1));
}
break;
case C_NodeTypes.DECIMAL_CONSTANT_NODE:
if (valueInP)
{
- BigDecimal dVal = (BigDecimal)val;
+
+ NumberDataValue constantDecimal = getDataValueFactory().getDecimalDataValue((String) arg1);
typeid = Types.DECIMAL;
- precision = org.apache.derby.iapi.types.SQLDecimal.getPrecision(dVal);
- scal = (dVal == null) ? 0 : dVal.scale();
+ precision = constantDecimal.getDecimalValuePrecision();
+ scal = constantDecimal.getDecimalValueScale();
/* be consistent with our convention on maxwidth, see also
* exactNumericType(), otherwise we get format problem, b 3923
*/
- maxwidth = DataTypeUtilities.computeMaxWidth( precision, scal);
- setValue(getDataValueFactory().getDataValue(dVal));
+ maxwidth = DataTypeUtilities.computeMaxWidth(precision, scal);
+ setValue(constantDecimal);
}
else
{
@@ -159,8 +153,7 @@
{
maxwidth = TypeId.DOUBLE_MAXWIDTH;
typeid = Types.DOUBLE;
- setValue(getDataValueFactory().getDataValue(
- ((Double) arg1).doubleValue()));
+ setValue(getDataValueFactory().getDataValue((Double) arg1));
}
break;
@@ -172,8 +165,7 @@
maxwidth = TypeId.REAL_MAXWIDTH;
typeid = Types.REAL;
setValue(
- getDataValueFactory().getDataValue(
- ((Float) arg1).floatValue()));
+ getDataValueFactory().getDataValue((Float) arg1));
}
break;
@@ -197,24 +189,6 @@
isNullable,
ReuseFactory.getInteger(maxwidth));
}
-
- long getLong() throws StandardException
- {
- return value.getLong();
- }
-
- /**
- * Return the value from this DoubleConstantNode
- *
- * @return The value of this DoubleConstantNode.
- *
- * @exception StandardException Thrown on error
- */
-
- double getDouble() throws StandardException
- {
- return value.getDouble();
- }
/**
* Return an Object representing the bind time value of this
@@ -265,13 +239,13 @@
mb.pushNewComplete(1);
break;
case C_NodeTypes.DOUBLE_CONSTANT_NODE:
- mb.push(getDouble());
+ mb.push(value.getDouble());
break;
case C_NodeTypes.FLOAT_CONSTANT_NODE:
mb.push(value.getFloat());
break;
case C_NodeTypes.LONGINT_CONSTANT_NODE:
- mb.push(getLong());
+ mb.push(value.getLong());
break;
default:
if (SanityManager.DEBUG)
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericTypeCompiler.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericTypeCompiler.java?view=diff&rev=124455&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericTypeCompiler.java&r1=124454&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericTypeCompiler.java&r2=124455
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericTypeCompiler.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericTypeCompiler.java Thu Jan 6 13:45:32 2005
@@ -68,9 +68,6 @@
int formatId = getStoredFormatIdFromTypeId();
switch (formatId)
{
- case StoredFormatIds.DECIMAL_TYPE_ID:
- return "double";
-
case StoredFormatIds.DOUBLE_TYPE_ID:
return "double";
@@ -89,6 +86,7 @@
case StoredFormatIds.TINYINT_TYPE_ID:
return "byte";
+ case StoredFormatIds.DECIMAL_TYPE_ID:
default:
if (SanityManager.DEBUG)
{
@@ -111,9 +109,6 @@
int formatId = getStoredFormatIdFromTypeId();
switch (formatId)
{
- case StoredFormatIds.DECIMAL_TYPE_ID:
- return "getDouble";
-
case StoredFormatIds.DOUBLE_TYPE_ID:
return "getDouble";
@@ -132,6 +127,7 @@
case StoredFormatIds.TINYINT_TYPE_ID:
return "getByte";
+ case StoredFormatIds.DECIMAL_TYPE_ID:
default:
if (SanityManager.DEBUG)
{
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj?view=diff&rev=124455&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj&r1=124454&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj&r2=124455
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj Thu Jan 6 13:45:32 2005
@@ -148,8 +148,6 @@
import java.sql.Types;
import java.util.Properties;
import java.util.Vector;
-import java.util.Enumeration;
-import java.math.BigDecimal;
import java.lang.Character;
public class SQLParser
@@ -561,18 +559,14 @@
*/
ValueNode getNumericNode(String num) throws StandardException
{
- BigDecimal bigDecimalValue = null;
- Integer intValue;
- Long longValue;
ContextManager cm = getContextManager();
// first, see if it might be an integer
try
{
- intValue = new Integer(num);
return (ValueNode) nodeFactory.getNode(
C_NodeTypes.INT_CONSTANT_NODE,
- intValue,
+ new Integer(num),
cm);
}
catch (NumberFormatException nfe)
@@ -583,10 +577,9 @@
// next, see if it might be a long
try
{
- longValue = new Long(num);
return (ValueNode) nodeFactory.getNode(
C_NodeTypes.LONGINT_CONSTANT_NODE,
- longValue,
+ new Long(num),
cm);
}
catch (NumberFormatException nfe)
@@ -594,23 +587,9 @@
// we catch because we want to continue on below
}
- // check whether we can convert to a BigDecimal
- try
- {
- bigDecimalValue = new BigDecimal(num);
- }
- catch (NumberFormatException nfe)
- {
- if (SanityManager.DEBUG)
- {
- SanityManager.THROWASSERT(
- "String \"" + num + "\" cannot be converted to a BigDecimal: " + nfe);
- }
- }
-
return (ValueNode) nodeFactory.getNode(
C_NodeTypes.DECIMAL_CONSTANT_NODE,
- bigDecimalValue,
+ num,
cm);
}
/**
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java?view=diff&rev=124455&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java&r1=124454&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java&r2=124455
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java Thu Jan 6 13:45:32 2005
@@ -98,7 +98,6 @@
import java.util.Hashtable;
import java.util.Properties;
import java.util.Vector;
-//import java.math.BigDecimal;
/**
* Insert the rows from the source into the specified
Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cast.out
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cast.out?view=diff&rev=124455&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cast.out&r1=124454&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cast.out&r2=124455
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cast.out (original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cast.out Thu Jan 6 13:45:32 2005
@@ -1426,7 +1426,7 @@
ij> values cast('99999' as smallint);
ERROR 22003: The resulting value is outside the range for the data type SHORT.
ij> values cast(99999 as smallint);
-ERROR 22003: The resulting value is outside the range for the data type SHORT.
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
ij> values cast(cast(99 as int) as char);
ERROR 22001: A truncation error was encountered trying to shrink CHAR '99' to length 1.
ij> values cast(cast(-9 as int) as char);