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