Return-Path: Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: (qmail 91634 invoked from network); 10 Jul 2007 18:31:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 10 Jul 2007 18:31:11 -0000 Received: (qmail 55551 invoked by uid 500); 10 Jul 2007 18:31:13 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 55481 invoked by uid 500); 10 Jul 2007 18:31:13 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 55470 invoked by uid 99); 10 Jul 2007 18:31:13 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 10 Jul 2007 11:31:13 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 10 Jul 2007 11:31:09 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 7194F1A981A; Tue, 10 Jul 2007 11:30:49 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r555028 - in /db/derby/code/trunk/java/engine/org/apache/derby: catalog/ catalog/types/ iapi/types/ impl/sql/catalog/ Date: Tue, 10 Jul 2007 18:30:49 -0000 To: derby-commits@db.apache.org From: djd@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070710183049.7194F1A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: djd Date: Tue Jul 10 11:30:47 2007 New Revision: 555028 URL: http://svn.apache.org/viewvc?view=rev&rev=555028 Log: DERBY-2775 Add some comments to the main type classes to indicate their roles: TypeId Information about the type without specific attributes TypeDescriptor Catalog type descriptor DataTypeDescriptor Runtime type descriptor Modified: db/derby/code/trunk/java/engine/org/apache/derby/catalog/TypeDescriptor.java db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/BaseTypeIdImpl.java db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/DecimalTypeIdImpl.java db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/TypesImplInstanceGetter.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/catalog/DataDictionaryImpl.java db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLUMNSRowFactory.java 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?view=diff&rev=555028&r1=555027&r2=555028 ============================================================================== --- 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 Tue Jul 10 11:30:47 2007 @@ -24,12 +24,9 @@ import org.apache.derby.iapi.types.StringDataValue; /** - * - * An interface for describing types in Derby systems. - * - * - *

