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]