else if (TypeMap.isTextType(column.getTypeCode())) { defaultValue = unescape(defaultValue, "'", "''"); }
	protected Column readColumn(DatabaseMetaDataWrapper metaData, Map values) throws SQLException	{		Column column       = super.readColumn(metaData, values);		String defaultValue = column.getDefaultValue();		// Sql Server tends to surround the returned default value with one or two sets of parentheses		if (defaultValue != null)		{			while (defaultValue.startsWith("(") && defaultValue.endsWith(")"))			{				defaultValue = defaultValue.substring(1, defaultValue.length() - 1);			}			if (column.getTypeCode() == Types.TIMESTAMP)			{				// Sql Server maintains the default values for DATE/TIME jdbc types, so we have to				// migrate the default value to TIMESTAMP				PatternMatcher matcher   = new Perl5Matcher();				Timestamp      timestamp = null;					if (matcher.matches(defaultValue, _isoDatePattern))				{					timestamp = new Timestamp(Date.valueOf(matcher.getMatch().group(1)).getTime());				}				else if (matcher.matches(defaultValue, _isoTimePattern))				{					timestamp = new Timestamp(Time.valueOf(matcher.getMatch().group(1)).getTime());				}				if (timestamp != null)				{					defaultValue = timestamp.toString();				}			}			else if (column.getTypeCode() == Types.DECIMAL)			{				// For some reason, Sql Server 2005 always returns DECIMAL default values with a dot				// even if the scale is 0, so we remove the dot				if ((column.getScale() == 0) && defaultValue.endsWith("."))				{					defaultValue = defaultValue.substring(0, defaultValue.length() - 1);				}			}			column.setDefaultValue(defaultValue);		}		if ((column.getTypeCode() == Types.DECIMAL) && (column.getSizeAsInt() == 19) && (column.getScale() == 0))		{			column.setTypeCode(Types.BIGINT);		}		return column;	}