diff tests/JDBC_API_Tester.java @ 717:7240d2dd369f

Improved implementation of PreparedStatement.getMetaData(). The previous implementation created a new ResultSetMetaData object each time this method is called which is quite costly if it is called from inside a fetch-loop. As the ResultSetMetaData is static for a PreparedStatement it is better to create it once, cache it in the PreparedStatement object and return the cached object for next calls to PreparedStatement.getMetaData(). Also it reuses now all the methods of ResultSetMetaData class, which implies less code and easier future maintenance. The private method getColumnIdx(int column) also is no longer needed and has been removed.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 05 Jan 2023 16:20:04 +0100 (2023-01-05)
parents aeb268156580
children 2f42195e9c58
line wrap: on
line diff
--- a/tests/JDBC_API_Tester.java
+++ b/tests/JDBC_API_Tester.java
@@ -1729,7 +1729,7 @@ final public class JDBC_API_Tester {
 			"Showing prepared query ResultSetMetaData\n" +
 			"ColumnName: c1	ColumnTypeName: interval day	Precision: 4	Scale: 0	ColumnDisplaySize: 4	ColumnType: 2	ColumnClassName: java.math.BigDecimal\n" +
 			"ColumnName: c2	ColumnTypeName: interval month	Precision: 10	Scale: 0	ColumnDisplaySize: 10	ColumnType: 4	ColumnClassName: java.lang.Integer\n" +
-			"ColumnName: c3	ColumnTypeName: interval second	Precision: 13	Scale: 0	ColumnDisplaySize: 13	ColumnType: 3	ColumnClassName: java.math.BigDecimal\n" +
+			"ColumnName: c3	ColumnTypeName: interval second	Precision: 13	Scale: 3	ColumnDisplaySize: 13	ColumnType: 3	ColumnClassName: java.math.BigDecimal\n" +
 			"Showing prepared query ParameterMetaData\n" +
 			"ParameterTypeName: interval day	Precision: 4	Scale: 0	ParameterType: 2	ParameterClassName: java.math.BigDecimal\n" +
 			"ParameterTypeName: interval month	Precision: 10	Scale: 0	ParameterType: 4	ParameterClassName: java.lang.Integer\n" +
@@ -2373,7 +2373,7 @@ final public class JDBC_API_Tester {
 			"  writable      false\n" +
 			"RCol 4\n" +
 			"  classname     java.lang.Boolean\n" +
-			"  displaysize   1\n" +
+			"  displaysize   5\n" +
 			"  label         mybool\n" +
 			"  name          mybool\n" +
 			"  type          16\n" +
@@ -4426,7 +4426,7 @@ final public class JDBC_API_Tester {
 			ResultSetMetaData psrsmd = pstmt.getMetaData();
 			checkIsWrapperFor("PrepStmt ResultSetMetaData", psrsmd, jdbc_pkg, "ResultSetMetaData");
 			checkIsWrapperFor("PrepStmt ResultSetMetaData", psrsmd, monetdb_jdbc_pkg, "MonetPreparedStatement");
-			checkIsWrapperFor("PrepStmt ResultSetMetaData", psrsmd, monetdb_jdbc_pkg, "MonetPreparedStatement$rsmdw");  // it is a private class of MonetPreparedStatement
+			checkIsWrapperFor("PrepStmt ResultSetMetaData", psrsmd, monetdb_jdbc_pkg, "MonetResultSetMetaData");
 			checkIsWrapperFor("PrepStmt ResultSetMetaData", psrsmd, jdbc_pkg, "Connection");
 			checkIsWrapperFor("PrepStmt ResultSetMetaData", psrsmd, monetdb_jdbc_pkg, "MonetConnection");
 
@@ -4472,7 +4472,7 @@ final public class JDBC_API_Tester {
 				"ParameterMetaData. isWrapperFor(MonetConnection) returns: false\n" +
 				"PrepStmt ResultSetMetaData. isWrapperFor(ResultSetMetaData) returns: true	Called unwrap(). Returned object is not null, so oke\n" +
 				"PrepStmt ResultSetMetaData. isWrapperFor(MonetPreparedStatement) returns: false\n" +
-				"PrepStmt ResultSetMetaData. isWrapperFor(MonetPreparedStatement$rsmdw) returns: true	Called unwrap(). Returned object is not null, so oke\n" +
+				"PrepStmt ResultSetMetaData. isWrapperFor(MonetResultSetMetaData) returns: true	Called unwrap(). Returned object is not null, so oke\n" +
 				"PrepStmt ResultSetMetaData. isWrapperFor(Connection) returns: false\n" +
 				"PrepStmt ResultSetMetaData. isWrapperFor(MonetConnection) returns: false\n");
 	}