@Override @Suspendable public void start() throws Exception { JsonObject config = new JsonObject().put("url", "jdbc:hsqldb:mem:test?shutdown=true") .put("driver_class", "org.hsqldb.jdbcDriver"); JDBCClient jdbc = JDBCClient.createShared(vertx, config); // Get a connection try (SQLConnection conn = awaitResult(jdbc::getConnection)) { // Create a table Void v = awaitResult(h -> conn.execute("CREATE TABLE test(col VARCHAR(20))", h)); // Insert some stuff for (int i = 0; i < 10; i++) { int ii = i; UpdateResult res = awaitResult(h -> conn.update("INSERT INTO test (col) VALUES ('val" + ii + "')", h)); System.out.println("Rows updated: " + res.getUpdated()); } // Select the results ResultSet res = awaitResult(h -> conn.query("SELECT * FROM test", h)); System.out.println("Selected " + res.getNumRows() + " results"); res.getResults().forEach(System.out::println); } }
@Override public int getDeletedInstances() { return updateResult.getUpdated(); }
public static void toJson(UpdateResult obj, java.util.Map<String, Object> json) { if (obj.getKeys() != null) { json.put("keys", obj.getKeys()); } json.put("updated", obj.getUpdated()); } }
/** * Checks the UpdateResult and informs the Handler with an error, if needed * * @param updateResult * the result to be checked * @param resultHandler * the {@link Handler} to be informed */ private void checkUpdateResult(SqlSequence seq, AsyncResult<UpdateResult> updateResult, Handler<AsyncResult<Void>> resultHandler) { if (updateResult.failed()) { Exception we = updateResult.cause() instanceof DuplicateKeyException ? (DuplicateKeyException) updateResult.cause() : new WriteException(updateResult.cause()); resultHandler.handle(Future.failedFuture(we)); } else { UpdateResult res = updateResult.result(); if (res.getUpdated() != 1) { String message = String.format("Error inserting a record, expected %d records saved, but was %d", 1, res.getUpdated()); resultHandler.handle(Future.failedFuture(new InsertException(message))); } else { resultHandler.handle(Future.succeededFuture()); } } }
@Override public CompletableFuture<Integer> update(final String sql, final GeneratedKeyReader generatedKeyReader, final StatementSetter pss) { LOGGER.debug("Connection [{}] - Execute update query: [{}]", connectionNumber, sql); Vertx3Statement statement = new Vertx3Statement(); pss.set(statement); CompletableFuture<Integer> result = new CompletableFuture<>(); connection.updateWithParams(sql, statement.getParams(), handler -> { UpdateResult updateResult = handler.result(); if (handler.succeeded()) { generatedKeyReader.read(new Vertx3GeneratedKeysResultSet(updateResult.getKeys(), generatedKeyReader.generatedColumnNames())); result.complete(updateResult.getUpdated()); } else { Throwable cause = handler.cause(); LOGGER.error("Exception thrown during update execution", cause); result.completeExceptionally(cause); } }); return result; }
private Completable delete(SQLConnection connection, String id) { String sql = "DELETE FROM Articles WHERE id = ?"; JsonArray params = new JsonArray().add(Integer.valueOf(id)); return connection.rxUpdateWithParams(sql, params) .doFinally(connection::close) .flatMapCompletable(ur -> ur.getUpdated() == 0 ? Completable .error(new NoSuchElementException("No article with id " + id)) : Completable.complete() ); }
public void delete(String id, Handler<ExtendedAsyncResult<Void>> fut) { PostgresQuery q = pg.getQuery(); String sql = "DELETE FROM " + table + " WHERE " + idSelect; JsonArray jsa = new JsonArray(); jsa.add(id); q.updateWithParams(sql, jsa, res -> { if (res.failed()) { fut.handle(new Failure<>(INTERNAL, res.cause())); } else { UpdateResult result = res.result(); if (result.getUpdated() > 0) { fut.handle(new Success<>()); } else { fut.handle(new Failure<>(NOT_FOUND, id)); } q.close(); } }); }
private Completable update(SQLConnection connection, String id, Article article) { String sql = "UPDATE articles SET title = ?, url = ? WHERE id = ?"; JsonArray params = new JsonArray().add(article.getTitle()) .add(article.getUrl()) .add(Integer.valueOf(id)); return connection.rxUpdateWithParams(sql, params) .flatMapCompletable(ur -> ur.getUpdated() == 0 ? Completable .error(new NoSuchElementException("No article with id " + id)) : Completable.complete() ) .doFinally(connection::close); }
@Test public void testGeo(TestContext context) { Async async = context.async(); // JsonArray array = new JsonArray().add(9).add(new SqlGeoPointTypeHandler.SqlFunction("GeomFromText", "POINT(18 // -63)")); JsonArray array = new JsonArray().add(11).add("POINT(18 -63)"); String insertExpression = "insert into GeoPointRecord set id=?, point = GeomFromText(?) "; // "insert into GeoPointRecord set id=?, point = GeomFromText(?) "; SqlUtil.updateWithParams((MySqlDataStore) getDataStore(context), insertExpression, array, ur -> { if (ur.failed()) { LOGGER.error("Error deleting", ur.cause()); async.complete(); } else { UpdateResult res = ur.result(); LOGGER.info("deleted: " + res.getUpdated()); async.complete(); } }); }
@Test public void testDeleteIN(TestContext context) { Async async = context.async(); JsonArray array = new JsonArray().add("1").add("2").add("3"); String insertExpression = "Delete from MiniMapper where id IN ( ?, ?, ?); "; SqlUtil.updateWithParams((MySqlDataStore) getDataStore(context), insertExpression, array, ur -> { if (ur.failed()) { LOGGER.error("Error deleting", ur.cause()); async.complete(); } else { UpdateResult res = ur.result(); LOGGER.info("deleted: " + res.getUpdated()); async.complete(); } }); }
protected void assertUpdate(UpdateResult result, int updated, boolean generatedKeys) { assertNotNull(result); assertEquals(updated, result.getUpdated()); if (generatedKeys) { JsonArray keys = result.getKeys(); assertNotNull(keys); assertEquals(updated, keys.size()); Set<Integer> numbers = new HashSet<>(); for (int i = 0; i < updated; i++) { assertTrue(keys.getValue(i) instanceof Integer); assertTrue(numbers.add(i)); } } }
private void assertUpdate(UpdateResult result, int updated, boolean generatedKeys) { assertNotNull(result); assertEquals(updated, result.getUpdated()); if (generatedKeys) { JsonArray keys = result.getKeys(); assertNotNull(keys); assertEquals(updated, keys.size()); Set<Integer> numbers = new HashSet<>(); for (int i = 0; i < updated; i++) { assertTrue(keys.getValue(i) instanceof Integer); assertTrue(numbers.add(i)); } } }
private void assertUpdate(UpdateResult result, int updated, boolean generatedKeys) { assertNotNull(result); assertEquals(updated, result.getUpdated()); if (generatedKeys) { JsonArray keys = result.getKeys(); assertNotNull(keys); assertEquals(updated, keys.size()); Set<Integer> numbers = new HashSet<>(); for (int i = 0; i < updated; i++) { assertTrue(keys.getValue(i) instanceof Integer); assertTrue(numbers.add(i)); } } }
@Test public void testDeleteWithParams() { String sql = "DELETE FROM delete_table WHERE id = ?;"; JsonArray params = new JsonArray().add(2); connection().updateWithParams(sql, params, onSuccess(result -> { assertNotNull(result); assertEquals(1, result.getUpdated()); testComplete(); })); await(); }
@Test public void testDeleteWithParams() { String sql = "DELETE FROM delete_table WHERE id = ?;"; JsonArray params = new JsonArray().add(2); connection().updateWithParams(sql, params, onSuccess(result -> { assertNotNull(result); assertEquals(1, result.getUpdated()); testComplete(); })); await(); }
@Test public void testDelete() { String sql = "DELETE FROM delete_table WHERE id = 1;"; connection().update(sql, onSuccess(result -> { assertNotNull(result); assertEquals(1, result.getUpdated()); testComplete(); })); await(); }
context.assertNotNull(updateRes); context.assertNotNull(selectRes); context.assertEquals(1, updateRes.getUpdated()); context.assertEquals("Adele", selectRes.getResults().get(0).getString(0)); async.complete();
@Test public void testUpdateResult() { assertEquals(updated, ur.getUpdated()); assertEquals(keys.size(), ur.getKeys().size()); assertEquals(keys, ur.getKeys()); }
@Test public void testDelete() { String sql = "DELETE FROM delete_table WHERE id = 1;"; connection().update(sql, onSuccess(result -> { assertNotNull(result); assertEquals(1, result.getUpdated()); testComplete(); })); await(); }
conn1.setAutoCommit(true, ar6 -> { ensureSuccess(context, ar6); context.assertEquals(1, ar5.result().getUpdated()); client.getConnection(ar7 -> { ensureSuccess(context, ar7);