diff src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java @ 471:e14e81b8044e

Improved performance of ResultSetMetaData methods getPrecision(), getScale(), isNullable() and isAutoIncrement(). The data is fetched from the server by sending a query. This used to be one query for each column of the ResultSet. Now these queries are combined into one query fetching this meta data for up to 50 columns in one query. This reduces the number of queries sent to the server significantly. This is noticable for instance when using generic JDBC query tools such as SQuirreL, which now respond much faster.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 29 Apr 2021 22:56:37 +0200 (2021-04-29)
parents a851e6d6a71a
children 6aa38e8c0f2d
line wrap: on
line diff
--- a/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
+++ b/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
@@ -2131,7 +2131,9 @@ public class MonetDatabaseMetaData
 				"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\", ")
+				.append(" WHEN false THEN ").append(ResultSetMetaData.columnNoNulls)
+				.append(" ELSE ").append(ResultSetMetaData.columnNullableUnknown)
+				.append(" END AS int) AS \"NULLABLE\", ")
 			.append(useCommentsTable ? "cm.\"remark\"" : "cast(null AS varchar(9999))").append(" AS \"REMARKS\", " +
 			"c.\"default\" AS \"COLUMN_DEF\", " +
 			"cast(0 as int) AS \"SQL_DATA_TYPE\", " +