in java/org.apache.derby.client/org/apache/derby/client/am/ColumnMetaData.java [528:618]
public String getColumnTypeName(int column) throws SQLException {
try
{
checkForClosedStatement();
checkForValidColumnIndex(column);
int jdbcType = types_[column - 1];
// So these all come back zero for downlevel servers in PROTOCOL.
// John is going to write some code to construct the sqlType_ array
// based on the protocol types from the query descriptor.
int sqlType = sqlType_[column - 1];
switch (sqlType) {
case DRDAConstants.DB2_SQLTYPE_BOOLEAN:
case DRDAConstants.DB2_SQLTYPE_NBOOLEAN:
return "BOOLEAN";
case DRDAConstants.DB2_SQLTYPE_DATE:
case DRDAConstants.DB2_SQLTYPE_NDATE:
return "DATE";
case DRDAConstants.DB2_SQLTYPE_TIME:
case DRDAConstants.DB2_SQLTYPE_NTIME:
return "TIME";
case DRDAConstants.DB2_SQLTYPE_TIMESTAMP:
case DRDAConstants.DB2_SQLTYPE_NTIMESTAMP:
return "TIMESTAMP";
case DRDAConstants.DB2_SQLTYPE_BLOB:
case DRDAConstants.DB2_SQLTYPE_NBLOB:
return "BLOB";
case DRDAConstants.DB2_SQLTYPE_CLOB:
case DRDAConstants.DB2_SQLTYPE_NCLOB:
return "CLOB";
case DRDAConstants.DB2_SQLTYPE_VARCHAR:
case DRDAConstants.DB2_SQLTYPE_NVARCHAR:
if (jdbcType == ClientTypes.VARBINARY) {
return "VARCHAR FOR BIT DATA";
} else {
return "VARCHAR";
}
case DRDAConstants.DB2_SQLTYPE_CHAR:
case DRDAConstants.DB2_SQLTYPE_NCHAR:
if (jdbcType == ClientTypes.BINARY) {
return "CHAR FOR BIT DATA";
} else {
return "CHAR";
}
case DRDAConstants.DB2_SQLTYPE_LONG:
case DRDAConstants.DB2_SQLTYPE_NLONG:
if (jdbcType == ClientTypes.LONGVARBINARY) {
return "LONG VARCHAR FOR BIT DATA";
} else {
return "LONG VARCHAR";
}
case DRDAConstants.DB2_SQLTYPE_CSTR:
case DRDAConstants.DB2_SQLTYPE_NCSTR:
return "SBCS";
case DRDAConstants.DB2_SQLTYPE_FLOAT:
case DRDAConstants.DB2_SQLTYPE_NFLOAT:
if (jdbcType == ClientTypes.DOUBLE) {
return "DOUBLE";
}
if (jdbcType == ClientTypes.REAL) {
return "REAL";
}
case DRDAConstants.DB2_SQLTYPE_DECIMAL:
case DRDAConstants.DB2_SQLTYPE_NDECIMAL:
return "DECIMAL";
case DRDAConstants.DB2_SQLTYPE_BIGINT:
case DRDAConstants.DB2_SQLTYPE_NBIGINT:
return "BIGINT";
case DRDAConstants.DB2_SQLTYPE_INTEGER:
case DRDAConstants.DB2_SQLTYPE_NINTEGER:
return "INTEGER";
case DRDAConstants.DB2_SQLTYPE_SMALL:
case DRDAConstants.DB2_SQLTYPE_NSMALL:
return "SMALLINT";
case DRDAConstants.DB2_SQLTYPE_NUMERIC:
case DRDAConstants.DB2_SQLTYPE_NNUMERIC:
return "NUMERIC";
case DRDAConstants.DB2_SQLTYPE_FAKE_UDT:
case DRDAConstants.DB2_SQLTYPE_FAKE_NUDT:
return sqlUDTname_[ column - 1 ];
default:
throw new SqlException(logWriter_,
new ClientMessageId (SQLState.UNSUPPORTED_TYPE));
}
}
catch ( SqlException e )
{
throw e.getSQLException();
}
}