Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[CONJ-841] ResultSetMetaData::getColumnTypeName() returns incorrect t…
…ype name for LONGTEXT

Matadata now return TEXT, MEDIUMTEXT and LONGTEXT datatype
  • Loading branch information
rusher committed Nov 16, 2020
1 parent bb602eb commit fd27655
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 6 deletions.
Expand Up @@ -295,7 +295,7 @@ public int getColumnType(final int column) throws SQLException {
public String getColumnTypeName(final int column) throws SQLException {
ColumnDefinition ci = getColumnInformation(column);
return ColumnType.getColumnTypeName(
ci.getColumnType(), ci.getLength(), ci.isSigned(), ci.isBinary());
ci.getColumnType(), ci.getLength(), ci.getDisplaySize(), ci.isSigned(), ci.isBinary());
}

/**
Expand Down
14 changes: 12 additions & 2 deletions src/main/java/org/mariadb/jdbc/internal/ColumnType.java
Expand Up @@ -225,7 +225,7 @@ public static boolean isNumeric(ColumnType type) {
* @return type
*/
public static String getColumnTypeName(
ColumnType type, long len, boolean signed, boolean binary) {
ColumnType type, long len, long charLen, boolean signed, boolean binary) {
switch (type) {
case SMALLINT:
case MEDIUMINT:
Expand Down Expand Up @@ -257,7 +257,17 @@ public static String getColumnTypeName(
if (binary) {
return "VARBINARY";
}
return "VARCHAR";
if (len < 0) {
return "LONGTEXT";
} else if (charLen <= 65532) {
return "VARCHAR";
} else if (charLen <= 65535) {
return "TEXT";
} else if (charLen <= 16777215) {
return "MEDIUMTEXT";
} else {
return "LONGTEXT";
}
case STRING:
if (binary) {
return "BINARY";
Expand Down
8 changes: 5 additions & 3 deletions src/test/java/org/mariadb/jdbc/DatatypeTest.java
Expand Up @@ -201,6 +201,7 @@ private void createDataTypeTables() throws SQLException {
+ "tinyblob0 TINYBLOB,"
+ "tinytext0 TINYTEXT,"
+ "blob0 BLOB,"
+ "bigvarchar VARCHAR(12383),"
+ "text0 TEXT,"
+ "mediumblob0 MEDIUMBLOB,"
+ "mediumtext0 MEDIUMTEXT,"
Expand Down Expand Up @@ -285,11 +286,12 @@ public void datatypes(Connection connection, boolean tinyInt1isBit, boolean year
checkClass("tinyblob0", byteArrayClass, "TINYBLOB", Types.VARBINARY);
checkClass("tinytext0", String.class, "VARCHAR", Types.VARCHAR);
checkClass("blob0", byteArrayClass, "BLOB", Types.VARBINARY);
checkClass("text0", String.class, "VARCHAR", Types.VARCHAR);
checkClass("bigvarchar", String.class, "VARCHAR", Types.VARCHAR);
checkClass("text0", String.class, "TEXT", Types.VARCHAR);
checkClass("mediumblob0", byteArrayClass, "MEDIUMBLOB", Types.VARBINARY);
checkClass("mediumtext0", String.class, "VARCHAR", Types.VARCHAR);
checkClass("mediumtext0", String.class, "MEDIUMTEXT", Types.VARCHAR);
checkClass("longblob0", byteArrayClass, "LONGBLOB", Types.LONGVARBINARY);
checkClass("longtext0", String.class, "VARCHAR", Types.LONGVARCHAR);
checkClass("longtext0", String.class, "LONGTEXT", Types.LONGVARCHAR);
checkClass("enum0", String.class, "CHAR", Types.CHAR);
checkClass("set0", String.class, "CHAR", Types.CHAR);

Expand Down

0 comments on commit fd27655

Please sign in to comment.