Changeset: 48633553f733 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/48633553f733
Modified Files:
src/test/java/JDBC_API_Tester.java
src/test/java/org/monetdb/jdbc/ApiTests.java
Branch: default
Log Message:
Convert Test_Csavepoints() -> ApiTests#testSavepoints()
diffs (199 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
@@ -175,135 +175,6 @@ public final class JDBC_API_Tester exten
}
@Test
- public void Test_Csavepoints() {
- sb.setLength(0); // clear the output log buffer
-
- Statement stmt = null;
- ResultSet rs = null;
- try {
- // >> true: auto commit should be on by default
- sb.append("0.
true\t").append(con.getAutoCommit()).append("\n");
-
- // savepoints require a non-autocommit connection
- try {
- sb.append("1. savepoint...");
- con.setSavepoint();
- sb.append("passed !!");
- } catch (SQLException e) {
- sb.append("expected msg:
").append(e.getMessage());
- }
- sb.append("\n");
-
- con.setAutoCommit(false);
- // >> true: auto commit should be on by default
- sb.append("0.
false\t").append(con.getAutoCommit()).append("\n");
-
- sb.append("2. savepoint...");
- /* make a savepoint, and discard it */
- con.setSavepoint();
- sb.append("passed\n");
-
- stmt = con.createStatement();
- stmt.executeUpdate("CREATE TABLE table_Test_Csavepoints
( id int, PRIMARY KEY (id) )");
-
- sb.append("3. savepoint...");
- Savepoint sp2 = con.setSavepoint("empty table");
- sb.append("passed\n");
-
- rs = stmt.executeQuery("SELECT id FROM
table_Test_Csavepoints");
- int i = 0;
- int items = 0;
- sb.append("4. table ").append(items).append(" items");
- while (rs.next()) {
- sb.append(", ").append(rs.getString("id"));
- i++;
- }
- if (i != items) {
- sb.append(" FAILED (").append(i).append(")");
- }
- sb.append(" passed\n");
-
- stmt.executeUpdate("INSERT INTO table_Test_Csavepoints
VALUES (1)");
- stmt.executeUpdate("INSERT INTO table_Test_Csavepoints
VALUES (2)");
- stmt.executeUpdate("INSERT INTO table_Test_Csavepoints
VALUES (3)");
-
- sb.append("5. savepoint...");
- Savepoint sp3 = con.setSavepoint("three values");
- sb.append("passed\n");
-
- rs = stmt.executeQuery("SELECT id FROM
table_Test_Csavepoints");
- i = 0;
- items = 3;
- sb.append("6. table ").append(items).append(" items");
- while (rs.next()) {
- sb.append(", ").append(rs.getString("id"));
- i++;
- }
- if (i != items) {
- sb.append(" FAILED (").append(i).append(")");
- }
- sb.append(" passed\n");
-
- sb.append("7. release...");
- con.releaseSavepoint(sp3);
- sb.append("passed\n");
-
- rs = stmt.executeQuery("SELECT id FROM
table_Test_Csavepoints");
- i = 0;
- items = 3;
- sb.append("8. table ").append(items).append(" items");
- while (rs.next()) {
- sb.append(", ").append(rs.getString("id"));
- i++;
- }
- if (i != items) {
- sb.append(" FAILED (").append(i).append(") :(");
- }
- sb.append(" passed\n");
-
- sb.append("9. rollback...");
- con.rollback(sp2);
- sb.append("passed\n");
-
- rs = stmt.executeQuery("SELECT id FROM
table_Test_Csavepoints");
- i = 0;
- items = 0;
- sb.append("10. table ").append(items).append(" items");
- while (rs.next()) {
- sb.append(", ").append(rs.getString("id"));
- i++;
- }
- if (i != items) {
- sb.append(" FAILED (").append(i).append(") :(");
- }
- sb.append(" passed");
-
- con.rollback();
-
- // restore auto commit mode
- con.setAutoCommit(true);
- } catch (SQLException e) {
- sb.append("FAILED:
").append(e.getMessage()).append("\n");
- }
-
- closeStmtResSet(stmt, rs);
-
- compareExpectedOutput("Test_Csavepoints",
- "0. true true\n" +
- "1. savepoint...expected msg: SAVEPOINT: not allowed in
auto commit mode\n" +
- "0. false false\n" +
- "2. savepoint...passed\n" +
- "3. savepoint...passed\n" +
- "4. table 0 items passed\n" +
- "5. savepoint...passed\n" +
- "6. table 3 items, 1, 2, 3 passed\n" +
- "7. release...passed\n" +
- "8. table 3 items, 1, 2, 3 passed\n" +
- "9. rollback...passed\n" +
- "10. table 0 items passed");
- }
-
- @Test
public void Test_Ctransaction() {
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
@@ -89,6 +89,20 @@ public class ApiTests {
return DriverManager.getConnection(Config.getServerURL());
}
+ private String concatenateColumn(String sep, String query) throws
SQLException {
+ StringBuilder builder = new StringBuilder();
+ boolean first = true;
+ try (ResultSet rs = stmt.executeQuery(query)) {
+ while (rs.next()) {
+ if (!first)
+ builder.append(sep);
+ first = false;
+ builder.append(rs.getString(1));
+ }
+ }
+ return builder.toString();
+ }
+
private int queryInt(String query) throws SQLException {
try (ResultSet rs = stmt.executeQuery(query)) {
assertTrue(rs.next(), query);
@@ -260,5 +274,35 @@ public class ApiTests {
conn.setAutoCommit(true);
}
+
+ @Test
+ public void testSavepoints() throws SQLException {
+ // savepoints not allowed in autocommit mode
+ assertTrue(conn.getAutoCommit());
+ assertSQLException("SAVEPOINT: not allowed in auto commit", ()
-> conn.setSavepoint());
+
+ conn.setAutoCommit(false);
+ Savepoint savepoint1 = conn.setSavepoint();
+ assertNotNull(savepoint1);
+
+ stmt.executeUpdate("CREATE TABLE test_savepoints(i INT)");
+ Savepoint savepoint2 = conn.setSavepoint("empty table");
+ assertNotNull(savepoint2);
+
+ assertEquals("", concatenateColumn(",", "SELECT i FROM
test_savepoints"));
+ stmt.executeUpdate("INSERT INTO test_savepoints VALUES (1),
(2), (3)");
+ Savepoint savepoint3 = conn.setSavepoint("three values");
+ assertNotNull(savepoint3);
+ assertEquals("1,2,3", concatenateColumn(",", "SELECT i FROM
test_savepoints"));
+
+ conn.releaseSavepoint(savepoint3);
+ assertEquals("1,2,3", concatenateColumn(",", "SELECT i FROM
test_savepoints"));
+
+ conn.rollback(savepoint2);
+ assertEquals("", concatenateColumn(",", "SELECT i FROM
test_savepoints"));
+
+ conn.rollback();
+ conn.setAutoCommit(true);
+ }
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]