else if (TypeMap.isTextType(column.getTypeCode())) { column.setDefaultValue(unescape(column.getDefaultValue(), "'", "''")); }
    protected Column readColumn(DatabaseMetaDataWrapper metaData, Map values) throws SQLException    {		Column column = super.readColumn(metaData, values);		if (column.getDefaultValue() != null)		{			// Oracle pads the default value with spaces			column.setDefaultValue(column.getDefaultValue().trim());		}		if (column.getTypeCode() == Types.DECIMAL)		{			// We're back-mapping the NUMBER columns returned by Oracle			// Note that the JDBC driver returns DECIMAL for these NUMBER columns			switch (column.getSizeAsInt())			{				case 1:					if (column.getScale() == 0)					{						column.setTypeCode(Types.BIT);					}					break;				case 3:					if (column.getScale() == 0)					{						column.setTypeCode(Types.TINYINT);					}					break;				case 5:					if (column.getScale() == 0)					{						column.setTypeCode(Types.SMALLINT);					}					break;				case 18:					column.setTypeCode(Types.REAL);					break;				case 22:					if (column.getScale() == 0)					{						column.setTypeCode(Types.INTEGER);					}					break;				case 38:					if (column.getScale() == 0)					{						column.setTypeCode(Types.BIGINT);					}					else					{						column.setTypeCode(Types.DOUBLE);					}					break;			}		}		else if (column.getTypeCode() == Types.FLOAT)		{			// Same for REAL, FLOAT, DOUBLE PRECISION, which all back-map to FLOAT but with			// different sizes (63 for REAL, 126 for FLOAT/DOUBLE PRECISION)			switch (column.getSizeAsInt())			{				case 63:					column.setTypeCode(Types.REAL);					break;				case 126:					column.setTypeCode(Types.DOUBLE);					break;			}		}		else if ((column.getTypeCode() == Types.DATE) || (column.getTypeCode() == Types.TIMESTAMP))		{			// Oracle has only one DATE/TIME type, so we can't know which it is and thus map			// it back to TIMESTAMP			column.setTypeCode(Types.TIMESTAMP);			// we also reverse the ISO-format adaptation, and adjust the default value to timestamp			if (column.getDefaultValue() != null)			{				PatternMatcher matcher   = new Perl5Matcher();				Timestamp      timestamp = null;					if (matcher.matches(column.getDefaultValue(), _oracleIsoTimestampPattern))				{					String timestampVal = matcher.getMatch().group(1);					timestamp = Timestamp.valueOf(timestampVal);				}				else if (matcher.matches(column.getDefaultValue(), _oracleIsoDatePattern))				{					String dateVal = matcher.getMatch().group(1);					timestamp = new Timestamp(Date.valueOf(dateVal).getTime());				}				else if (matcher.matches(column.getDefaultValue(), _oracleIsoTimePattern))				{					String timeVal = matcher.getMatch().group(1);					timestamp = new Timestamp(Time.valueOf(timeVal).getTime());				}				if (timestamp != null)				{					column.setDefaultValue(timestamp.toString());				}			}		}		return column;	}