diff tests/JDBC_API_Tester.java @ 725:224d73363dc9

Fixed issue when you create a new Statement, call getGeneratedKeys().getMetaData(). It throwed: Exception in thread "main" java.lang.IllegalArgumentException: Header may not be null! at org.monetdb.jdbc.MonetResultSetMetaData.<init>(MonetResultSetMetaData.java:88) at org.monetdb.jdbc.MonetResultSet.getMetaData(MonetResultSet.java:1255) Added test to JDBC_API_Tester.java
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 26 Jan 2023 17:46:22 +0100 (2023-01-26)
parents 2b763b189452
children 55c14e65b4be
line wrap: on
line diff
--- a/tests/JDBC_API_Tester.java
+++ b/tests/JDBC_API_Tester.java
@@ -91,6 +91,7 @@ final public class JDBC_API_Tester {
 		jt.Test_Rtimedate();
 		jt.Test_RSgetMetaData();
 		jt.Test_Sbatching();
+		jt.Test_SgeneratedKeys();
 		jt.Test_Smoreresults();
 		jt.Test_Wrapper();
 		jt.bogus_auto_generated_keys();
@@ -4318,6 +4319,46 @@ final public class JDBC_API_Tester {
 			"0. true	true\n");
 	}
 
+	private void Test_SgeneratedKeys() {
+		sb.setLength(0);	// clear the output log buffer
+
+		Statement stmt = null;
+		ResultSet rsk = null;
+		try {
+			stmt = con.createStatement();
+			// test getGeneratedKeys
+			rsk = stmt.getGeneratedKeys();
+			// test meta data retrieval of this MonetVirtualResultSet.
+			// It used to fail with: Exception in thread "main" java.lang.IllegalArgumentException: Header may not be null!
+			final ResultSetMetaData rsmd = rsk.getMetaData();
+			sb.append("rsmd has ").append(rsmd.getColumnCount()).append(" columns\n");
+			for (int col = 1; col <= rsmd.getColumnCount(); col++) {
+				sb.append("ColumnName: ").append(rsmd.getColumnName(col))
+				.append(" ColumnTypeName: ").append(rsmd.getColumnTypeName(col))
+				.append(" Precision: ").append(rsmd.getPrecision(col))
+				.append(" Scale: ").append(rsmd.getScale(col))
+				.append(" ColumnDisplaySize: ").append(rsmd.getColumnDisplaySize(col))
+				.append(" ColumnType: ").append(rsmd.getColumnType(col))
+				.append(" ColumnClassName: ").append(rsmd.getColumnClassName(col))
+				.append(" isNullable: ").append(rsmd.isNullable(col))
+				.append(" isAutoIncrement: ").append(rsmd.isAutoIncrement(col))
+				.append("\n");
+			}
+			rsk.close();
+			rsk = null;
+			stmt.close();
+			stmt = null;
+		} catch (SQLException e) {
+			sb.append("FAILED: ").append(e.getMessage()).append("\n");
+		}
+
+		closeStmtResSet(stmt, rsk);
+
+		compareExpectedOutput("Test_SgeneratedKeys",
+				"rsmd has 1 columns\n" +
+				"ColumnName: GENERATED_KEY ColumnTypeName: bigint Precision: 19 Scale: 0 ColumnDisplaySize: 20 ColumnType: -5 ColumnClassName: java.lang.Long isNullable: 2 isAutoIncrement: false\n");
+	}
+
 	private void Test_Smoreresults() {
 		sb.setLength(0);	// clear the output log buffer