Changeset: 34ce4afa0244 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=34ce4afa0244
Modified Files:
        java/ChangeLog.Jun2016
        java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
        java/tests/Test_Dobjects.java
        sql/jdbc/tests/Tests/Test_Dobjects.stable.out
Branch: Jun2016
Log Message:

Fixed problem in DatabaseMetaData.getUDTs() when it was called with types 
parameter filled.
It used to throw SQException with message: SELECT: identifier 'DATA_TYPE' 
unknown.
Now it returns the UDTs which match the provided array of data types.


diffs (74 lines):

diff --git a/java/ChangeLog.Jun2016 b/java/ChangeLog.Jun2016
--- a/java/ChangeLog.Jun2016
+++ b/java/ChangeLog.Jun2016
@@ -1,6 +1,12 @@
 # ChangeLog file for java
 # This file is updated with Maddlog
 
+* Thu May 26 2016 Martin van Dinther <martin.van.dint...@monetdbsolutions.com>
+- Fixed problem in DatabaseMetaData.getUDTs() when it was called with
+  types parameter filled.  It used to throw SQException with message:
+  SELECT: identifier 'DATA_TYPE' unknown. Now it returns the UDTs which
+  match the provided array of data types.
+
 * Thu May 19 2016 Martin van Dinther <martin.van.dint...@monetdbsolutions.com>
 - Implemented MonetDatabaseMetaData.supportsConvert() and
   MonetDatabaseMetaData.supportsConvert(int fromType, int toType) methods.
diff --git a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java 
b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
--- a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
+++ b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
@@ -3239,6 +3239,9 @@ public class MonetDatabaseMetaData exten
        ) throws SQLException
        {
                StringBuilder query = new StringBuilder(990);
+               if (types != null && types.length > 0) {
+                       query.append("SELECT * FROM (");
+               }
                query.append("SELECT cast(null as char(1)) AS \"TYPE_CAT\", " +
                        "\"schemas\".\"name\" AS \"TYPE_SCHEM\", " +
                        "\"types\".\"sqlname\" AS \"TYPE_NAME\", " +
@@ -3269,7 +3272,7 @@ public class MonetDatabaseMetaData exten
                        query.append(" AND \"types\".\"sqlname\" 
").append(composeMatchPart(typeNamePattern));
                }
                if (types != null && types.length > 0) {
-                       query.append(" AND \"DATA_TYPE\" IN (");
+                       query.append(") AS getUDTs WHERE \"DATA_TYPE\" IN (");
                        for (int i = 0; i < types.length; i++) {
                                if (i > 0) {
                                        query.append(", ");
diff --git a/java/tests/Test_Dobjects.java b/java/tests/Test_Dobjects.java
--- a/java/tests/Test_Dobjects.java
+++ b/java/tests/Test_Dobjects.java
@@ -38,6 +38,9 @@ public class Test_Dobjects {
 //                     dumpResultSet(dbmd.getSchemas());       // this 
produces different outputs on different platforms due to dependency on SAMTOOLS 
and NETCDF. so exclude it
                        dumpResultSet(dbmd.getSchemas(null, "sys"));
                        dumpResultSet(dbmd.getTables(null, "sys", null, null));
+                       dumpResultSet(dbmd.getUDTs(null, "sys", null, null));
+                       int[] UDTtypes = { Types.STRUCT, Types.DISTINCT };
+                       dumpResultSet(dbmd.getUDTs(null, "sys", null, 
UDTtypes));
                } catch (SQLException e) {
                        System.out.println("FAILED :( "+ e.getMessage());
                        System.out.println("ABORTING TEST!!!");
diff --git a/sql/jdbc/tests/Tests/Test_Dobjects.stable.out 
b/sql/jdbc/tests/Tests/Test_Dobjects.stable.out
--- a/sql/jdbc/tests/Tests/Test_Dobjects.stable.out
+++ b/sql/jdbc/tests/Tests/Test_Dobjects.stable.out
@@ -107,8 +107,16 @@ as select "schema","table",max(count) as
 from sys.storagemodel() group by "schema","table";     null    null    null    
null    null    
 null   sys     tracelog        SYSTEM VIEW     create view sys.tracelog as 
select * from sys.tracelog();       null    null    null    null    null    
 null   sys     users   SYSTEM VIEW     SELECT u."name" AS "name", 
ui."fullname", ui."default_schema" FROM db_users() AS u LEFT JOIN 
"sys"."db_user_info" AS ui ON u."name" = ui."name" ;       null    null    null 
   null    null    
+Resultset with 7 columns
+TYPE_CAT       TYPE_SCHEM      TYPE_NAME       CLASS_NAME      DATA_TYPE       
REMARKS BASE_TYPE       
+null   sys     inet    nl.cwi.monetdb.jdbc.types.INET  2000    inet    null    
+null   sys     json    java.lang.String        2000    json    null    
+null   sys     url     nl.cwi.monetdb.jdbc.types.URL   2000    url     null    
+null   sys     uuid    java.lang.String        2000    uuid    null    
+Resultset with 7 columns
+TYPE_CAT       TYPE_SCHEM      TYPE_NAME       CLASS_NAME      DATA_TYPE       
REMARKS BASE_TYPE       
 
-# 18:29:26 >  
-# 18:29:26 >  "Done."
-# 18:29:26 >  
+# 17:19:03 >  
+# 17:19:03 >  "Done."
+# 17:19:03 >  
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to