Changeset: 20bdae942f99 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=20bdae942f99
Modified Files:
        tests/JDBC_API_Tester.java
Branch: default
Log Message:

Implemented some more tests


diffs (truncated from 449 to 300 lines):

diff --git a/tests/JDBC_API_Tester.java b/tests/JDBC_API_Tester.java
--- a/tests/JDBC_API_Tester.java
+++ b/tests/JDBC_API_Tester.java
@@ -11,6 +11,9 @@ import java.util.*;
 import java.io.StringReader;
 import java.nio.charset.Charset;
 
+import org.monetdb.jdbc.types.INET;
+import org.monetdb.jdbc.types.URL;
+
 /**
  * class to test JDBC Driver API methods and behavior of MonetDB server.
  *
@@ -28,13 +31,14 @@ import java.nio.charset.Charset;
  */
 final public class JDBC_API_Tester {
        StringBuilder sb;       // buffer to collect the test output
+       static int sbInitLen = 3266;
        Connection con; // main connection shared by all tests
 
        public static void main(String[] args) throws Exception {
                String con_URL = args[0];
 
                JDBC_API_Tester jt = new JDBC_API_Tester();
-               jt.sb = new StringBuilder(4200);
+               jt.sb = new StringBuilder(sbInitLen);
                jt.con = DriverManager.getConnection(con_URL);
                // we are now connected
 
@@ -1157,44 +1161,382 @@ final public class JDBC_API_Tester {
 
                Statement stmt = null;
                try {
+                       con.setAutoCommit(false);
+                       // >> false: auto commit was just switched off
+                       sb.append("0. false\t" + 
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 != -2)
+                               sb.append("1. Expected -2 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 = 
?");
+
+                       // 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");
+                       }
+
+                       // testing and showing parameter meta data
+                       ParameterMetaData pmd = pstmt.getParameterMetaData();
+                       sb.append("pmd. 
").append(pmd.getParameterCount()).append(" parameters:\n");
+                       for (int parm = 1; parm <= pmd.getParameterCount(); 
parm++) {
+                               sb.append("Param ").append(parm).append("\n");
+                               int nullable = pmd.isNullable(parm);
+                               sb.append("  nullable  
").append(nullable).append(" (");
+                               switch (nullable) {
+                                       case 
ParameterMetaData.parameterNoNulls:        sb.append("NO"); break;
+                                       case 
ParameterMetaData.parameterNullable:       sb.append("YA"); break;
+                                       case 
ParameterMetaData.parameterNullableUnknown:        sb.append("UNKNOWN"); break;
+                                       // default:     sb.append("INVALID " + 
nullable); break;
+                               }
+                               sb.append(")\n");
+                               sb.append("  signed    
").append(pmd.isSigned(parm)).append("\n");
+                               sb.append("  precision 
").append(pmd.getPrecision(parm)).append("\n");
+                               sb.append("  scale     
").append(pmd.getScale(parm)).append("\n");
+                               sb.append("  type      
").append(pmd.getParameterType(parm)).append("\n");
+                               sb.append("  typename  
").append(pmd.getParameterTypeName(parm)).append("\n");
+                               sb.append("  classname 
").append(pmd.getParameterClassName(parm)).append("\n");
+                               int mode = pmd.getParameterMode(parm);
+                               sb.append("  mode      ").append(mode).append(" 
(");
+                               switch (mode) {
+                                       case ParameterMetaData.parameterModeIn: 
sb.append("IN"); break;
+                                       case 
ParameterMetaData.parameterModeInOut:      sb.append("INOUT"); break;
+                                       case 
ParameterMetaData.parameterModeOut:        sb.append("OUT"); break;
+                                       case 
ParameterMetaData.parameterModeUnknown:    sb.append("UNKNOWN"); break;
+                                       // default:     sb.append("INVALID " + 
mode); break;
+                               }
+                               sb.append(")\n");
+                       }
+
+                       con.rollback();
+                       con.setAutoCommit(true);
+                       // >> true: auto commit was just switched on
+                       sb.append("0. true\t" + 
con.getAutoCommit()).append("\n");
                } catch (SQLException e) {
                        sb.append("FAILED: 
").append(e.getMessage()).append("\n");
                }
+               closeStmtResSet(pstmt, null);
 
-               closeStmtResSet(stmt, null);
-
-               compareExpectedOutput("Test_PSmetadata", "");
+               compareExpectedOutput("Test_PSmetadata",
+                       "0. false\tfalse\n" +
+                       "rsmd. 6 columns:\n" +
+                       "RCol 1\n" +
+                       "  classname     java.lang.Short\n" +
+                       "  displaysize   8\n" +
+                       "  label         intnull\n" +
+                       "  name          intnull\n" +
+                       "  type          -6\n" +
+                       "  typename      tinyint\n" +
+                       "  precision     8\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   32\n" +
+                       "  label         myint\n" +
+                       "  name          myint\n" +
+                       "  type          4\n" +
+                       "  typename      int\n" +
+                       "  precision     32\n" +
+                       "  scale         0\n" +
+                       "  catalogname   null\n" +
+                       "  schemaname    \n" +
+                       "  tablename     table_test_psmetadata\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 3\n" +
+                       "  classname     java.lang.Double\n" +
+                       "  displaysize   53\n" +
+                       "  label         mydouble\n" +
+                       "  name          mydouble\n" +
+                       "  type          8\n" +
+                       "  typename      double\n" +
+                       "  precision     53\n" +
+                       "  scale         0\n" +
+                       "  catalogname   null\n" +
+                       "  schemaname    \n" +
+                       "  tablename     table_test_psmetadata\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 4\n" +
+                       "  classname     java.lang.Boolean\n" +
+                       "  displaysize   1\n" +
+                       "  label         mybool\n" +
+                       "  name          mybool\n" +
+                       "  type          16\n" +
+                       "  typename      boolean\n" +
+                       "  precision     1\n" +
+                       "  scale         0\n" +
+                       "  catalogname   null\n" +
+                       "  schemaname    \n" +
+                       "  tablename     table_test_psmetadata\n" +
+                       "  autoincrement false\n" +
+                       "  casesensitive false\n" +
+                       "  currency      false\n" +
+                       "  defwritable   false\n" +
+                       "  nullable      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    \n" +
+                       "  tablename     table_test_psmetadata\n" +
+                       "  autoincrement false\n" +
+                       "  casesensitive true\n" +
+                       "  currency      false\n" +
+                       "  defwritable   false\n" +
+                       "  nullable      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      clob\n" +
+                       "  precision     0\n" +
+                       "  scale         0\n" +
+                       "  catalogname   null\n" +
+                       "  schemaname    \n" +
+                       "  tablename     table_test_psmetadata\n" +
+                       "  autoincrement false\n" +
+                       "  casesensitive true\n" +
+                       "  currency      false\n" +
+                       "  defwritable   false\n" +
+                       "  nullable      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 32\n" +
+                       "  scale     0\n" +
+                       "  type      4\n" +
+                       "  typename  int\n" +
+                       "  classname java.lang.Integer\n" +
+                       "  mode      1 (IN)\n" +
+                       "0. true\ttrue\n");
        }
 
        private void Test_PSsomeamount() {
                sb.setLength(0);        // clear the output log buffer
 
-               Statement stmt = null;
+               PreparedStatement pstmt = null;
+               ResultSet rs = null;
                try {
-                       stmt = con.createStatement();
+                       // >> true: auto commit should be on
+                       sb.append("0. true\t" + 
con.getAutoCommit()).append("\n");
+
+                       sb.append("1. Preparing and executing a unique 
statement").append("\n");
+                       for (int i = 0; i < 120; i++) {
+                               pstmt = con.prepareStatement("select " + i + ", 
" + i + " = ?");
+                               pstmt.setInt(1, i);
+                               rs = pstmt.executeQuery();
+                               if (rs.next() && i % 20 == 0) {
+                                       sb.append(rs.getInt(1)).append(", 
").append(rs.getBoolean(2)).append("\n");
+                               }
+                               /* next call should cause resources on the 
server to be freed */
+                               pstmt.close();
+                       }
                } catch (SQLException e) {
                        sb.append("FAILED: 
").append(e.getMessage()).append("\n");
                }
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to