Changeset: 76a100e3a3cb for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=76a100e3a3cb
Modified Files:
        java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
Branch: Jun2016
Log Message:

Correcting return types of resultset of DatabaseMetaData.getVersionColumns().
Avoid using MonetVirtualResultSet as it creates problems in ResultSetMetaData.


diffs (68 lines):

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
@@ -2313,20 +2313,18 @@ public class MonetDatabaseMetaData exten
 
        /**
         * Get a description of a table's columns that are automatically
-        * updated when any value in a row is updated.  They are
-        * unordered.
+        * updated when any value in a row is updated. They are unordered.
         *
         * <P>Each column description has the following columns:
         *      <OL>
         *      <LI><B>SCOPE</B> short => is not used
         *      <LI><B>COLUMN_NAME</B> String => column name
-        *      <LI><B>DATA_TYPE</B> short => SQL data type from java.sql.Types
+        *      <LI><B>DATA_TYPE</B> int => SQL data type from java.sql.Types
         *      <LI><B>TYPE_NAME</B> String => Data source dependent type name
         *      <LI><B>COLUMN_SIZE</B> int => precision
         *      <LI><B>BUFFER_LENGTH</B> int => length of column value in bytes
-        *      <LI><B>DECIMAL_DIGITS</B> short  => scale
-        *      <LI><B>PSEUDO_COLUMN</B> short => is this a pseudo column
-        *              like an Oracle ROWID
+        *      <LI><B>DECIMAL_DIGITS</B> short => scale
+        *      <LI><B>PSEUDO_COLUMN</B> short => is this a pseudo column like 
an Oracle ROWID
         *              <UL>
         *              <LI> versionColumnUnknown - may or may not be pseudo 
column
         *              <LI> versionColumnNotPseudo - is NOT a pseudo column
@@ -2347,26 +2345,19 @@ public class MonetDatabaseMetaData exten
                String table
        ) throws SQLException
        {
-               // I don't know of columns which update themselves, except 
maybe on the
-               // system tables
-
-               final String columns[] = {
-                       "SCOPE", "COLUMN_NAME", "DATA_TYPE", "TYPE_NAME", 
"COLUMN_SIZE",
-                       "BUFFER_LENGTH", "DECIMAL_DIGITS", "PSEUDO_COLUMN"
-               };
-
-               final String types[] = {
-                       "int", "varchar", "int", "varchar", "int",
-                       "int", "int", "int"
-               };
-
-               final String[][] results = new String[0][columns.length];
-
-               try {
-                       return new MonetVirtualResultSet(columns, types, 
results);
-               } catch (IllegalArgumentException e) {
-                       throw new SQLException("Internal driver error: " + 
e.getMessage(), "M0M03");
-               }
+               // MonetDB currently does not have columns which update 
themselves, so return an empty ResultSet
+               String query =
+               "SELECT CAST(null as smallint) AS \"SCOPE\", " +
+                       "CAST(null as varchar(1)) AS \"COLUMN_NAME\", " +
+                       "CAST(null as int) AS \"DATA_TYPE\", " +
+                       "CAST(null as varchar(1)) AS \"TYPE_NAME\", " +
+                       "CAST(null as int) AS \"COLUMN_SIZE\", " +
+                       "CAST(null as int) AS \"BUFFER_LENGTH\", " +
+                       "CAST(null as smallint) AS \"DECIMAL_DIGITS\", " +
+                       "CAST(null as smallint) AS \"PSEUDO_COLUMN\" " +
+               "WHERE 1 = 0";
+
+               return executeMetaDataQuery(query);
        }
 
        /**
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to