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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list