The values in system catalog DATATYPE columns are of type - * TypeDescriptor. + * TypeDescriptor represents a type in a system catalog, a + * persistent type. Examples are columns in tables and parameters + * for routines. A TypeDescriptor is immutable. */ public interface TypeDescriptor Modified: db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/BaseTypeIdImpl.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/BaseTypeIdImpl.java?view=diff&rev=555028&r1=555027&r2=555028 ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/BaseTypeIdImpl.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/BaseTypeIdImpl.java Tue Jul 10 11:30:47 2007 @@ -69,11 +69,16 @@ ** getTypeFormatId() method. ** ********************************************************/ + + private int formatId; String SQLTypeName; - int JDBCTypeId; - int formatId; - int wrapperTypeFormatId; + /** + * JDBC type - derived from the format identifier. + */ + transient int JDBCTypeId; + + private int wrapperTypeFormatId; /** * niladic constructor. Needed for Formatable interface to work. @@ -99,7 +104,7 @@ * @param SQLTypeName The SQL name of the type */ - protected BaseTypeIdImpl(String SQLTypeName) + BaseTypeIdImpl(String SQLTypeName) { this.SQLTypeName = SQLTypeName; } Modified: db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/DecimalTypeIdImpl.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/DecimalTypeIdImpl.java?view=diff&rev=555028&r1=555027&r2=555028 ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/DecimalTypeIdImpl.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/DecimalTypeIdImpl.java Tue Jul 10 11:30:47 2007 @@ -34,9 +34,11 @@ the readExternal needs to know the formatId atleast for decimal types to read the extra information. */ - public DecimalTypeIdImpl() + public DecimalTypeIdImpl(boolean isNumeric) { super(StoredFormatIds.DECIMAL_TYPE_ID_IMPL); + if (isNumeric) + setNumericType(); } /** @@ -71,12 +73,12 @@ public void writeExternal( ObjectOutput out ) throws IOException { - out.writeBoolean(JDBCTypeId == Types.NUMERIC); + out.writeBoolean(getJDBCTypeId() == Types.NUMERIC); super.writeExternal(out); } - public void setNumericType() + private void setNumericType() { SQLTypeName = "NUMERIC"; JDBCTypeId = Types.NUMERIC; 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?view=diff&rev=555028&r1=555027&r2=555028 ============================================================================== --- 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 Tue Jul 10 11:30:47 2007 @@ -55,7 +55,7 @@ case StoredFormatIds.XML_TYPE_ID_IMPL: return new BaseTypeIdImpl(fmtId); case StoredFormatIds.DECIMAL_TYPE_ID_IMPL: - return new DecimalTypeIdImpl(); + return new DecimalTypeIdImpl(false); default: return null; } 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?view=diff&rev=555028&r1=555027&r2=555028 ============================================================================== --- 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 Tue Jul 10 11:30:47 2007 @@ -39,10 +39,7 @@ import org.apache.derby.iapi.sql.conn.ConnectionUtil; /** - * This is an implementation of DataTypeDescriptor from the generic language - * datatype module interface. - * - * @version 1.0 + * DataTypeDescriptor describes a runtime SQL type. */ public final class DataTypeDescriptor implements TypeDescriptor, Formatable @@ -60,12 +57,14 @@ ** method. ** ********************************************************/ + + public static final DataTypeDescriptor INTEGER = new DataTypeDescriptor(TypeId.INTEGER_ID, true); /* ** Static creators */ /** - * Get a descriptor that corresponds to a builtin JDBC type. + * Get a descriptor that corresponds to a nullable builtin JDBC type. * * @param jdbcType The int type of the JDBC type for which to get * a corresponding SQL DataTypeDescriptor @@ -1144,7 +1143,7 @@ * Get the simplified type descriptor that is intended to be stored * in the system tables. */ - public TypeDescriptorImpl getCatalogType() + public TypeDescriptor getCatalogType() { return typeDescriptor; } 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?view=diff&rev=555028&r1=555027&r2=555028 ============================================================================== --- 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 Tue Jul 10 11:30:47 2007 @@ -48,13 +48,17 @@ import java.sql.Types; /** - * The TypeId interface provides methods to get information about datatype ids. - + * TypeId describes the static information about a SQL type + * independent of any specific attributes of the type such + * as length. So the TypeId for CHARACTER describes the + * fundamental information about CHARACTER. A specific + * type (e.g. CHARACTER(10)) is described by a DataTypeDescriptor.

* The equals(Object) method can be used to determine if two typeIds are for the same type, * which defines type id equality. - * + + @see DataTypeDescriptor */ public final class TypeId implements Formatable @@ -330,14 +334,13 @@ ret = DECIMAL_ID; if (ret == null) ret = DECIMAL_ID = new TypeId(StoredFormatIds.DECIMAL_TYPE_ID, - new DecimalTypeIdImpl()); + new DecimalTypeIdImpl(false)); break; case Types.NUMERIC: ret = NUMERIC_ID; if (ret == null) { - DecimalTypeIdImpl numericTypeIdImpl = new DecimalTypeIdImpl(); - numericTypeIdImpl.setNumericType(); + DecimalTypeIdImpl numericTypeIdImpl = new DecimalTypeIdImpl(true); ret = NUMERIC_ID = new TypeId(StoredFormatIds.DECIMAL_TYPE_ID, numericTypeIdImpl); } break; Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java?view=diff&rev=555028&r1=555027&r2=555028 ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java Tue Jul 10 11:30:47 2007 @@ -8740,6 +8740,9 @@ TransactionController tc) throws StandardException { + TypeDescriptor integerType = DataTypeDescriptor.INTEGER.getCatalogType(); + TypeDescriptor varchar128Type = + DataTypeDescriptor.getBuiltInDataTypeDescriptor(Types.VARCHAR, 128).getCatalogType(); /* ** SYSCS_UTIL routines. */ @@ -8760,8 +8763,7 @@ // procedure argument types TypeDescriptor[] arg_types = { - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), + varchar128Type, DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.VARCHAR, Limits.DB2_VARCHAR_MAXWIDTH) }; @@ -8786,10 +8788,8 @@ // procedure argument types TypeDescriptor[] arg_types = { - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), + varchar128Type, + varchar128Type, DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.SMALLINT) @@ -8989,8 +8989,7 @@ // procedure argument types TypeDescriptor[] arg_types = { - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128) + varchar128Type }; createSystemProcedureOrFunction( @@ -9013,10 +9012,8 @@ // procedure argument types TypeDescriptor[] arg_types = { - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128) + varchar128Type, + varchar128Type }; createSystemProcedureOrFunction( @@ -9073,10 +9070,8 @@ TypeDescriptor[] arg_types = { DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.VARCHAR, 256), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.INTEGER) + varchar128Type, + integerType }; createSystemProcedureOrFunction( @@ -9098,8 +9093,7 @@ TypeDescriptor[] arg_types = { DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.VARCHAR, 256), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128) + varchar128Type }; createSystemProcedureOrFunction( @@ -9119,10 +9113,8 @@ String[] arg_names = {"JAR", "UNDEPLOY"}; TypeDescriptor[] arg_types = { - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.INTEGER) + varchar128Type, + integerType }; createSystemProcedureOrFunction( @@ -9152,18 +9144,15 @@ // procedure argument types TypeDescriptor[] arg_types = { - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), + varchar128Type, + varchar128Type, DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.VARCHAR, 32672), DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.CHAR, 1), DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.CHAR, 1), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128) + varchar128Type }; createSystemProcedureOrFunction( @@ -9200,8 +9189,7 @@ Types.CHAR, 1), DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.CHAR, 1), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128) + varchar128Type }; createSystemProcedureOrFunction( @@ -9232,18 +9220,15 @@ // procedure argument types TypeDescriptor[] arg_types = { - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), + varchar128Type, + varchar128Type, DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.VARCHAR, 32672), DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.CHAR, 1), DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.CHAR, 1), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), + varchar128Type, DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.SMALLINT), }; @@ -9278,10 +9263,8 @@ // procedure argument types TypeDescriptor[] arg_types = { - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), + varchar128Type, + varchar128Type, DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.VARCHAR, 32672), DataTypeDescriptor.getBuiltInDataTypeDescriptor( @@ -9292,8 +9275,7 @@ Types.CHAR, 1), DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.CHAR, 1), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), + varchar128Type, DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.SMALLINT), }; @@ -9326,10 +9308,8 @@ // procedure argument types TypeDescriptor[] arg_types = { - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), - DataTypeDescriptor.getBuiltInDataTypeDescriptor( - Types.VARCHAR, 128), + varchar128Type, + varchar128Type, DataTypeDescriptor.getBuiltInDataTypeDescriptor( Types.VARCHAR, 32672), DataTypeDescriptor.getBuiltInDataTypeDescriptor( Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLUMNSRowFactory.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLUMNSRowFactory.java?view=diff&rev=555028&r1=555027&r2=555028 ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLUMNSRowFactory.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLUMNSRowFactory.java Tue Jul 10 11:30:47 2007 @@ -21,61 +21,38 @@ package org.apache.derby.impl.sql.catalog; -import org.apache.derby.iapi.reference.Property; - -import org.apache.derby.iapi.types.DataTypeDescriptor; -import org.apache.derby.iapi.types.TypeId; -import org.apache.derby.iapi.types.DataValueDescriptor; - -import org.apache.derby.iapi.store.raw.RawStoreFactory; +import java.util.Properties; -import org.apache.derby.iapi.types.DataValueFactory; -import org.apache.derby.iapi.sql.dictionary.SystemColumn; import org.apache.derby.catalog.TypeDescriptor; +import org.apache.derby.catalog.UUID; import org.apache.derby.catalog.types.BaseTypeIdImpl; - -import org.apache.derby.iapi.types.DataValueDescriptor; - -import org.apache.derby.iapi.types.SQLVarchar; -import org.apache.derby.iapi.types.TypeId; -import org.apache.derby.iapi.types.DataTypeDescriptor; -import org.apache.derby.iapi.types.DataValueFactory; -import org.apache.derby.iapi.types.RowLocation; - +import org.apache.derby.catalog.types.DefaultInfoImpl; +import org.apache.derby.catalog.types.TypeDescriptorImpl; +import org.apache.derby.iapi.error.StandardException; +import org.apache.derby.iapi.reference.Property; +import org.apache.derby.iapi.services.monitor.Monitor; +import org.apache.derby.iapi.services.sanity.SanityManager; +import org.apache.derby.iapi.services.uuid.UUIDFactory; import org.apache.derby.iapi.sql.dictionary.CatalogRowFactory; import org.apache.derby.iapi.sql.dictionary.ColumnDescriptor; import org.apache.derby.iapi.sql.dictionary.DataDescriptorGenerator; import org.apache.derby.iapi.sql.dictionary.DataDictionary; -import org.apache.derby.iapi.sql.dictionary.TableDescriptor; +import org.apache.derby.iapi.sql.dictionary.SystemColumn; import org.apache.derby.iapi.sql.dictionary.TupleDescriptor; -import org.apache.derby.iapi.sql.dictionary.SchemaDescriptor; import org.apache.derby.iapi.sql.dictionary.UniqueTupleDescriptor; - -import org.apache.derby.iapi.sql.execute.ExecutionContext; -import org.apache.derby.iapi.sql.execute.ExecutionFactory; -import org.apache.derby.iapi.sql.execute.ExecIndexRow; import org.apache.derby.iapi.sql.execute.ExecRow; - -import org.apache.derby.iapi.error.StandardException; - -import org.apache.derby.iapi.services.sanity.SanityManager; - -import org.apache.derby.iapi.services.monitor.Monitor; -import org.apache.derby.catalog.types.TypeDescriptorImpl; -import org.apache.derby.catalog.DefaultInfo; -import org.apache.derby.iapi.services.uuid.UUIDFactory; -import org.apache.derby.catalog.UUID; - +import org.apache.derby.iapi.sql.execute.ExecutionFactory; +import org.apache.derby.iapi.store.raw.RawStoreFactory; +import org.apache.derby.iapi.types.DataTypeDescriptor; +import org.apache.derby.iapi.types.DataValueDescriptor; +import org.apache.derby.iapi.types.DataValueFactory; +import org.apache.derby.iapi.types.SQLChar; +import org.apache.derby.iapi.types.SQLInteger; +import org.apache.derby.iapi.types.SQLLongint; +import org.apache.derby.iapi.types.SQLVarchar; +import org.apache.derby.iapi.types.TypeId; import org.apache.derby.impl.sql.compile.ColumnDefinitionNode; -import org.apache.derby.catalog.types.DefaultInfoImpl; - -import org.apache.derby.iapi.types.*; - -import java.io.Serializable; - -import java.util.Properties; - /** * Factory for creating a SYSCOLUMNS row. * @@ -182,13 +159,12 @@ throws StandardException { ExecRow row; - DataValueDescriptor col; String colName = null; String defaultID = null; String tabID = null; Integer colID = null; - TypeDescriptorImpl typeDesc = null; + TypeDescriptor typeDesc = null; Object defaultSerializable = null; long autoincStart = 0; long autoincInc = 0; @@ -354,8 +330,6 @@ String defaultID; DefaultInfoImpl defaultInfo = null; ColumnDescriptor colDesc; - BaseTypeIdImpl typeId; - TypeId wrapperTypeId; DataValueDescriptor defaultValue = null; UUID defaultUUID = null; UUID uuid = null; @@ -430,16 +404,13 @@ */ TypeDescriptorImpl typeDescriptor = (TypeDescriptorImpl) row.getColumn(SYSCOLUMNS_COLUMNDATATYPE). getObject(); - typeId = typeDescriptor.getTypeId(); + BaseTypeIdImpl typeId = typeDescriptor.getTypeId(); /* ** The BaseTypeIdImpl tells what type of TypeId it is supposed to ** be wrapped in. */ - wrapperTypeId = - (TypeId) Monitor.newInstanceFromIdentifier(typeId.wrapperTypeFormatId()); - /* Wrap the BaseTypeIdImpl in a full type id */ - wrapperTypeId.setNestedTypeId(typeId); + TypeId wrapperTypeId = new TypeId(typeId.wrapperTypeFormatId(), typeId); /* Wrap the TypeDescriptorImpl in a full DataTypeDescriptor */ DataTypeDescriptor dataTypeServices = new DataTypeDescriptor(typeDescriptor,