⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 typeid.java

📁 derby database source code.good for you.
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
/*   Derby - Class org.apache.derby.iapi.types.TypeId   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.   Licensed 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.iapi.types;import org.apache.derby.iapi.services.io.Formatable;import org.apache.derby.iapi.services.io.StoredFormatIds;import org.apache.derby.iapi.services.monitor.Monitor;import org.apache.derby.iapi.services.loader.ClassFactory;import org.apache.derby.iapi.error.StandardException;import org.apache.derby.catalog.types.BaseTypeIdImpl;import org.apache.derby.catalog.types.DecimalTypeIdImpl;import org.apache.derby.catalog.types.UserDefinedTypeIdImpl;import org.apache.derby.iapi.reference.Limits;import java.io.ObjectOutput;import java.io.ObjectInput;import java.io.IOException;import org.apache.derby.iapi.services.sanity.SanityManager;import org.apache.derby.iapi.types.*;import org.apache.derby.iapi.types.*;import org.apache.derby.iapi.reference.JDBC20Translation;import org.apache.derby.iapi.reference.JDBC30Translation;import java.sql.Types;/** * The TypeId interface provides methods to get information about datatype ids.    <P> * The equals(Object) method can be used to determine if two typeIds are for the same type, * which defines type id equality. * * @author Jeff Lichtman */public final class TypeId implements Formatable{        /**         * Various fixed numbers related to datatypes.         */        public static final int LONGINT_PRECISION                       = 19;        public static final int LONGINT_SCALE                           = 0;        public static final int LONGINT_MAXWIDTH                        = 8;        public static final int INT_PRECISION                   = 10;        public static final int INT_SCALE                               = 0;        public static final int INT_MAXWIDTH                    = 4;        public static final int SMALLINT_PRECISION                      = 5;        public static final int SMALLINT_SCALE                          = 0;        public static final int SMALLINT_MAXWIDTH                       = 2;        public static final int TINYINT_PRECISION                       = 3;        public static final int TINYINT_SCALE                           = 0;        public static final int TINYINT_MAXWIDTH                        = 1;	// precision in number of bits         public static final int DOUBLE_PRECISION                        = 52;	// the ResultSetMetaData needs to have the precision for numeric data	// in decimal digits, rather than number of bits, so need a separate constant.        public static final int DOUBLE_PRECISION_IN_DIGITS              = 15;        public static final int DOUBLE_SCALE                            = 0;        public static final int DOUBLE_MAXWIDTH                         = 8;	// precision in number of bits         public static final int REAL_PRECISION                  = 23;	// the ResultSetMetaData needs to have the precision for numeric data	// in decimal digits, rather than number of bits, so need a separate constant.        public static final int REAL_PRECISION_IN_DIGITS        = 7;        public static final int REAL_SCALE                              = 0;        public static final int REAL_MAXWIDTH                   = 4;        public static final int DECIMAL_PRECISION                       = Limits.DB2_MAX_DECIMAL_PRECISION_SCALE;        public static final int DECIMAL_SCALE                           = Limits.DB2_MAX_DECIMAL_PRECISION_SCALE;        public static final int DECIMAL_MAXWIDTH                        = Limits.DB2_MAX_DECIMAL_PRECISION_SCALE;        public static final int BOOLEAN_MAXWIDTH                        = 1;        public static final int CHAR_MAXWIDTH           = Limits.DB2_CHAR_MAXWIDTH;        public static final int VARCHAR_MAXWIDTH        = Limits.DB2_VARCHAR_MAXWIDTH;        public static final int LONGVARCHAR_MAXWIDTH = Limits.DB2_LONGVARCHAR_MAXWIDTH;        public static final int NATIONAL_CHAR_MAXWIDTH  = Integer.MAX_VALUE;        public static final int NATIONAL_VARCHAR_MAXWIDTH       = Integer.MAX_VALUE;        public static final int NATIONAL_LONGVARCHAR_MAXWIDTH = Limits.DB2_LONGVARCHAR_MAXWIDTH;        public static final int BIT_MAXWIDTH            = Limits.DB2_CHAR_MAXWIDTH;        public static final int VARBIT_MAXWIDTH         = Limits.DB2_VARCHAR_MAXWIDTH;        public static final int LONGVARBIT_MAXWIDTH = Limits.DB2_LONGVARCHAR_MAXWIDTH;        // not supposed to be limited! 4096G should be ok(?), if Cloudscape can handle...        public static final int BLOB_MAXWIDTH = Integer.MAX_VALUE; // to change long        public static final int CLOB_MAXWIDTH = Integer.MAX_VALUE; // to change long        public static final int NCLOB_MAXWIDTH = Integer.MAX_VALUE; // to change long        public static final int XML_MAXWIDTH = Integer.MAX_VALUE;        // Max width for datetime values is the length of the        // string returned from a call to "toString()" on the        // java.sql.Date, java.sql.Time, and java.sql.Timestamp        // classes (the result of toString() on those classes        // is defined by the JDBC API).  This value is also        // used as the "precision" for those types.        public static final int DATE_MAXWIDTH           = 10;	// yyyy-mm-dd        public static final int TIME_MAXWIDTH           = 8;	// hh:mm:ss        public static final int TIMESTAMP_MAXWIDTH      = 26;	// yyyy-mm-dd hh:mm:ss.ffffff        // Scale DOES exist for time values.  For a TIMESTAMP value,        // it's 6 ('ffffff'); for a TIME value, it's 0 (because there        // are no fractional seconds).  Note that date values do        // not have a scale.        public static final int TIME_SCALE           = 0;        public static final int TIMESTAMP_SCALE      = 6;        /* These define all the type names for SQL92 and JDBC          * NOTE: boolean is SQL3         */          //public static final String      BIT_NAME = "BIT";          //public static final String      VARBIT_NAME = "BIT VARYING";          //public static final String      LONGVARBIT_NAME = "LONG BIT VARYING";        public static final String      BIT_NAME = "CHAR () FOR BIT DATA";        public static final String      VARBIT_NAME = "VARCHAR () FOR BIT DATA";        public static final String      LONGVARBIT_NAME = "LONG VARCHAR FOR BIT DATA";        public static final String      TINYINT_NAME = "TINYINT";        public static final String      SMALLINT_NAME = "SMALLINT";        public static final String      INTEGER_NAME = "INTEGER";        public static final String      LONGINT_NAME = "BIGINT";        public static final String      FLOAT_NAME = "FLOAT";        public static final String      REAL_NAME = "REAL";        public static final String      DOUBLE_NAME = "DOUBLE";        public static final String      NUMERIC_NAME = "NUMERIC";        public static final String      DECIMAL_NAME = "DECIMAL";        public static final String      CHAR_NAME = "CHAR";        public static final String      VARCHAR_NAME = "VARCHAR";        public static final String      LONGVARCHAR_NAME = "LONG VARCHAR";        public static final String      DATE_NAME = "DATE";        public static final String      TIME_NAME = "TIME";        public static final String      TIMESTAMP_NAME = "TIMESTAMP";        public static final String      BINARY_NAME = "BINARY";        public static final String      VARBINARY_NAME = "VARBINARY";        public static final String      LONGVARBINARY_NAME = "LONGVARBINARY";        public static final String      BOOLEAN_NAME = "BOOLEAN";        public static final String      REF_NAME = "REF";        public static final String      NATIONAL_CHAR_NAME = "NATIONAL CHAR";        public static final String      NATIONAL_VARCHAR_NAME = "NATIONAL CHAR VARYING";        public static final String      NATIONAL_LONGVARCHAR_NAME = "LONG NVARCHAR";        public static final String      BLOB_NAME = "BLOB";        public static final String      CLOB_NAME = "CLOB";        public static final String      NCLOB_NAME = "NCLOB";        // Following use of "XML" is per SQL/XML (2003) spec,        // section "10.2 Type name determination".        public static final String      XML_NAME = "XML";                /**         * The following constants define the type precedence hierarchy.         */        public static final int USER_PRECEDENCE  = 1000;        public static final int XML_PRECEDENCE       = 180;        public static final int BLOB_PRECEDENCE = 170;        public static final int LONGVARBIT_PRECEDENCE = 160;        public static final int VARBIT_PRECEDENCE        = 150;        public static final int BIT_PRECEDENCE           = 140;        public static final int BOOLEAN_PRECEDENCE       = 130;        public static final int TIME_PRECEDENCE  = 120;        public static final int TIMESTAMP_PRECEDENCE = 110;        public static final int DATE_PRECEDENCE  = 100;        public static final int DOUBLE_PRECEDENCE        = 90;        public static final int REAL_PRECEDENCE  = 80;        public static final int DECIMAL_PRECEDENCE       = 70;        public static final int NUMERIC_PRECEDENCE       = 69;        public static final int LONGINT_PRECEDENCE       = 60;        public static final int INT_PRECEDENCE           = 50;        public static final int SMALLINT_PRECEDENCE = 40;        public static final int TINYINT_PRECEDENCE       = 30;        public static final int REF_PRECEDENCE           = 25;        public static final int NATIONAL_LONGVARCHAR_PRECEDENCE = 18;        public static final int NATIONAL_VARCHAR_PRECEDENCE  = 17;        public static final int NATIONAL_CHAR_PRECEDENCE         = 16;        public static final int CLOB_PRECEDENCE = 14;        public static final int NCLOB_PRECEDENCE = 13;         public static final int LONGVARCHAR_PRECEDENCE = 12;        public static final int VARCHAR_PRECEDENCE  = 10;        public static final int CHAR_PRECEDENCE  = 0;        /*        ** 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));        /*        ** Others are created on demand by the getBuiltInTypeId(int),        ** if they are built-in (i.e.? Part of JDBC .Types),        ** or by getBuiltInTypeId(string) if they are NATIONAL types or REF_NAME type.        */        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;        private static TypeId                   DECIMAL_ID;        private static TypeId                   NUMERIC_ID;        private static TypeId                   VARCHAR_ID;        private static TypeId                   NATIONAL_CHAR_ID;        private static TypeId                   NATIONAL_LONGVARCHAR_ID;        private static TypeId                   NATIONAL_VARCHAR_ID;        private static TypeId                   DATE_ID;        private static TypeId                   TIME_ID;        private static TypeId                   TIMESTAMP_ID;        private static TypeId                   BIT_ID;        private static TypeId                   VARBIT_ID;        private static TypeId                   REF_ID;        private static TypeId                   LONGVARCHAR_ID;        private static TypeId                   LONGVARBIT_ID;        private static TypeId                   BLOB_ID;        private static TypeId                   CLOB_ID;        private static TypeId                   NCLOB_ID;        private static TypeId                   XML_ID;        /**         * Implementation of DECIMAL datatype for generating holders through getNull.         * Set by the booted DataValueFactory implementation.         */        static DataValueDescriptor		decimalImplementation;        /*        ** Static methods to obtain TypeIds        */        /**         * Get a TypeId of the given JDBC type.  This factory method is         * intended to be used for built-in types.  For user-defined types,         * we will need a factory method that takes a Java type name.         *         * @param JDBCTypeId    The JDBC Id of the type, as listed in         *                      java.sql.Types         *         * @return      The appropriate TypeId, or null if there is no such         *                      TypeId.         */        public static TypeId getBuiltInTypeId(int JDBCTypeId)        {                TypeId ret = null;                switch (JDBCTypeId)                {                  case Types.TINYINT:                          ret = TINYINT_ID;                          if (ret == null)                                  ret = TINYINT_ID = new TypeId(StoredFormatIds.TINYINT_TYPE_ID,                                                                        new BaseTypeIdImpl(StoredFormatIds.TINYINT_TYPE_ID_IMPL));                          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;                  case Types.INTEGER:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -