Skip to content

Commit

Permalink
0002200: Microsoft JDBC maps nvarchar(max) and varchar(max) to a varc…
Browse files Browse the repository at this point in the history
…har with a size. Should be mapped to a longvarchar or longnvarchar.
  • Loading branch information
chenson42 committed Feb 16, 2015
1 parent 27bf9fa commit 7e801f4
Showing 1 changed file with 11 additions and 0 deletions.
Expand Up @@ -19,6 +19,8 @@
* under the License.
*/

import static org.apache.commons.lang.StringUtils.isNotBlank;

import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
Expand Down Expand Up @@ -138,12 +140,21 @@ private boolean existsPKWithName(DatabaseMetaDataWrapper metaData, Table table,

protected Integer mapUnknownJdbcTypeForColumn(Map<String, Object> values) {
String typeName = (String) values.get("TYPE_NAME");
int size = -1;
String columnSize = (String) values.get("COLUMN_SIZE");
if (isNotBlank(columnSize)) {
size = Integer.parseInt(columnSize);
}
if (typeName != null && typeName.toLowerCase().startsWith("text")) {
return Types.LONGVARCHAR;
} else if (typeName != null && typeName.toLowerCase().startsWith("ntext")) {
return Types.CLOB;
} else if (typeName != null && typeName.toUpperCase().contains(TypeMap.GEOMETRY)) {
return Types.VARCHAR;
} else if (typeName != null && typeName.toUpperCase().contains("VARCHAR") && size > 8000) {
return Types.LONGVARCHAR;
} else if (typeName != null && typeName.toUpperCase().contains("NVARCHAR") && size > 8000) {
return Types.LONGNVARCHAR;
} else {
return super.mapUnknownJdbcTypeForColumn(values);
}
Expand Down

0 comments on commit 7e801f4

Please sign in to comment.