@Test public void testInstant(TestContext context) { Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); conn.execute("DROP TABLE IF EXISTS test_table", ar1 -> { ensureSuccess(context, ar1); conn.execute("CREATE TABLE test_table (instant TIMESTAMP)", ar2 -> { ensureSuccess(context, ar2); JsonArray args = new JsonArray().add(Instant.now()); String now = args.getString(0); conn.queryWithParams("INSERT INTO test_table (instant) VALUES (?)", args, ar3 -> { ensureSuccess(context, ar3); conn.query("SELECT instant FROM test_table", ar4 -> { ensureSuccess(context, ar4); // timestamps with out time zone are returned as strings, so we must compare to the original instant // ignoring the timezone offset (meaning ignore everything after char 23) compareInstantStrings( context, ar4.result().getResults().get(0).getString(0), now.substring(0, 23) ); async.complete(); }); }); }); }); }); }
Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); conn.execute("DROP TABLE IF EXISTS test_table", ar1 -> { ensureSuccess(context, ar1); conn.execute("CREATE TABLE test_table (timecolumn TIME)", ar2 -> { ensureSuccess(context, ar2); String someTime1 = "11:12:13.456"; String someTime2 = "01:02:00.120"; JsonArray args = new JsonArray().add(someTime1).add(someTime2).add(someTime3); conn.queryWithParams("INSERT INTO test_table (timecolumn) VALUES (?), (?), (?)", args, ar3 -> { ensureSuccess(context, ar3); conn.query("SELECT timecolumn FROM test_table", ar4 -> { ensureSuccess(context, ar4); String result1 = ar4.result().getResults().get(0).getString(0); String result2 = ar4.result().getResults().get(1).getString(0); String result3 = ar4.result().getResults().get(2).getString(0); compareTimeStrings(context, result1, someTime1); compareTimeStrings(context, result2, someTime2); compareTimeStrings(context, result3, someTime3); async.complete(); });
@Test public void testCommitWhenNotInTransaction(TestContext context) { int id = 0; String name = "adele"; Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setupSimpleTable(conn, ar2 -> { ensureSuccess(context, ar2); conn.setAutoCommit(false, ar3 -> { ensureSuccess(context, ar3); conn.updateWithParams("UPDATE test_table SET name=? WHERE id=?", new JsonArray().add(name).add(id), ar4 -> { ensureSuccess(context, ar4); conn.setAutoCommit(true, ar5 -> { ensureSuccess(context, ar5); conn.commit(ar6 -> { context.assertTrue(ar6.failed()); async.complete(); }); }); }); }); }); }); }
Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setSqlModeIfPossible(nothing -> { conn.execute("DROP TABLE IF EXISTS test_date_table", ar2 -> { ensureSuccess(context, ar2); conn.execute("CREATE TABLE test_date_table (id BIGINT, some_date DATE,some_timestamp TIMESTAMP)", ar3 -> { ensureSuccess(context, ar3); conn.updateWithParams("INSERT INTO test_date_table (id, some_date, some_timestamp) VALUES (?, ?, ?)", new JsonArray().add(1).add("2015-02-22").add(insertedTime1), ar4 -> { ensureSuccess(context, ar4); conn.updateWithParams("INSERT INTO test_date_table (id, some_date, some_timestamp) VALUES (?, ?, ?)", new JsonArray().add(2).add("2007-07-20").add(insertedTime2), ar5 -> { ensureSuccess(context, ar5); conn.query("SELECT id, some_date, some_timestamp FROM test_date_table ORDER BY id", ar6 -> { ensureSuccess(context, ar6); ResultSet results = ar6.result(); List<String> columns = results.getColumnNames(); JsonArray row1 = results.getResults().get(0); context.assertEquals(row1.getString(1), "2015-02-22"); context.assertEquals(row1.getString(2), getExpectedTime1()); JsonArray row2 = results.getResults().get(1); context.assertEquals(row2.getString(1), "2007-07-20"); context.assertEquals(row2.getString(2), getExpectedTime2());
@Test public void testTwoTransactionsAfterEachOther(TestContext context) { Async async = context.async(); client.getConnection(ar -> { if (ar.failed()) { context.fail(ar.cause()); return; } conn = ar.result(); conn.setAutoCommit(false, ar2 -> { ensureSuccess(context, ar2); conn.query("SELECT 1", ar3 -> { ensureSuccess(context, ar3); conn.commit(ar4 -> { ensureSuccess(context, ar4); conn.query("SELECT 2", ar5 -> { ensureSuccess(context, ar5); conn.commit(ar6 -> { ensureSuccess(context, ar6); conn.setAutoCommit(true, ar7 -> { ensureSuccess(context, ar7); async.complete(); }); }); }); }); }); }); }); }
@Test public void testUnhandledExceptionInHandlerRowStream(TestContext testContext) { this.<SQLRowStream>testUnhandledExceptionInHandler(testContext, (sqlConnection, handler) -> { sqlConnection.queryStream("SELECT name FROM test_table", handler); }); }
setupTestTable(conn, () -> { StringBuilder builder = new StringBuilder(); for (int i=0; i<NUM_ROWS; i++) {
Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setSqlModeIfPossible(nothing -> { conn.execute("DROP TABLE IF EXISTS test_date_table", ar2 -> { ensureSuccess(context, ar2); conn.execute("CREATE TABLE test_date_table (id BIGINT, some_date DATE,some_timestamp TIMESTAMP)", ar3 -> { ensureSuccess(context, ar3); conn.updateWithParams("INSERT INTO test_date_table (id, some_date, some_timestamp) VALUES (?, ?, ?)", new JsonArray().add(1).add("2015-02-22").add(insertedTime1), ar4 -> { ensureSuccess(context, ar4); conn.updateWithParams("INSERT INTO test_date_table (id, some_date, some_timestamp) VALUES (?, ?, ?)", new JsonArray().add(2).add("2007-07-20").add(insertedTime2), ar5 -> { ensureSuccess(context, ar5); conn.query("SELECT id, some_date, some_timestamp FROM test_date_table ORDER BY id", ar6 -> { ensureSuccess(context, ar6); ResultSet results = ar6.result(); List<String> columns = results.getColumnNames(); JsonArray row1 = results.getResults().get(0); context.assertEquals(row1.getString(1), "2015-02-22"); context.assertEquals(row1.getString(2), getExpectedTime1()); JsonArray row2 = results.getResults().get(1); context.assertEquals(row2.getString(1), "2007-07-20"); context.assertEquals(row2.getString(2), getExpectedTime2());
@Test public void testTwoTransactionsAfterEachOther(TestContext context) { Async async = context.async(); client.getConnection(ar -> { if (ar.failed()) { context.fail(ar.cause()); return; } conn = ar.result(); conn.setAutoCommit(false, ar2 -> { ensureSuccess(context, ar2); conn.query("SELECT 1", ar3 -> { ensureSuccess(context, ar3); conn.commit(ar4 -> { ensureSuccess(context, ar4); conn.query("SELECT 2", ar5 -> { ensureSuccess(context, ar5); conn.commit(ar6 -> { ensureSuccess(context, ar6); conn.setAutoCommit(true, ar7 -> { ensureSuccess(context, ar7); async.complete(); }); }); }); }); }); }); }); }
@Test public void testUnhandledExceptionInHandlerResultSet(TestContext testContext) { this.<ResultSet>testUnhandledExceptionInHandler(testContext, (sqlConnection, handler) -> { sqlConnection.query("SELECT name FROM test_table", handler); }); }
setupTestTable(conn, () -> { StringBuilder builder = new StringBuilder(); for (int i=0; i<NUM_ROWS; i++) {
@Test public void testRollingBackWhenNotInTransaction(TestContext context) { int id = 0; String name = "adele"; Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setupSimpleTable(conn, ar2 -> { ensureSuccess(context, ar2); conn.setAutoCommit(false, ar3 -> { ensureSuccess(context, ar3); conn.updateWithParams("UPDATE test_table SET name=? WHERE id=?", new JsonArray().add(name).add(id), ar4 -> { ensureSuccess(context, ar4); conn.setAutoCommit(true, ar5 -> { ensureSuccess(context, ar5); conn.rollback(ar6 -> { context.assertTrue(ar6.failed()); async.complete(); }); }); }); }); }); }); }
Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setSqlModeIfPossible(nothing -> { conn.execute("DROP TABLE IF EXISTS test_date_table", ar2 -> { ensureSuccess(context, ar2); conn.execute("CREATE TABLE test_date_table (id BIGINT, some_date DATE,some_timestamp TIMESTAMP)", ar3 -> { ensureSuccess(context, ar3); conn.updateWithParams("INSERT INTO test_date_table (id, some_date, some_timestamp) VALUES (?, ?, ?)", new JsonArray().add(1).add("2015-02-22").add(insertedTime1), ar4 -> { ensureSuccess(context, ar4); conn.updateWithParams("INSERT INTO test_date_table (id, some_date, some_timestamp) VALUES (?, ?, ?)", new JsonArray().add(2).add("2007-07-20").add(insertedTime2), ar5 -> { ensureSuccess(context, ar5); conn.query("SELECT id, some_date, some_timestamp FROM test_date_table ORDER BY id", ar6 -> { ensureSuccess(context, ar6); ResultSet results = ar6.result(); List<String> columns = results.getColumnNames(); JsonArray row1 = results.getResults().get(0); context.assertEquals(row1.getString(1), "2015-02-22"); context.assertEquals(row1.getString(2), getExpectedTime1()); JsonArray row2 = results.getResults().get(1); context.assertEquals(row2.getString(1), "2007-07-20"); context.assertEquals(row2.getString(2), getExpectedTime2());
@Test public void testTwoTransactionsAfterEachOther(TestContext context) { Async async = context.async(); client.getConnection(ar -> { if (ar.failed()) { context.fail(ar.cause()); return; } conn = ar.result(); conn.setAutoCommit(false, ar2 -> { ensureSuccess(context, ar2); conn.query("SELECT 1", ar3 -> { ensureSuccess(context, ar3); conn.commit(ar4 -> { ensureSuccess(context, ar4); conn.query("SELECT 2", ar5 -> { ensureSuccess(context, ar5); conn.commit(ar6 -> { ensureSuccess(context, ar6); conn.setAutoCommit(true, ar7 -> { ensureSuccess(context, ar7); async.complete(); }); }); }); }); }); }); }); }
Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); conn.execute("DROP TABLE IF EXISTS test_table", ar1 -> { ensureSuccess(context, ar1); conn.execute("CREATE TABLE test_table (timecolumn TIME)", ar2 -> { ensureSuccess(context, ar2); String someTime1 = "11:12:13.456"; String someTime2 = "01:02:00.120"; JsonArray args = new JsonArray().add(someTime1).add(someTime2).add(someTime3); conn.queryWithParams("INSERT INTO test_table (timecolumn) VALUES (?), (?), (?)", args, ar3 -> { ensureSuccess(context, ar3); conn.query("SELECT timecolumn FROM test_table", ar4 -> { ensureSuccess(context, ar4); String result1 = ar4.result().getResults().get(0).getString(0); String result2 = ar4.result().getResults().get(1).getString(0); String result3 = ar4.result().getResults().get(2).getString(0); compareTimeStrings(context, result1, someTime1); compareTimeStrings(context, result2, someTime2); compareTimeStrings(context, result3, someTime3); async.complete(); });
@Test public void testInstant(TestContext context) { Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); conn.execute("DROP TABLE IF EXISTS test_table", ar1 -> { ensureSuccess(context, ar1); conn.execute("CREATE TABLE test_table (instant TIMESTAMP)", ar2 -> { ensureSuccess(context, ar2); JsonArray args = new JsonArray().add(Instant.now()); String now = args.getString(0); conn.queryWithParams("INSERT INTO test_table (instant) VALUES (?)", args, ar3 -> { ensureSuccess(context, ar3); conn.query("SELECT instant FROM test_table", ar4 -> { ensureSuccess(context, ar4); // timestamps with out time zone are returned as strings, so we must compare to the original instant // ignoring the timezone offset (meaning ignore everything after char 23) compareInstantStrings( context, ar4.result().getResults().get(0).getString(0), now.substring(0, 23) ); async.complete(); }); }); }); }); }); }
@Test public void testUnhandledExceptionInHandlerUpdateResult(TestContext testContext) { this.<UpdateResult>testUnhandledExceptionInHandler(testContext, (sqlConnection, handler) -> { sqlConnection.update("INSERT INTO test_table (name) VALUES ('pimpo')", handler); }); }