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 2008/02/08 21:38:00 UTC
svn commit: r619995 - in /db/derby/code/trunk/java/engine/org/apache/derby:
catalog/ catalog/types/ iapi/services/io/ iapi/types/ impl/sql/compile/
Author: djd
Date: Fri Feb 8 12:37:59 2008
New Revision: 619995
URL: http://svn.apache.org/viewvc?rev=619995&view=rev
Log:
DERBY-2917 Changed the runtime type DataTypeDescriptor to no longer be a TypeDescriptor (catalog type) but instead only have a catalog type (TypeDescriptor). Added code to handle upgrade issue of DataTypeDescriptor's being written as catalog types in RoutineAliasInfo.
Added:
db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/OldRoutineType.java (with props)
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/catalog/TypeDescriptor.java
db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/RoutineAliasInfo.java
db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/TypesImplInstanceGetter.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/RegisteredFormatIds.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/StoredFormatIds.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataTypeDescriptor.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/TypeId.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RoutineDesignator.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
Modified: db/derby/code/trunk/java/engine/org/apache/derby/catalog/TypeDescriptor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/catalog/TypeDescriptor.java?rev=619995&r1=619994&r2=619995&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/catalog/TypeDescriptor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/catalog/TypeDescriptor.java Fri Feb 8 12:37:59 2008
@@ -53,11 +53,21 @@
TypeDescriptor INTEGER = DataTypeDescriptor.INTEGER.getCatalogType();
/**
+ * Catalog type for not nullable INTEGER
+ */
+ TypeDescriptor INTEGER_NOT_NULL =
+ DataTypeDescriptor.INTEGER_NOT_NULL.getCatalogType();
+
+ /**
* Catalog type for nullable SMALLINT
*/
- TypeDescriptor SMALLINT =
- DataTypeDescriptor.getBuiltInDataTypeDescriptor(
- Types.SMALLINT).getCatalogType();
+ TypeDescriptor SMALLINT = DataTypeDescriptor.SMALLINT.getCatalogType();
+
+ /**
+ * Catalog type for not nullable INTEGER
+ */
+ TypeDescriptor SMALLINT_NOT_NULL =
+ DataTypeDescriptor.SMALLINT_NOT_NULL.getCatalogType();
///////////////////////////////////////////////////////////////////////
Added: db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/OldRoutineType.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/OldRoutineType.java?rev=619995&view=auto
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/OldRoutineType.java (added)
+++ db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/OldRoutineType.java Fri Feb 8 12:37:59 2008
@@ -0,0 +1,68 @@
+/*
+
+ Derby - Class org.apache.derby.catalog.types.OldRoutineType
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ */
+package org.apache.derby.catalog.types;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.apache.derby.catalog.TypeDescriptor;
+import org.apache.derby.iapi.services.io.Formatable;
+import org.apache.derby.iapi.services.io.StoredFormatIds;
+import org.apache.derby.iapi.services.sanity.SanityManager;
+import org.apache.derby.iapi.types.TypeId;
+
+/**
+ * Class to simply read the old format written by
+ * DataTypeDescriptor prior to DERBY-2775 being addressed.
+ * The format was incorrect used
+ * in system catalogs for routine parameter and return
+ * types. The format contained repeated information.
+ * DERBY-2775 changed the code so that these catalog
+ * types were written as TypeDescriptor (which is what
+ * always had occurred for the types in SYSCOLUMNS).
+ */
+final class OldRoutineType implements Formatable {
+
+ private TypeDescriptor catalogType;
+
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+
+ in.readObject(); // Redundant TypeId object
+ catalogType = (TypeDescriptor) in.readObject();
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ if (SanityManager.DEBUG)
+ {
+ SanityManager.THROWASSERT("OldRoutineType must be read only!");
+ }
+ }
+
+ public int getTypeFormatId() {
+ return StoredFormatIds.DATA_TYPE_IMPL_DESCRIPTOR_V01_ID;
+ }
+
+ TypeDescriptor getCatalogType() {
+ return catalogType;
+ }
+}
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/OldRoutineType.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/RoutineAliasInfo.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/RoutineAliasInfo.java?rev=619995&r1=619994&r2=619995&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/RoutineAliasInfo.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/RoutineAliasInfo.java Fri Feb 8 12:37:59 2008
@@ -161,7 +161,6 @@
}
if (returnType != null) {
- SanityManager.ASSERT(!(returnType instanceof DataTypeDescriptor));
if (!((sqlAllowed >= RoutineAliasInfo.READS_SQL_DATA) && (sqlAllowed <= RoutineAliasInfo.NO_SQL))) {
SanityManager.THROWASSERT("Invalid sqlAllowed for FUNCTION " + methodName + " " + sqlAllowed);
}
@@ -244,7 +243,7 @@
parameterCount = in.readInt();
parameterStyle = in.readShort();
sqlAllowed = in.readShort();
- returnType = (TypeDescriptor) in.readObject();
+ returnType = getStoredType(in.readObject());
calledOnNullInput = in.readBoolean();
in.readInt(); // future expansion.
@@ -253,7 +252,10 @@
parameterTypes = new TypeDescriptor[parameterCount];
ArrayUtil.readArrayItems(in, parameterNames);
- ArrayUtil.readArrayItems(in, parameterTypes);
+ for (int p = 0; p < parameterTypes.length; p++)
+ {
+ parameterTypes[p] = getStoredType(in.readObject());
+ }
parameterModes = ArrayUtil.readIntArray(in);
} else {
@@ -262,6 +264,24 @@
parameterModes = null;
}
}
+
+ /**
+ * Old releases (10.3 and before) wrote out the runtime
+ * DataTypeDescriptor for routine parameter and return types.
+ * 10.4 onwards (DERBY-2775) always writes out the catalog
+ * type TypeDescriptor. Here we see what object was read from
+ * disk and if it was the old type, now mapped to OldRoutineType,
+ * we extract the catalog type and use that.
+ *
+ * @param onDiskType The object read that represents the type.
+ * @return
+ */
+ private static TypeDescriptor getStoredType(Object onDiskType)
+ {
+ if (onDiskType instanceof OldRoutineType)
+ return ((OldRoutineType) onDiskType).getCatalogType();
+ return (TypeDescriptor) onDiskType;
+ }
/**
* Write this object to a stream of stored objects.
Modified: db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/TypesImplInstanceGetter.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/TypesImplInstanceGetter.java?rev=619995&r1=619994&r2=619995&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/TypesImplInstanceGetter.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/TypesImplInstanceGetter.java Fri Feb 8 12:37:59 2008
@@ -52,6 +52,8 @@
return new BaseTypeIdImpl(fmtId);
case StoredFormatIds.DECIMAL_TYPE_ID_IMPL:
return new DecimalTypeIdImpl(false);
+ case StoredFormatIds.DATA_TYPE_SERVICES_IMPL_V01_ID:
+ return new OldRoutineType();
default:
return null;
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/RegisteredFormatIds.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/RegisteredFormatIds.java?rev=619995&r1=619994&r2=619995&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/RegisteredFormatIds.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/RegisteredFormatIds.java Fri Feb 8 12:37:59 2008
@@ -292,7 +292,7 @@
/* 237 */ null,
/* 238 */ null,
/* 239 */ null,
- /* 240 */ null,
+ /* 240 */ "org.apache.derby.iapi.types.DataTypeDescriptor",
/* 241 */ "org.apache.derby.impl.store.raw.data.InitPageOperation",
/* 242 */ "org.apache.derby.impl.store.raw.data.ContainerOperation",
/* 243 */ null,
@@ -311,7 +311,7 @@
/* 256 */ "org.apache.derby.iapi.types.DTSClassInfo", //InstanceGetter
/* 257 */ "org.apache.derby.iapi.types.DTSClassInfo", //InstanceGetter
/* 258 */ "org.apache.derby.iapi.types.DTSClassInfo", //InstanceGetter
- /* 259 */ "org.apache.derby.iapi.types.DataTypeDescriptor",
+ /* 259 */ "org.apache.derby.catalog.types.TypesImplInstanceGetter", // old catalog type format
/* 260 */ "org.apache.derby.iapi.types.DTSClassInfo", //InstanceGetter
/* 261 */ "org.apache.derby.impl.store.raw.xact.TransactionTableEntry",
/* 262 */ "org.apache.derby.impl.store.raw.xact.TransactionTable",
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/StoredFormatIds.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/StoredFormatIds.java?rev=619995&r1=619994&r2=619995&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/StoredFormatIds.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/StoredFormatIds.java Fri Feb 8 12:37:59 2008
@@ -275,7 +275,16 @@
(MIN_ID_2 + 14);
/**
- class com.ibm.db2j.protcol.Datatypes.Execution.DataTypeDescriptor
+ * In releases prior to 10.3 this format was produced by
+ * DataTypeDescriptor. The format was incorrect used
+ * in system catalogs for routine parameter and return
+ * types. The format contained repeated information.
+ * DERBY-2775 changed the code so that these catalog
+ * types were written as TypeDescriptor (which is what
+ * always had occurred for the types in SYSCOLUMNS).
+ * <P>
+ * This format now maps to OldRoutineType and is solely
+ * used to read old routine types.
*/
static public final int DATA_TYPE_SERVICES_IMPL_V01_ID =
(MIN_ID_2 + 259);
@@ -509,9 +518,13 @@
(MIN_ID_2 + 239);
/**
- class org.apache.derby.impl.sql.catalog.ListOfRowListsImpl
+ * DataTypeDescriptor (runtime type) new format from 10.4
+ * onwards that reflects the change in role from is a TypeDescriptor
+ * to has a TypeDescriptor. Fixes the format so that information
+ * is not duplicated.
+ * Old format number was DATA_TYPE_SERVICES_IMPL_V01_ID (259).
*/
- static public final int UNUSED_240 =
+ static public final int DATA_TYPE_DESCRIPTOR_V02_ID =
(MIN_ID_2 + 240);
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataTypeDescriptor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataTypeDescriptor.java?rev=619995&r1=619994&r2=619995&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataTypeDescriptor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataTypeDescriptor.java Fri Feb 8 12:37:59 2008
@@ -49,9 +49,11 @@
* <UL>
* <LI> Collation Derivation
* </UL>
+ * <P>
+ * A DataTypeDescriptor is immutable.
*/
-public final class DataTypeDescriptor implements TypeDescriptor, Formatable
+public final class DataTypeDescriptor implements Formatable
{
/********************************************************
**
@@ -67,7 +69,30 @@
**
********************************************************/
- public static final DataTypeDescriptor INTEGER = new DataTypeDescriptor(TypeId.INTEGER_ID, true);
+ /**
+ * Runtime INTEGER type that is nullable.
+ */
+ public static final DataTypeDescriptor INTEGER =
+ new DataTypeDescriptor(TypeId.INTEGER_ID, true);
+
+ /**
+ * Runtime INTEGER type that is not nullable.
+ */
+ public static final DataTypeDescriptor INTEGER_NOT_NULL =
+ INTEGER.getNullabilityType(false);
+
+ /**
+ * Runtime SMALLINT type that is nullable.
+ */
+ public static final DataTypeDescriptor SMALLINT =
+ new DataTypeDescriptor(TypeId.SMALLINT_ID, true);
+
+ /**
+ * Runtime INTEGER type that is not nullable.
+ */
+ public static final DataTypeDescriptor SMALLINT_NOT_NULL =
+ SMALLINT.getNullabilityType(false);
+
/*
** Static creators
@@ -78,6 +103,9 @@
* to the maximum possible.
*
* Collation type will be UCS_BASIC and derivation IMPLICIT.
+ *
+ * For well known types code may also use the pre-defined
+ * runtime types that are fields of this class, such as INTEGER.
*
* @param jdbcType The int type of the JDBC type for which to get
* a corresponding SQL DataTypeDescriptor
@@ -177,6 +205,12 @@
/**
* Get a descriptor that corresponds to a builtin JDBC type.
+ *
+ * For well known types code may also use the pre-defined
+ * runtime types that are fields of this class, such as INTEGER.
+ * E.g. using DataTypeDescriptor.INTEGER is preferred to
+ * DataTypeDescriptor.getBuiltInDataTypeDescriptor(Types.INTEGER, true)
+ * (both will return the same immutable object).
*
* @param jdbcType The int type of the JDBC type for which to get
* a corresponding SQL DataTypeDescriptor
@@ -192,6 +226,18 @@
boolean isNullable
)
{
+ // Re-use pre-defined types wherever possible.
+ switch (jdbcType)
+ {
+ case Types.INTEGER:
+ return isNullable ? INTEGER : INTEGER_NOT_NULL;
+ case Types.SMALLINT:
+ return isNullable ? SMALLINT : SMALLINT_NOT_NULL;
+ default:
+ break;
+ }
+
+
TypeId typeId = TypeId.getBuiltInTypeId(jdbcType);
if (typeId == null)
{
@@ -950,14 +996,6 @@
}
/**
- * @see TypeDescriptor#getMaximumWidthInBytes
- */
- public int getMaximumWidthInBytes()
- {
- return typeDescriptor.getMaximumWidthInBytes();
- }
-
- /**
* Gets the TypeId for the datatype.
*
* @return The TypeId for the datatype.
@@ -1015,7 +1053,7 @@
*/
public int getJDBCTypeId()
{
- return typeId.getJDBCTypeId();
+ return typeDescriptor.getJDBCTypeId();
}
/**
@@ -1715,13 +1753,11 @@
public void readExternal( ObjectInput in )
throws IOException, ClassNotFoundException
{
- /* NOTE: We only write out the generic type id.
- * typeId will be reset to be the generic type id
- * when we get read back in since the generic
- * one is all that is needed at execution time.
- */
- typeId = (TypeId) in.readObject();
typeDescriptor = (TypeDescriptorImpl) in.readObject();
+
+ typeId = TypeId.getBuiltInTypeId(this.getJDBCTypeId());
+
+ collationDerivation = in.readInt();
}
/**
@@ -1734,8 +1770,8 @@
public void writeExternal( ObjectOutput out )
throws IOException
{
- out.writeObject( typeId );
- out.writeObject( typeDescriptor );
+ out.writeObject(typeDescriptor);
+ out.writeInt(getCollationDerivation());
}
/**
@@ -1743,7 +1779,7 @@
*
* @return the formatID of this class
*/
- public int getTypeFormatId() { return StoredFormatIds.DATA_TYPE_SERVICES_IMPL_V01_ID; }
+ public int getTypeFormatId() { return StoredFormatIds.DATA_TYPE_DESCRIPTOR_V02_ID; }
/**
* Check to make sure that this type id is something a user can create
@@ -1822,20 +1858,6 @@
name = name + " (" + getCollationName() + ")";
}
return name;
- }
-
- // TEMP: DERBY-2917 - refactoring type system
- public String[] getRowColumnNames() {
- if (SanityManager.DEBUG)
- SanityManager.THROWASSERT("Row type must always be a catalog type");
- return null;
- }
-
- // TEMP: DERBY-2917 - refactoring type system
- public TypeDescriptor[] getRowTypes() {
- if (SanityManager.DEBUG)
- SanityManager.THROWASSERT("Row type must always be a catalog type");
- return null;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/TypeId.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/TypeId.java?rev=619995&r1=619994&r2=619995&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/TypeId.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/TypeId.java Fri Feb 8 12:37:59 2008
@@ -220,12 +220,22 @@
** Static runtime fields for typeIds
** These are put here because the system needs them init time.
*/
- public static final TypeId BOOLEAN_ID = new TypeId(StoredFormatIds.BOOLEAN_TYPE_ID,
- new BaseTypeIdImpl(StoredFormatIds.BOOLEAN_TYPE_ID_IMPL));
- public static final TypeId INTEGER_ID = new TypeId(StoredFormatIds.INT_TYPE_ID,
- new BaseTypeIdImpl(StoredFormatIds.INT_TYPE_ID_IMPL));
- public static final TypeId CHAR_ID = new TypeId(StoredFormatIds.CHAR_TYPE_ID,
- new BaseTypeIdImpl(StoredFormatIds.CHAR_TYPE_ID_IMPL));
+ public static final TypeId BOOLEAN_ID = new TypeId(
+ StoredFormatIds.BOOLEAN_TYPE_ID,
+ new BaseTypeIdImpl(StoredFormatIds.BOOLEAN_TYPE_ID_IMPL));
+
+ public static final TypeId SMALLINT_ID = new TypeId(
+ StoredFormatIds.SMALLINT_TYPE_ID,
+ new BaseTypeIdImpl(StoredFormatIds.SMALLINT_TYPE_ID_IMPL));
+
+ public static final TypeId INTEGER_ID = new TypeId(
+ StoredFormatIds.INT_TYPE_ID,
+ new BaseTypeIdImpl(StoredFormatIds.INT_TYPE_ID_IMPL));
+
+ public static final TypeId CHAR_ID = new TypeId(
+ StoredFormatIds.CHAR_TYPE_ID,
+ new BaseTypeIdImpl(StoredFormatIds.CHAR_TYPE_ID_IMPL));
+
/*
** Others are created on demand by the getBuiltInTypeId(int),
** if they are built-in (i.e.? Part of JDBC .Types),
@@ -233,7 +243,7 @@
*/
private static TypeId TINYINT_ID;
- private static TypeId SMALLINT_ID;
+
private static TypeId LONGINT_ID;
private static TypeId REAL_ID;
private static TypeId DOUBLE_ID;
@@ -288,11 +298,7 @@
break;
case Types.SMALLINT:
- ret = SMALLINT_ID;
- if (ret == null)
- ret = SMALLINT_ID = new TypeId(StoredFormatIds.SMALLINT_TYPE_ID,
- new BaseTypeIdImpl(StoredFormatIds.SMALLINT_TYPE_ID_IMPL));
- break;
+ return SMALLINT_ID;
case Types.INTEGER:
return INTEGER_ID;
@@ -1269,7 +1275,7 @@
*/
public String toParsableString(DataTypeDescriptor dts)
{
- return baseTypeId.toParsableString(dts);
+ return baseTypeId.toParsableString(dts.getCatalogType());
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RoutineDesignator.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RoutineDesignator.java?rev=619995&r1=619994&r2=619995&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RoutineDesignator.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RoutineDesignator.java Fri Feb 8 12:37:59 2008
@@ -32,7 +32,7 @@
/**
* This node represents a routine signature.
*/
-public class RoutineDesignator
+class RoutineDesignator
{
boolean isSpecific;
TableName name; // TableName is a misnomer it is really just a schema qualified name
@@ -45,7 +45,7 @@
List paramTypeList;
AliasDescriptor aliasDescriptor;
- public RoutineDesignator( boolean isSpecific,
+ RoutineDesignator( boolean isSpecific,
TableName name,
boolean isFunction,
List paramTypeList)
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj?rev=619995&r1=619994&r2=619995&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj Fri Feb 8 12:37:59 2008
@@ -12825,8 +12825,7 @@
RoutineDesignator routineDesignator() throws StandardException :
{
Token procOrFunction;
- RoutineDesignator routine = null;
- TableName name = null;
+ TableName name;
List paramTypeList = null;
}
{
@@ -12845,19 +12844,19 @@
/*
* <A NAME="parameterTypeList">parameterTypeList</A>
*/
-List parameterTypeList( ) throws StandardException :
+List/*<TypeDescriptor>*/ parameterTypeList( ) throws StandardException :
{
ArrayList list = new ArrayList();
- DataTypeDescriptor dtd;
+ TypeDescriptor type;
}
{
- [ dtd = dataTypeCommon()
+ [ type = catalogType()
{
- list.add( dtd);
+ list.add(type);
}
- ( <COMMA> dtd = dataTypeCommon()
+ ( <COMMA> type = catalogType()
{
- list.add( dtd);
+ list.add(type);
}
) * ]
{