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

Convert Test_PSmetadata() -> ApiTests#testPreparedStatementMetadata()


diffs (truncated from 422 to 300 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
@@ -1053,223 +1053,6 @@ public final class JDBC_API_Tester exten
                        "2. empty call... passed\n");
        }
 
-       @Test    // CHANGED supportsNestedTypes
-       public void Test_PSmetadata() {
-               sb.setLength(0);        // clear the output log buffer
-
-               Statement stmt = null;
-               try {
-                       con.setAutoCommit(false);
-                       // >> false: auto commit was just switched off
-                       sb.append("0. 
false\t").append(con.getAutoCommit()).append("\n");
-
-                       stmt = con.createStatement();
-                       int updates = 0;
-                       updates = stmt.executeUpdate("CREATE TABLE 
table_Test_PSmetadata ( myint int, mydouble double, mybool boolean, myvarchar 
varchar(15), myclob clob )");
-                       if (updates != 0)
-                               sb.append("1. Expected 0 got 
").append(updates).append(" instead\n");
-
-                       // all NULLs
-                       updates = stmt.executeUpdate("INSERT INTO 
table_Test_PSmetadata VALUES (NULL, NULL,            NULL,           NULL,      
            NULL)");
-                       if (updates != 1)
-                               sb.append("2a. Expected 1 got 
").append(updates).append(" instead\n");
-
-                       // all filled in
-                       updates = stmt.executeUpdate("INSERT INTO 
table_Test_PSmetadata VALUES (2   , 3.0,             true,           'A 
string',            'bla bla bla')");
-                       if (updates != 1)
-                               sb.append("2b. Expected 1 got 
").append(updates).append(" instead\n");
-               } catch (SQLException e) {
-                       sb.append("FAILED: 
").append(e.getMessage()).append("\n");
-               }
-               closeStmtResSet(stmt, null);
-
-               PreparedStatement pstmt = null;
-               try {
-                       pstmt = con.prepareStatement("SELECT CASE WHEN myint IS 
NULL THEN 0 ELSE 1 END AS intnull, * FROM table_Test_PSmetadata WHERE myint = 
?");
-                       sb.append(pstmt.toString());    // test showing 
prepared statement
-
-                       // testing and showing result set meta data
-                       ResultSetMetaData rsmd = pstmt.getMetaData();
-                       sb.append("rsmd. 
").append(rsmd.getColumnCount()).append(" columns:\n");
-                       for (int col = 1; col <= rsmd.getColumnCount(); col++) {
-                               sb.append("RCol ").append(col).append("\n");
-                               sb.append("  classname     
").append(rsmd.getColumnClassName(col)).append("\n");
-                               sb.append("  displaysize   
").append(rsmd.getColumnDisplaySize(col)).append("\n");
-                               sb.append("  label         
").append(rsmd.getColumnLabel(col)).append("\n");
-                               sb.append("  name          
").append(rsmd.getColumnName(col)).append("\n");
-                               sb.append("  type          
").append(rsmd.getColumnType(col)).append("\n");
-                               sb.append("  typename      
").append(rsmd.getColumnTypeName(col)).append("\n");
-                               sb.append("  precision     
").append(rsmd.getPrecision(col)).append("\n");
-                               sb.append("  scale         
").append(rsmd.getScale(col)).append("\n");
-                               sb.append("  catalogname   
").append(rsmd.getCatalogName(col)).append("\n");
-                               sb.append("  schemaname    
").append(rsmd.getSchemaName(col)).append("\n");
-                               sb.append("  tablename     
").append(rsmd.getTableName(col)).append("\n");
-                               sb.append("  autoincrement 
").append(rsmd.isAutoIncrement(col)).append("\n");
-                               sb.append("  casesensitive 
").append(rsmd.isCaseSensitive(col)).append("\n");
-                               sb.append("  currency      
").append(rsmd.isCurrency(col)).append("\n");
-                               sb.append("  defwritable   
").append(rsmd.isDefinitelyWritable(col)).append("\n");
-                               sb.append("  nullable      
").append(rsmd.isNullable(col)).append("\n");
-                               sb.append("  readonly      
").append(rsmd.isReadOnly(col)).append("\n");
-                               sb.append("  searchable    
").append(rsmd.isSearchable(col)).append("\n");
-                               sb.append("  signed        
").append(rsmd.isSigned(col)).append("\n");
-                               sb.append("  writable      
").append(rsmd.isWritable(col)).append("\n");
-                       }
-
-                       showParams(pstmt);
-
-                       con.rollback();
-                       con.setAutoCommit(true);
-                       // >> true: auto commit was just switched on
-                       sb.append("0. 
true\t").append(con.getAutoCommit()).append("\n");
-               } catch (SQLException e) {
-                       sb.append("FAILED: 
").append(e.getMessage()).append("\n");
-               }
-               closeStmtResSet(pstmt, null);
-
-               compareExpectedOutput("Test_PSmetadata",
-                       "0. false\tfalse\n" +
-                       "Prepared SQL: SELECT CASE WHEN myint IS NULL THEN 0 
ELSE 1 END AS intnull, * FROM table_Test_PSmetadata WHERE myint = ?\n" +
-                       " parameter 1 int, set value: <null>\n" +
-                       "rsmd. 6 columns:\n" +
-                       "RCol 1\n" +
-                       "  classname     java.lang.Short\n" +
-                       "  displaysize   3\n" +
-                       "  label         intnull\n" +
-                       "  name          intnull\n" +
-                       "  type          -6\n" +
-                       "  typename      tinyint\n" +
-                       "  precision     3\n" +
-                       "  scale         0\n" +
-                       "  catalogname   null\n" +
-                       "  schemaname    \n" +
-                       "  tablename     \n" +
-                       "  autoincrement false\n" +
-                       "  casesensitive false\n" +
-                       "  currency      false\n" +
-                       "  defwritable   false\n" +
-                       "  nullable      2\n" +
-                       "  readonly      true\n" +
-                       "  searchable    true\n" +
-                       "  signed        true\n" +
-                       "  writable      false\n" +
-                       "RCol 2\n" +
-                       "  classname     java.lang.Integer\n" +
-                       "  displaysize   10\n" +
-                       "  label         myint\n" +
-                       "  name          myint\n" +
-                       "  type          4\n" +
-                       "  typename      int\n" +
-                       "  precision     10\n" +
-                       "  scale         0\n" +
-                       "  catalogname   null\n" +
-                       "  schemaname    " + (supportsNestedTypes ? "sys\n" : 
"\n") +
-                       "  tablename     table_test_psmetadata\n" +
-                       "  autoincrement false\n" +
-                       "  casesensitive false\n" +
-                       "  currency      false\n" +
-                       "  defwritable   false\n" +
-                       "  nullable      " + (supportsNestedTypes ? "1\n" : 
"2\n") +
-                       "  readonly      true\n" +
-                       "  searchable    true\n" +
-                       "  signed        true\n" +
-                       "  writable      false\n" +
-                       "RCol 3\n" +
-                       "  classname     java.lang.Double\n" +
-                       "  displaysize   15\n" +
-                       "  label         mydouble\n" +
-                       "  name          mydouble\n" +
-                       "  type          8\n" +
-                       "  typename      double\n" +
-                       "  precision     15\n" +
-                       "  scale         0\n" +
-                       "  catalogname   null\n" +
-                       "  schemaname    " + (supportsNestedTypes ? "sys\n" : 
"\n") +
-                       "  tablename     table_test_psmetadata\n" +
-                       "  autoincrement false\n" +
-                       "  casesensitive false\n" +
-                       "  currency      false\n" +
-                       "  defwritable   false\n" +
-                       "  nullable      " + (supportsNestedTypes ? "1\n" : 
"2\n") +
-                       "  readonly      true\n" +
-                       "  searchable    true\n" +
-                       "  signed        true\n" +
-                       "  writable      false\n" +
-                       "RCol 4\n" +
-                       "  classname     java.lang.Boolean\n" +
-                       "  displaysize   5\n" +
-                       "  label         mybool\n" +
-                       "  name          mybool\n" +
-                       "  type          16\n" +
-                       "  typename      boolean\n" +
-                       "  precision     1\n" +
-                       "  scale         0\n" +
-                       "  catalogname   null\n" +
-                       "  schemaname    " + (supportsNestedTypes ? "sys\n" : 
"\n") +
-                       "  tablename     table_test_psmetadata\n" +
-                       "  autoincrement false\n" +
-                       "  casesensitive false\n" +
-                       "  currency      false\n" +
-                       "  defwritable   false\n" +
-                       "  nullable      " + (supportsNestedTypes ? "1\n" : 
"2\n") +
-                       "  readonly      true\n" +
-                       "  searchable    true\n" +
-                       "  signed        false\n" +
-                       "  writable      false\n" +
-                       "RCol 5\n" +
-                       "  classname     java.lang.String\n" +
-                       "  displaysize   15\n" +
-                       "  label         myvarchar\n" +
-                       "  name          myvarchar\n" +
-                       "  type          12\n" +
-                       "  typename      varchar\n" +
-                       "  precision     15\n" +
-                       "  scale         0\n" +
-                       "  catalogname   null\n" +
-                       "  schemaname    " + (supportsNestedTypes ? "sys\n" : 
"\n") +
-                       "  tablename     table_test_psmetadata\n" +
-                       "  autoincrement false\n" +
-                       "  casesensitive true\n" +
-                       "  currency      false\n" +
-                       "  defwritable   false\n" +
-                       "  nullable      " + (supportsNestedTypes ? "1\n" : 
"2\n") +
-                       "  readonly      true\n" +
-                       "  searchable    true\n" +
-                       "  signed        false\n" +
-                       "  writable      false\n" +
-                       "RCol 6\n" +
-                       "  classname     java.lang.String\n" +
-                       "  displaysize   0\n" +
-                       "  label         myclob\n" +
-                       "  name          myclob\n" +
-                       "  type          12\n" +
-                       "  typename      " + (isPostDec2023 ? "varchar" : 
"clob") + "\n" +
-                       "  precision     0\n" +
-                       "  scale         0\n" +
-                       "  catalogname   null\n" +
-                       "  schemaname    " + (supportsNestedTypes ? "sys\n" : 
"\n") +
-                       "  tablename     table_test_psmetadata\n" +
-                       "  autoincrement false\n" +
-                       "  casesensitive true\n" +
-                       "  currency      false\n" +
-                       "  defwritable   false\n" +
-                       "  nullable      " + (supportsNestedTypes ? "1\n" : 
"2\n") +
-                       "  readonly      true\n" +
-                       "  searchable    true\n" +
-                       "  signed        false\n" +
-                       "  writable      false\n" +
-                       "pmd. 1 parameters:\n" +
-                       "Param 1\n" +
-                       "  nullable  2 (UNKNOWN)\n" +
-                       "  signed    true\n" +
-                       "  precision 10\n" +
-                       "  scale     0\n" +
-                       "  type      4\n" +
-                       "  typename  int\n" +
-                       "  classname java.lang.Integer\n" +
-                       "  mode      1 (IN)\n" +
-                       "0. true\ttrue\n");
-       }
-
        @Test
        public void Test_PSsetBytes() {
                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
@@ -836,4 +836,191 @@ public class ApiTests {
                }
        }
 
+       @Test
+       public void testPreparedStatementMetadata() throws SQLException {
+               // Results depend on MonetDB version
+               boolean supportsNestedTypes = false;
+               String checkNested =
+                               "SELECT c.name\n" +
+                               "FROM sys.columns c, sys.tables t, sys.schemas 
s\n" +
+                               "WHERE c.name = 'multiset' AND t.name = 
'_columns' AND s.name = 'sys'\n" +
+                               "AND c.table_id = t.id AND t.schema_id = 
s.id\n";
+               try (ResultSet rs = stmt.executeQuery(checkNested)) {
+                       supportsNestedTypes = rs.next();
+               }
+
+               // note the uppercase letters in the table name.
+               // on retrieval they will be all lowercase.
+               stmt.executeUpdate("DROP TABLE IF EXISTS 
table_Test_PSmetadata");
+               stmt.executeUpdate("CREATE TABLE table_Test_PSmetadata ( myint 
int, mydouble double, mybool boolean, myvarchar varchar(15), myclob clob )");
+               stmt.executeUpdate("INSERT INTO table_Test_PSmetadata VALUES 
(NULL, NULL, NULL, NULL, NULL)");
+               stmt.executeUpdate("INSERT INTO table_Test_PSmetadata VALUES (2 
, 3.0, true, 'A string', 'bla bla bla')");
+
+               String query = "SELECT CASE WHEN myint IS NULL THEN 0 ELSE 1 
END AS intnull, * FROM table_Test_PSmetadata WHERE myint = ?";
+               try (PreparedStatement ps = conn.prepareStatement(query)) {
+                       ResultSetMetaData md = ps.getMetaData();
+
+                       assertEquals("java.lang.Short", 
md.getColumnClassName(1));
+                       assertEquals("java.lang.Integer", 
md.getColumnClassName(2));
+                       assertEquals("java.lang.Double", 
md.getColumnClassName(3));
+                       assertEquals("java.lang.Boolean", 
md.getColumnClassName(4));
+                       assertEquals("java.lang.String", 
md.getColumnClassName(5));
+                       assertEquals("java.lang.String", 
md.getColumnClassName(6));
+
+                       assertEquals(3, md.getColumnDisplaySize(1));
+                       assertEquals(10, md.getColumnDisplaySize(2));
+                       assertEquals(15, md.getColumnDisplaySize(3));
+                       assertEquals(5, md.getColumnDisplaySize(4));
+                       assertEquals(15, md.getColumnDisplaySize(5));
+                       assertEquals(0, md.getColumnDisplaySize(6));
+
+                       assertEquals("intnull", md.getColumnLabel(1));
+                       assertEquals("myint", md.getColumnLabel(2));
+                       assertEquals("mydouble", md.getColumnLabel(3));
+                       assertEquals("mybool", md.getColumnLabel(4));
+                       assertEquals("myvarchar", md.getColumnLabel(5));
+                       assertEquals("myclob", md.getColumnLabel(6));
+
+                       assertEquals("intnull", md.getColumnName(1));
+                       assertEquals("myint", md.getColumnName(2));
+                       assertEquals("mydouble", md.getColumnName(3));
+                       assertEquals("mybool", md.getColumnName(4));
+                       assertEquals("myvarchar", md.getColumnName(5));
+                       assertEquals("myclob", md.getColumnName(6));
+
+                       assertEquals(-6, md.getColumnType(1));
+                       assertEquals(4, md.getColumnType(2));
+                       assertEquals(8, md.getColumnType(3));
+                       assertEquals(16, md.getColumnType(4));
+                       assertEquals(12, md.getColumnType(5));
+                       assertEquals(12, md.getColumnType(6));
+
+                       assertEquals("tinyint", md.getColumnTypeName(1));
+                       assertEquals("int", md.getColumnTypeName(2));
+                       assertEquals("double", md.getColumnTypeName(3));
+                       assertEquals("boolean", md.getColumnTypeName(4));
+                       assertEquals("varchar", md.getColumnTypeName(5));
+                       if (monetVersion.serverReturnsNewMetadata())
+                               assertEquals("varchar", 
md.getColumnTypeName(6));
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to