@Test(groups = "short") @CassandraVersion( value = "2.0.7", description = "DELETE..IF EXISTS only supported in 2.0.7+ (CASSANDRA-5708)") public void conditionalDeletesTest() throws Exception { session() .execute(String.format("INSERT INTO %s.test_int (k, a, b) VALUES (1, 1, 1)", keyspace)); Statement delete; Row row; delete = delete().from(keyspace, TABLE_INT).where(eq("k", 2)).ifExists(); row = session().execute(delete).one(); assertFalse(row.getBool("[applied]")); delete = delete().from(keyspace, TABLE_INT).where(eq("k", 1)).ifExists(); row = session().execute(delete).one(); assertTrue(row.getBool("[applied]")); session() .execute(String.format("INSERT INTO %s.test_int (k, a, b) VALUES (1, 1, 1)", keyspace)); delete = delete().from(keyspace, TABLE_INT).where(eq("k", 1)).onlyIf(eq("a", 1)).and(eq("b", 2)); row = session().execute(delete).one(); assertFalse(row.getBool("[applied]")); delete = delete().from(keyspace, TABLE_INT).where(eq("k", 1)).onlyIf(eq("a", 1)).and(eq("b", 1)); row = session().execute(delete).one(); assertTrue(row.getBool("[applied]")); }
delete = delete().from("foo", "bar").where(eq("k1", "foo")).ifExists(); assertEquals(delete.toString(), query);
update("foo").with(set("v", 0)).onlyIf(contains("hello", "world")), insertInto("foo").value("k", 1).value("v", Sets.newHashSet(now())).ifNotExists(), delete().from("foo").where(eq("k", 2)).ifExists(), delete().from("foo").onlyIf(eq("k", 2)),
update("foo").with(set("v", 0)).onlyIf(contains("hello", "world")), insertInto("foo").value("k", 1).value("v", Sets.newHashSet(now())).ifNotExists(), delete().from("foo").where(eq("k", 2)).ifExists(), delete().from("foo").onlyIf(eq("k", 2)),
delete = delete().from("foo", "bar").where(eq("k1", "foo")).ifExists(); assertEquals(delete.toString(), query);
@Test(groups = "short") @CassandraVersion( value = "2.0.7", description = "DELETE..IF EXISTS only supported in 2.0.7+ (CASSANDRA-5708)") public void conditionalDeletesTest() throws Exception { session() .execute(String.format("INSERT INTO %s.test_int (k, a, b) VALUES (1, 1, 1)", keyspace)); Statement delete; Row row; delete = delete().from(keyspace, TABLE_INT).where(eq("k", 2)).ifExists(); row = session().execute(delete).one(); assertFalse(row.getBool("[applied]")); delete = delete().from(keyspace, TABLE_INT).where(eq("k", 1)).ifExists(); row = session().execute(delete).one(); assertTrue(row.getBool("[applied]")); session() .execute(String.format("INSERT INTO %s.test_int (k, a, b) VALUES (1, 1, 1)", keyspace)); delete = delete().from(keyspace, TABLE_INT).where(eq("k", 1)).onlyIf(eq("a", 1)).and(eq("b", 2)); row = session().execute(delete).one(); assertFalse(row.getBool("[applied]")); delete = delete().from(keyspace, TABLE_INT).where(eq("k", 1)).onlyIf(eq("a", 1)).and(eq("b", 1)); row = session().execute(delete).one(); assertTrue(row.getBool("[applied]")); }
@Inject public CassandraSieveDAO(Session session) { this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session); insertScriptStatement = session.prepare( insertInto(TABLE_NAME) .value(USER_NAME, bindMarker(USER_NAME)) .value(SCRIPT_NAME, bindMarker(SCRIPT_NAME)) .value(SCRIPT_CONTENT, bindMarker(SCRIPT_CONTENT)) .value(IS_ACTIVE, bindMarker(IS_ACTIVE)) .value(SIZE, bindMarker(SIZE))); selectScriptsStatement = session.prepare(getScriptsQuery()); selectScriptStatement = session.prepare(getScriptsQuery() .and(eq(SCRIPT_NAME, bindMarker(SCRIPT_NAME)))); updateScriptActivationStatement = session.prepare( update(TABLE_NAME) .with(set(IS_ACTIVE, bindMarker(IS_ACTIVE))) .where(eq(USER_NAME, bindMarker(USER_NAME))) .and(eq(SCRIPT_NAME, bindMarker(SCRIPT_NAME))) .ifExists()); deleteScriptStatement = session.prepare( delete() .from(TABLE_NAME) .where(eq(USER_NAME, bindMarker(USER_NAME))) .and(eq(SCRIPT_NAME, bindMarker(SCRIPT_NAME))) .ifExists()); }
/** * Adds {@code DeleteIfExists}-specific conditions to the statement * * @param condition {@code DeleteIfExists} condition */ @Override public void visit(DeleteIfExists condition) { Delete.Where delete = (Delete.Where) statement; delete.ifExists(); }
private PreparedStatement prepareRemoveUserStatement(Session session) { return session.prepare(delete() .from(TABLE_NAME) .where(eq(NAME, bindMarker(NAME))) .ifExists()); }