Changeset: 33f6d6ef9e83 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/33f6d6ef9e83
Modified Files:
        src/test/java/JDBC_API_Tester.java
        src/test/java/org/monetdb/jdbc/ApiTests.java
Branch: default
Log Message:

Convert Test_RfetchManyColumnsInfo() -> ApiTests#testWideResultSetMetaData()


diffs (179 lines):

diff --git a/src/test/java/JDBC_API_Tester.java 
b/src/test/java/JDBC_API_Tester.java
--- a/src/test/java/JDBC_API_Tester.java
+++ b/src/test/java/JDBC_API_Tester.java
@@ -1619,108 +1619,6 @@ public final class JDBC_API_Tester exten
        }
 
        @Test
-       public void Test_RfetchManyColumnsInfo() {
-               sb.setLength(0);        // clear the output log buffer
-
-               Statement stmt = null;
-               ResultSet rs = null;
-               try {
-                       final int NR_COLUMNS = 180;
-                       final StringBuilder sql = new StringBuilder(50 + 
(NR_COLUMNS * 12));
-
-                       sql.append("CREATE TABLE Test_RfetchManyColumnsInfo (");
-                       for (int col = 1; col <= NR_COLUMNS; col++) {
-                               sql.append("col").append(col).append(" int");
-                               sql.append((col < NR_COLUMNS) ? ", " : ")");
-                       }
-
-                       stmt = con.createStatement();
-                       stmt.executeUpdate(sql.toString());
-
-                       // add 1 row (all NULLs)
-                       int inserted = stmt.executeUpdate("INSERT INTO 
Test_RfetchManyColumnsInfo (col1) VALUES (1)");
-                       if (inserted != 1)
-                               sb.append("Expected 1 row inserted, but got: 
").append(inserted).append("\n");
-
-                       rs = stmt.executeQuery("SELECT * FROM 
Test_RfetchManyColumnsInfo");
-                       rs.next();
-                       ResultSetMetaData rsmd = rs.getMetaData();
-                       sb.append(rsmd.getColumnCount()).append(" columns start 
at columnCount\n");
-                       // do pulling of the metadata info in reverse order to 
test optimizing logic
-                       // in ResultSetMetaData.fetchManyColumnsInfo() to 
choose a lower start_col iteratively
-                       for (int col = rsmd.getColumnCount(); col >= 1; col--) {
-                               // sb.append(col).append(",");
-                               rsmd.getColumnClassName(col);
-                               rsmd.getColumnDisplaySize(col);
-                               rsmd.getColumnLabel(col);
-                               rsmd.getColumnName(col);
-                               rsmd.getColumnType(col);
-                               rsmd.getColumnTypeName(col);
-                               rsmd.getPrecision(col);
-                               rsmd.getScale(col);
-                               rsmd.getCatalogName(col);
-                               rsmd.getSchemaName(col);
-                               rsmd.getTableName(col);
-                               rsmd.isAutoIncrement(col);
-                               rsmd.isCaseSensitive(col);
-                               rsmd.isCurrency(col);
-                               rsmd.isDefinitelyWritable(col);
-                               if (rsmd.isNullable(col) != 
ResultSetMetaData.columnNullable)
-                                       sb.append(col).append(" wrong 
isNullable()").append(rsmd.isNullable(col)).append("\n");
-                               rsmd.isReadOnly(col);
-                               rsmd.isSearchable(col);
-                               rsmd.isSigned(col);
-                               rsmd.isWritable(col);
-                       }
-                       rs.close();
-
-                       rs = stmt.executeQuery("SELECT * FROM 
Test_RfetchManyColumnsInfo");
-                       rs.next();
-                       rsmd = rs.getMetaData();
-                       sb.append(rsmd.getColumnCount()).append(" columns start 
at 1\n");
-                       for (int col = 1; col <= rsmd.getColumnCount(); col++) {
-                               // sb.append(col).append(",");
-                               rsmd.getColumnClassName(col);
-                               rsmd.getColumnDisplaySize(col);
-                               rsmd.getColumnLabel(col);
-                               rsmd.getColumnName(col);
-                               rsmd.getColumnType(col);
-                               rsmd.getColumnTypeName(col);
-                               rsmd.getPrecision(col);
-                               rsmd.getScale(col);
-                               rsmd.getCatalogName(col);
-                               rsmd.getSchemaName(col);
-                               rsmd.getTableName(col);
-                               rsmd.isAutoIncrement(col);
-                               rsmd.isCaseSensitive(col);
-                               rsmd.isCurrency(col);
-                               rsmd.isDefinitelyWritable(col);
-                               if (rsmd.isNullable(col) != 
ResultSetMetaData.columnNullable)
-                                       sb.append(col).append(" wrong 
isNullable()").append(rsmd.isNullable(col)).append("\n");
-                               rsmd.isReadOnly(col);
-                               rsmd.isSearchable(col);
-                               rsmd.isSigned(col);
-                               rsmd.isWritable(col);
-                       }
-                       rs.close();
-               } catch (SQLException e) {
-                       sb.append("FAILED: 
").append(e.getMessage()).append("\n");
-               }
-
-               // cleanup table
-               try {
-                       stmt.executeUpdate("DROP TABLE IF EXISTS 
Test_RfetchManyColumnsInfo;");
-               } catch (SQLException e) {
-                       sb.append("FAILED to drop: 
").append(e.getMessage()).append("\n");
-               }
-               closeStmtResSet(stmt, rs);
-
-               compareExpectedOutput("Test_RfetchManyColumnsInfo",
-                       "180 columns start at columnCount\n" +
-                       "180 columns start at 1\n");
-       }
-
-       @Test
        public void Test_Rpositioning() {
                sb.setLength(0);        // clear the output log buffer
 
diff --git a/src/test/java/org/monetdb/jdbc/ApiTests.java 
b/src/test/java/org/monetdb/jdbc/ApiTests.java
--- a/src/test/java/org/monetdb/jdbc/ApiTests.java
+++ b/src/test/java/org/monetdb/jdbc/ApiTests.java
@@ -1473,4 +1473,63 @@ public class ApiTests {
                        assertFalse(rs.next(), "row " + booleans.length + " 
(0-based) should not exist");
                }
        }
+
+       @Test
+       public void testWideResultSetMetaData() throws SQLException {
+               startScratchTransaction();
+
+               final int NR_COLUMNS = 180;
+               StringBuilder sql = new StringBuilder();
+               sql.append("CREATE TABLE Test_RfetchManyColumnsInfo (\n");
+               String sep = "  ";
+               for (int col = 1; col <= NR_COLUMNS; col++) {
+                       sql.append(sep).append("col").append(col).append(" 
int").append("\n");
+                       sep = ", ";
+               }
+               sql.append(")");
+               stmt.execute(sql.toString());
+               stmt.execute("INSERT INTO Test_RfetchManyColumnsInfo(col1) 
VALUES (1)");
+
+               // Examine in reverse order to torture test some optimizations 
in the
+               // implementation.
+               try (ResultSet rs =  stmt.executeQuery("SELECT * FROM 
Test_RfetchManyColumnsInfo")) {
+                       assertTrue(rs.next());
+                       ResultSetMetaData rsmd = rs.getMetaData();
+                       for (int i = rsmd.getColumnCount(); i >= 1; i--) {
+                               inspectColumnMetadata(rsmd, i);
+                       }
+               }
+
+               // Do it again in forward order
+               try (ResultSet rs =  stmt.executeQuery("SELECT * FROM 
Test_RfetchManyColumnsInfo")) {
+                       assertTrue(rs.next());
+                       ResultSetMetaData rsmd = rs.getMetaData();
+                       for (int i = 1; i <= rsmd.getColumnCount(); i++) {
+                               inspectColumnMetadata(rsmd, i);
+                       }
+               }
+       }
+
+       private static void inspectColumnMetadata(ResultSetMetaData rsmd, int 
i) throws SQLException {
+               rsmd.getColumnClassName(i);
+               rsmd.getColumnDisplaySize(i);
+               rsmd.getColumnLabel(i);
+               rsmd.getColumnName(i);
+               rsmd.getColumnType(i);
+               rsmd.getColumnTypeName(i);
+               rsmd.getPrecision(i);
+               rsmd.getScale(i);
+               rsmd.getCatalogName(i);
+               rsmd.getSchemaName(i);
+               rsmd.getTableName(i);
+               rsmd.isAutoIncrement(i);
+               rsmd.isCaseSensitive(i);
+               rsmd.isCurrency(i);
+               rsmd.isDefinitelyWritable(i);
+               assertEquals(MonetResultSetMetaData.columnNullable, 
rsmd.isNullable(i), "wrong nullability in col " + i);
+               rsmd.isReadOnly(i);
+               rsmd.isSearchable(i);
+               rsmd.isSigned(i);
+               rsmd.isWritable(i);
+       }
 }
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to