Changeset: d7661075ebf7 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=d7661075ebf7
Modified Files:
        src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
        src/main/java/nl/cwi/monetdb/jdbc/MonetDriver.java.in
Branch: default
Log Message:

Add support for new (as of Oct2020 release) datatype: day_interval


diffs (81 lines):

diff --git a/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java 
b/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
@@ -1759,10 +1759,14 @@ public class MonetDatabaseMetaData
                                .append(" ELSE 
").append(DatabaseMetaData.procedureColumnUnknown).append(" END AS smallint) AS 
\"COLUMN_TYPE\", " +
                        
"cast(").append(MonetDriver.getSQLTypeMap("a.\"type\"")).append(" AS int) AS 
\"DATA_TYPE\", " +
                        "a.\"type\" AS \"TYPE_NAME\", " +
-                       "CASE a.\"type\" WHEN 'tinyint' THEN 3 WHEN 'smallint' 
THEN 5 WHEN 'int' THEN 10 WHEN 'bigint' THEN 19 WHEN 'hugeint' THEN 38 WHEN 
'oid' THEN 19 WHEN 'wrd' THEN 19 ELSE a.\"type_digits\" END AS \"PRECISION\", " 
+
-                       "CASE a.\"type\" WHEN 'tinyint' THEN 1 WHEN 'smallint' 
THEN 2 WHEN 'int' THEN 4 WHEN 'bigint' THEN 8 WHEN 'hugeint' THEN 16 WHEN 'oid' 
THEN 8 WHEN 'wrd' THEN 8 ELSE a.\"type_digits\" END AS \"LENGTH\", " +
-                       "cast(CASE WHEN a.\"type\" IN 
('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric','time','timetz','timestamp','timestamptz','sec_interval')
 THEN a.\"type_scale\" ELSE NULL END AS smallint) AS \"SCALE\", " +
-                       "cast(CASE WHEN a.\"type\" IN 
('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric') 
THEN 10 WHEN a.\"type\" IN ('real','float','double') THEN 2 ELSE NULL END AS 
smallint) AS \"RADIX\", " +
+                       "CASE a.\"type\" WHEN 'tinyint' THEN 3 WHEN 'smallint' 
THEN 5 WHEN 'int' THEN 10 WHEN 'bigint' THEN 19" +
+                               " WHEN 'hugeint' THEN 38 WHEN 'oid' THEN 19 
WHEN 'wrd' THEN 19 ELSE a.\"type_digits\" END AS \"PRECISION\", " +
+                       "CASE a.\"type\" WHEN 'tinyint' THEN 1 WHEN 'smallint' 
THEN 2 WHEN 'int' THEN 4 WHEN 'bigint' THEN 8" +
+                               " WHEN 'hugeint' THEN 16 WHEN 'oid' THEN 8 WHEN 
'wrd' THEN 8 ELSE a.\"type_digits\" END AS \"LENGTH\", " +
+                       "cast(CASE WHEN a.\"type\" IN 
('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric',"
 +
+                               
"'time','timetz','timestamp','timestamptz','day_interval','month_interval','sec_interval')
 THEN a.\"type_scale\" ELSE NULL END AS smallint) AS \"SCALE\", " +
+                       "cast(CASE WHEN a.\"type\" IN 
('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric') 
THEN 10" +
+                               " WHEN a.\"type\" IN ('real','float','double') 
THEN 2 ELSE NULL END AS smallint) AS \"RADIX\", " +
                        
"cast(").append(DatabaseMetaData.procedureNullableUnknown).append(" AS 
smallint) AS \"NULLABLE\", " +
                        "cast(null as char(1)) AS \"REMARKS\", " +
                        "cast(null as char(1)) AS \"COLUMN_DEF\", " +
@@ -2115,8 +2119,8 @@ public class MonetDatabaseMetaData
                        "c.\"type_digits\" AS \"COLUMN_SIZE\", " +
                        "cast(0 as int) AS \"BUFFER_LENGTH\", " +
                        "c.\"type_scale\" AS \"DECIMAL_DIGITS\", " +
-                       "cast(CASE WHEN c.\"type\" IN ('decimal', 'numeric', 
'sec_interval') THEN 10 " +
-                               "WHEN c.\"type\" IN ('int', 'smallint', 
'tinyint', 'bigint', 'hugeint', 'float', 'real', 'double', 'oid', 'wrd') THEN 2 
" +
+                       "cast(CASE WHEN c.\"type\" IN 
('decimal','numeric','day_interval','month_interval','sec_interval') THEN 10 " +
+                               "WHEN c.\"type\" IN 
('int','smallint','tinyint','bigint','hugeint','float','real','double','oid','wrd')
 THEN 2 " +
                                "ELSE 0 END AS int) AS \"NUM_PREC_RADIX\", " +
                        "cast(CASE c.\"null\" WHEN true THEN 
").append(ResultSetMetaData.columnNullable)
                        .append(" WHEN false THEN 
").append(ResultSetMetaData.columnNoNulls).append(" END AS int) AS 
\"NULLABLE\", ")
@@ -2936,22 +2940,22 @@ public class MonetDatabaseMetaData
                                " ELSE NULL END AS varchar(9)) AS 
\"LITERAL_PREFIX\", " +
                        "cast(CASE WHEN \"systemname\" IN 
