Changeset: 3050f906dae0 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3050f906dae0 Modified Files: java/src/nl/cwi/monetdb/jdbc/MonetDriver.java.in Branch: Oct2014 Log Message:
Added missing JDBC type mappings for newer MonetDB types. Due to missing mappings it would fallback to JDBC: Types.OTHER. This causes data retrieval / display problems in generic java frontends (e.g. SQuirreL). By adding more mappings generic frontends will get better info on how to retrieve and display data based on those MonetDB datatypes. diffs (51 lines): diff --git a/java/src/nl/cwi/monetdb/jdbc/MonetDriver.java.in b/java/src/nl/cwi/monetdb/jdbc/MonetDriver.java.in --- a/java/src/nl/cwi/monetdb/jdbc/MonetDriver.java.in +++ b/java/src/nl/cwi/monetdb/jdbc/MonetDriver.java.in @@ -286,6 +286,8 @@ final public class MonetDriver implement //== end methods of interface driver /** A Map containing the mapping between MonetDB types and Java SQL types */ + /* use SELECT sqlname, * FROM sys.types order by 1, id; to view all MonetDB types */ + /* see http://docs.oracle.com/javase/7/docs/api/java/sql/Types.html to view all supported java SQL types */ static java.util.Map<String, Integer> typeMap = new java.util.HashMap<String, Integer>(); static { // fill the typeMap once @@ -297,9 +299,11 @@ final public class MonetDriver implement typeMap.put("date", Integer.valueOf(Types.DATE)); typeMap.put("decimal", Integer.valueOf(Types.DECIMAL)); typeMap.put("double", Integer.valueOf(Types.DOUBLE)); + typeMap.put("hugeint", Integer.valueOf(Types.NUMERIC)); + typeMap.put("inet", Integer.valueOf(Types.VARCHAR)); typeMap.put("int", Integer.valueOf(Types.INTEGER)); typeMap.put("month_interval", Integer.valueOf(Types.INTEGER)); - typeMap.put("oid", Integer.valueOf(Types.OTHER)); + typeMap.put("oid", Integer.valueOf(Types.BIGINT)); typeMap.put("real", Integer.valueOf(Types.REAL)); typeMap.put("sec_interval", Integer.valueOf(Types.DECIMAL)); typeMap.put("smallint", Integer.valueOf(Types.SMALLINT)); @@ -309,6 +313,8 @@ final public class MonetDriver implement typeMap.put("timestamptz", Integer.valueOf(Types.TIMESTAMP)); typeMap.put("timetz", Integer.valueOf(Types.TIME)); typeMap.put("tinyint", Integer.valueOf(Types.TINYINT)); + typeMap.put("url", Integer.valueOf(Types.VARCHAR)); + typeMap.put("uuid", Integer.valueOf(Types.VARCHAR)); typeMap.put("varchar", Integer.valueOf(Types.VARCHAR)); typeMap.put("wrd", Integer.valueOf(Types.BIGINT)); } @@ -345,11 +351,11 @@ final public class MonetDriver implement */ static String getSQLTypeMap(String column) { // TODO: StringBuilder?... - String ret = "CASE " + column + " "; - for (Entry<String, Integer> entry : typeMap.entrySet()) { - ret += "WHEN '" + entry.getKey() + "' THEN " + entry.getValue().toString() + " "; - } - ret += "ELSE " + Types.OTHER + " END"; + String ret = "CASE " + column; + for (Entry<String, Integer> entry : typeMap.entrySet()) { + ret += " WHEN '" + entry.getKey() + "' THEN " + entry.getValue().toString(); + } + ret += " ELSE " + Types.OTHER + " END"; return ret; } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list