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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list