Changeset: 59309e3e6daa for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/59309e3e6daa
Modified Files:
tests/JDBC_API_Tester.java
Branch: default
Log Message:
Speed up Test_Sbatching() by including: SET sys.optimizer = 'minimal_pipe'
Also some other small improvements added.
diffs (143 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
@@ -1232,9 +1232,11 @@ final public class JDBC_API_Tester {
sb.append("should have seen a
ResultSet!");
ResultSet rs = pstmt.getResultSet();
- if (!rs.next())
- sb.append("ResultSet is empty");
- sb.append(" result: ").append(rs.getString(1));
+ if (rs != null) {
+ if (!rs.next())
+ sb.append("ResultSet is empty");
+ sb.append(" result:
").append(rs.getString(1));
+ }
// close the connection and associated resources
pstmt.getConnection().close();
@@ -1511,7 +1513,7 @@ final public class JDBC_API_Tester {
pstmt = con.prepareStatement("select " + i + ",
" + i + " = ?");
pstmt.setInt(1, i);
rs = pstmt.executeQuery();
- if (rs.next() && i % 20 == 0) {
+ if (rs != null && 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 */
@@ -1550,7 +1552,7 @@ final public class JDBC_API_Tester {
pstmt = con.prepareStatement("select " + i + ",
" + i + " = ?");
pstmt.setInt(1, i);
rs = pstmt.executeQuery();
- if (rs.next() && i % 1000 == 0) {
+ if (rs != null && rs.next() && i % 1000 == 0) {
sb.append(rs.getInt(1)).append(",
").append(rs.getBoolean(2)).append("\n");
}
/* next call should cause resources on the
server to be freed */
@@ -1752,10 +1754,11 @@ final public class JDBC_API_Tester {
}
sb.append("2. inserting a record...");
- java.util.Date d = new java.util.Date();
- pstmt.setTime(1, new java.sql.Time(d.getTime()));
- pstmt.setTimestamp(2, new
java.sql.Timestamp(d.getTime()));
- pstmt.setDate(3, new java.sql.Date(d.getTime()));
+ final java.util.Date d = new java.util.Date();
+ final long tm = d.getTime();
+ pstmt.setTime(1, new java.sql.Time(tm));
+ pstmt.setTimestamp(2, new java.sql.Timestamp(tm));
+ pstmt.setDate(3, new java.sql.Date(tm));
pstmt.executeUpdate();
sb.append(" passed\n");
@@ -1769,20 +1772,20 @@ final public class JDBC_API_Tester {
rs = pstmt.executeQuery();
sb.append(" passed\n");
- while (rs.next()) {
+ while (rs != null && rs.next()) {
for (int j = 1; j <= 3; j++) {
sb.append((j+4)).append(".
retrieving...");
- java.util.Date x =
(java.util.Date)(rs.getObject(j));
+ Object x = rs.getObject(j);
boolean matches = false;
- if (x instanceof Time) {
+ if (x instanceof java.sql.Time) {
sb.append(" (Time)");
- matches = (new
Time(d.getTime())).toString().equals(x.toString());
- } else if (x instanceof Date) {
+ matches = (new
java.sql.Time(tm)).toString().equals(x.toString());
+ } else if (x instanceof java.sql.Date) {
sb.append(" (Date)");
- matches = (new
Date(d.getTime())).toString().equals(x.toString());
- } else if (x instanceof Timestamp) {
+ matches = (new
java.sql.Date(tm)).toString().equals(x.toString());
+ } else if (x instanceof
java.sql.Timestamp) {
sb.append(" (Timestamp)");
- matches = (new
Timestamp(d.getTime())).toString().equals(x.toString());
+ matches = (new
java.sql.Timestamp(tm)).toString().equals(x.toString());
}
if (matches) {
sb.append(" passed\n");
@@ -2027,7 +2030,7 @@ final public class JDBC_API_Tester {
" freq double ," +
" bw double ," +
" type decimal(1,0)," +
- " imageurl varchar(100)," +
+ " imageurl url(100)," +
" comment varchar(100)," +
" CONSTRAINT htmtest_htmid_pkey PRIMARY
KEY (htmid)" +
")" );
@@ -2156,6 +2159,8 @@ final public class JDBC_API_Tester {
sb.append("Called Prepared procedure (with NULLs):
").append(proc_nm).append("\n");
showTblContents(tbl_nm);
+ cstmt.clearParameters();
+
sb.append("Test completed. Cleanup procedure and
table.\n");
stmt.execute("DROP PROCEDURE IF EXISTS " + proc_nm +
";");
stmt.execute("DROP TABLE IF EXISTS " + tbl_nm +
";");
@@ -2964,6 +2969,9 @@ final public class JDBC_API_Tester {
else
sb.append("passed\n");
+ // for large batches of DML always set sys.optimizer =
'minimal_pipe'. It makes a big difference in performance.
+ stmt.execute("SET sys.optimizer = 'minimal_pipe'");
+
// start batching a large amount of inserts
for (int i = 1; i <= 3432; i++) {
stmt.addBatch("INSERT INTO Test_Sbatching
VALUES (" + i + ")");
@@ -3808,9 +3816,10 @@ final public class JDBC_API_Tester {
if (rs2 != null) {
sb.append("List TableTypes:\n");
while (rs2.next()) {
+ String tt = rs2.getString(1);
// post Oct2020 releases the STREAM
TABLE type is removed, so filter it out for a stable output
- if (!"STREAM
TABLE".equals(rs2.getString(1)))
-
sb.append(rs2.getString(1)).append("\n");
+ if (!"STREAM TABLE".equals(tt))
+ sb.append(tt).append("\n");
}
rs2.close();
}
@@ -4055,9 +4064,9 @@ final public class JDBC_API_Tester {
sb.append("getQueryTimeout must give 0:
").append(st.getQueryTimeout()).append("\n");
st.close();
- st.setQueryTimeout(5);
+ st.setQueryTimeout(7);
con.isValid(3);
- sb.append("getQueryTimeout must give 5:
").append(st.getQueryTimeout()).append("\n");
+ sb.append("getQueryTimeout must give 7:
").append(st.getQueryTimeout()).append("\n");
st.close();
} catch (SQLException se) {
sb.append(se.getMessage()).append("\n");
@@ -4070,7 +4079,7 @@ final public class JDBC_API_Tester {
"getQueryTimeout must give 5: 5\n" +
"getQueryTimeout must give 0: 0\n" +
"getQueryTimeout must give 0: 0\n" +
- "getQueryTimeout must give 5: 5\n");
+ "getQueryTimeout must give 7: 7\n");
}
private void Bug_LargeQueries_6571_6693(String arg0) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list