('str','inet','json','url','uuid','blob','sqlblob') THEN ''''" +
                                " ELSE NULL END AS varchar(2)) AS 
\"LITERAL_SUFFIX\", " +
-                       "CASE WHEN \"sqlname\" IN ('char', 'varchar') THEN 'max 
length'" +
+                       "CASE WHEN \"sqlname\" IN ('char','varchar') THEN 'max 
length'" +
                                " WHEN \"sqlname\" = 'decimal' THEN 'precision, 
scale'" +
-                               " WHEN \"sqlname\" IN ('time', 'timetz', 
'timestamp', 'timestamptz', 'sec_interval') THEN 'precision'" +
+                               " WHEN \"sqlname\" IN 
('time','timetz','timestamp','timestamptz','sec_interval') THEN 'precision'" +
                                " ELSE NULL END AS \"CREATE_PARAMS\", " +
                        "cast(CASE WHEN \"systemname\" = 'oid' THEN 
").append(DatabaseMetaData.typeNoNulls)
                                .append(" ELSE 
").append(DatabaseMetaData.typeNullable).append(" END AS smallint) AS 
\"NULLABLE\", " +
                        "CASE WHEN \"systemname\" IN ('str','json','url') THEN 
true ELSE false END AS \"CASE_SENSITIVE\", " +
                        "cast(CASE WHEN \"systemname\" IN 
('str','inet','json','url','uuid') THEN 
").append(DatabaseMetaData.typeSearchable)
                                .append(" ELSE 
").append(DatabaseMetaData.typePredBasic).append(" END AS smallint) AS 
\"SEARCHABLE\", " +
-                       "CASE WHEN \"sqlname\" IN 
('tinyint','smallint','int','bigint','hugeint','decimal','real','double','sec_interval','month_interval')
 THEN false ELSE true END AS \"UNSIGNED_ATTRIBUTE\", " +
+                       "CASE WHEN \"sqlname\" IN 
('tinyint','smallint','int','bigint','hugeint','decimal','real','double','day_interval','month_interval','sec_interval')
 THEN false ELSE true END AS \"UNSIGNED_ATTRIBUTE\", " +
                        "CASE \"sqlname\" WHEN 'decimal' THEN true ELSE false 
END AS \"FIXED_PREC_SCALE\", " +
                        "CASE WHEN \"sqlname\" IN 
('tinyint','smallint','int','bigint') THEN true ELSE false END AS 
\"AUTO_INCREMENT\", " +
                        "\"systemname\" AS \"LOCAL_TYPE_NAME\", " +
                        "cast(0 AS smallint) AS \"MINIMUM_SCALE\", " +
-                       "cast(CASE WHEN \"sqlname\" = 'decimal' THEN (CASE 
\"systemname\" WHEN 'lng' THEN 18 WHEN 'hge' THEN 38 WHEN 'int' THEN 9 WHEN 
'sht' THEN 4 WHEN 'bte' THEN 2 ELSE 0 END)" +
-                               " WHEN \"sqlname\" IN ('time', 'timetz', 
'timestamp', 'timestamptz', 'sec_interval') THEN 6 ELSE 0 END AS smallint) AS 
\"MAXIMUM_SCALE\", " +
+                       "cast(CASE WHEN \"sqlname\" = 'decimal' THEN (CASE 
\"systemname\" WHEN 'int' THEN 9 WHEN 'lng' THEN 18 WHEN 'sht' THEN 4 WHEN 
'hge' THEN 38 WHEN 'bte' THEN 2 ELSE 0 END)" +
+                               " WHEN \"sqlname\" IN 
('time','timetz','timestamp','timestamptz','sec_interval') THEN 6 ELSE 0 END AS 
smallint) AS \"MAXIMUM_SCALE\", " +
                        "cast(0 AS int) AS \"SQL_DATA_TYPE\", " +
                        "cast(0 AS int) AS \"SQL_DATETIME_SUB\", " +
                        "cast(\"radix\" as int) AS \"NUM_PREC_RADIX\" " +
@@ -3905,7 +3909,7 @@ public class MonetDatabaseMetaData
                        "CASE a.\"type\" WHEN 'tinyint' THEN 1 WHEN 'smallint' 
THEN 2 WHEN 'int' THEN 4 WHEN 'bigint' THEN 8" +
                                " WHEN 'hugeint' THEN 16 WHEN 'oid' THEN 8 WHEN 
'wrd' THEN 8 ELSE a.\"type_digits\" END AS \"LENGTH\", " +
                        "cast(CASE WHEN a.\"type\" IN 
('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric',"
 +
-                               
"'time','timetz','timestamp','timestamptz','sec_interval') THEN 
a.\"type_scale\" ELSE NULL END AS smallint) AS \"SCALE\", " +
+                               
"'time','timetz','timestamp','timestamptz','day_interval','month_interval','sec_interval')
 THEN a.\"type_scale\" ELSE NULL END AS smallint) AS \"SCALE\", " +
                        "cast(CASE WHEN a.\"type\" IN 
('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric') 
THEN 10" +
                                " WHEN a.\"type\" IN ('real','float','double') 
THEN 2 ELSE NULL END AS smallint) AS \"RADIX\", " +
                        
"cast(").append(DatabaseMetaData.functionNullableUnknown).append(" AS smallint) 
AS \"NULLABLE\", " +
diff --git a/src/main/java/nl/cwi/monetdb/jdbc/MonetDriver.java.in 
b/src/main/java/nl/cwi/monetdb/jdbc/MonetDriver.java.in
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetDriver.java.in
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetDriver.java.in
@@ -334,6 +334,7 @@ final public class MonetDriver implement
                typeMap.put("char", Integer.valueOf(Types.CHAR));
                typeMap.put("clob", Integer.valueOf(Types.CLOB));
                typeMap.put("date", Integer.valueOf(Types.DATE));
+               typeMap.put("day_interval", Integer.valueOf(Types.BIGINT));     
// New as of Oct2020 release
                typeMap.put("decimal", Integer.valueOf(Types.DECIMAL));
                typeMap.put("double", Integer.valueOf(Types.DOUBLE));
                // typeMap.put("geometry", Integer.valueOf(Types.???));
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to