com.datastax.driver.core.ResultSet.wasApplied()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(12.5k)|赞(0)|评价(0)|浏览(88)

本文整理了Java中com.datastax.driver.core.ResultSet.wasApplied方法的一些代码示例,展示了ResultSet.wasApplied的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ResultSet.wasApplied方法的具体详情如下:
包路径:com.datastax.driver.core.ResultSet
类名称:ResultSet
方法名:wasApplied

ResultSet.wasApplied介绍

[英]If the query that produced this ResultSet was a conditional update, return whether it was successfully applied.

This is equivalent to calling:

rs.one().getBool("[applied]");

For consistency, this method always returns true for non-conditional queries (although there is no reason to call the method in that case). This is also the case for conditional DDL statements ( CREATE KEYSPACE... IF NOT EXISTS, CREATE TABLE... IF), for which Cassandra doesn't return an [applied] column.

Note that, for versions of Cassandra strictly lower than 2.0.9 and 2.1.0-rc2, a server-side bug (CASSANDRA-7337) causes this method to always return true for batches containing conditional queries.
[中]如果生成此结果集的查询是条件更新,则返回是否已成功应用。
这相当于呼叫:

rs.one().getBool("[applied]");

为了一致性,对于非条件查询,此方法始终返回true(尽管在这种情况下没有理由调用此方法)。条件DDL语句也是如此(CREATE KEYSPACE…如果不存在,CREATE TABLE…如果不存在),Cassandra不会为其返回[applied]列。
请注意,对于严格低于2.0.9和2.1.0-rc2的Cassandra版本,服务器端错误(Cassandra-7337)会导致此方法对于包含条件查询的批始终返回true。

代码示例

代码示例来源:origin: testcontainers/testcontainers-java

@Override
public void execute(String statement, String scriptPath, int lineNumber, boolean continueOnError, boolean ignoreFailedDrops) {
  try {
    ResultSet result = getConnection().execute(statement);
    if (result.wasApplied()) {
      log.debug("Statement {} was applied", statement);
    } else {
      throw new ScriptStatementFailedException(statement, lineNumber, scriptPath);
    }
  } catch (DriverException e) {
    throw new ScriptStatementFailedException(statement, lineNumber, scriptPath, e);
  }
}

代码示例来源:origin: Netflix/conductor

@Override
public boolean removeWorkflow(String workflowId) {
  Workflow workflow = getWorkflow(workflowId, true);
  boolean removed = false;
  // TODO: calculate number of shards and iterate
  if (workflow != null) {
    try {
      recordCassandraDaoRequests("removeWorkflow", "n/a", workflow.getWorkflowName());
      ResultSet resultSet = session.execute(deleteWorkflowStatement.bind(UUID.fromString(workflowId), DEFAULT_SHARD_ID));
      if (resultSet.wasApplied()) {
        removed = true;
      }
    } catch (Exception e) {
      Monitors.error(CLASS_NAME, "removeWorkflow");
      String errorMsg = String.format("Failed to remove workflow: %s", workflowId);
      LOGGER.error(errorMsg, e);
      throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, errorMsg);
    }
    workflow.getTasks().forEach(this::removeTaskLookup);
  }
  return removed;
}

代码示例来源:origin: Netflix/conductor

private boolean removeTask(Task task) {
  // TODO: calculate shard number based on seq and maxTasksPerShard
  try {
    // get total tasks for this workflow
    WorkflowMetadata workflowMetadata = getWorkflowMetadata(task.getWorkflowInstanceId());
    int totalTasks = workflowMetadata.getTotalTasks();
    // remove from task_lookup table
    removeTaskLookup(task);
    recordCassandraDaoRequests("removeTask", task.getTaskType(), task.getWorkflowType());
    // delete task from workflows table and decrement total tasks by 1
    BatchStatement batchStatement = new BatchStatement();
    batchStatement.add(deleteTaskStatement.bind(UUID.fromString(task.getWorkflowInstanceId()), DEFAULT_SHARD_ID, task.getTaskId()));
    batchStatement.add(updateTotalTasksStatement.bind(totalTasks - 1, UUID.fromString(task.getWorkflowInstanceId()), DEFAULT_SHARD_ID));
    ResultSet resultSet = session.execute(batchStatement);
    return resultSet.wasApplied();
  } catch (Exception e) {
    Monitors.error(CLASS_NAME, "removeTask");
    String errorMsg = String.format("Failed to remove task: %s", task.getTaskId());
    LOGGER.error(errorMsg, e);
    throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, errorMsg);
  }
}

代码示例来源:origin: testcontainers/testcontainers-java

private void testInitScript(CassandraContainer cassandraContainer) {
  ResultSet resultSet = performQuery(cassandraContainer, "SELECT * FROM keySpaceTest.catalog_category");
  assertTrue("Query was not applied", resultSet.wasApplied());
  Row row = resultSet.one();
  assertEquals("Inserted row is not in expected state", 1, row.getLong(0));
  assertEquals("Inserted row is not in expected state", "test_category", row.getString(1));
}

代码示例来源:origin: testcontainers/testcontainers-java

@Test
public void testCassandraQueryWaitStrategy() {
  try (
    CassandraContainer cassandraContainer = new CassandraContainer<>()
      .waitingFor(new CassandraQueryWaitStrategy())
  ) {
    cassandraContainer.start();
    ResultSet resultSet = performQuery(cassandraContainer, "SELECT release_version FROM system.local");
    assertTrue("Query was not applied", resultSet.wasApplied());
  }
}

代码示例来源:origin: testcontainers/testcontainers-java

@Test
public void testSimple() {
  try (CassandraContainer cassandraContainer = new CassandraContainer<>()) {
    cassandraContainer.start();
    ResultSet resultSet = performQuery(cassandraContainer, "SELECT release_version FROM system.local");
    assertTrue("Query was not applied", resultSet.wasApplied());
    assertNotNull("Result set has no release_version", resultSet.one().getString(0));
  }
}

代码示例来源:origin: testcontainers/testcontainers-java

@Test
public void testSpecificVersion() {
  String cassandraVersion = "3.0.15";
  try (CassandraContainer cassandraContainer = new CassandraContainer<>("cassandra:" + cassandraVersion)) {
    cassandraContainer.start();
    ResultSet resultSet = performQuery(cassandraContainer, "SELECT release_version FROM system.local");
    assertTrue("Query was not applied", resultSet.wasApplied());
    assertEquals("Cassandra has wrong version", cassandraVersion, resultSet.one().getString(0));
  }
}

代码示例来源:origin: testcontainers/testcontainers-java

@Test
public void testCassandraGetCluster() {
  try (CassandraContainer cassandraContainer = new CassandraContainer<>()) {
    cassandraContainer.start();
    ResultSet resultSet = performQuery(cassandraContainer.getCluster(), "SELECT release_version FROM system.local");
    assertTrue("Query was not applied", resultSet.wasApplied());
    assertNotNull("Result set has no release_version", resultSet.one().getString(0));
  }
}

代码示例来源:origin: testcontainers/testcontainers-java

@Test
public void testConfigurationOverride() {
  try (
    CassandraContainer cassandraContainer = new CassandraContainer<>()
      .withConfigurationOverride("cassandra-test-configuration-example")
  ) {
    cassandraContainer.start();
    ResultSet resultSet = performQuery(cassandraContainer, "SELECT cluster_name FROM system.local");
    assertTrue("Query was not applied", resultSet.wasApplied());
    assertEquals("Cassandra configuration is not overridden", TEST_CLUSTER_NAME_IN_CONF, resultSet.one().getString(0));
  }
}

代码示例来源:origin: kaaproject/kaa

private T insertLocked(T entity) {
 Insert insert = insertInto(getColumnFamilyName()).ifNotExists();
 CassandraEntityMapper<T> entityMapper = CassandraEntityMapper.getEntityMapperForClass(
   getColumnFamilyClass(), cassandraClient);
 for (String name : entityMapper.getKeyColumnNames()) {
  insert.value(name, entityMapper.getColumnValueForName(name, entity, cassandraClient));
 }
 for (String name : entityMapper.getNonKeyColumnNames()) {
  insert.value(name, entityMapper.getColumnValueForName(name, entity, cassandraClient));
 }
 insert.setConsistencyLevel(getWriteConsistencyLevel());
 ResultSet res = execute(insert);
 if (!res.wasApplied()) {
  LOG.error("[{}] Can't insert entity. Entity already exists!", getColumnFamilyClass());
  throw new KaaOptimisticLockingFailureException("Can't insert entity. Entity already exists!");
 } else {
  Clause[] whereClauses = buildKeyClauses(entityMapper, entity);
  Select.Where where = select().from(getColumnFamilyName()).where(whereClauses[0]);
  if (whereClauses.length > 1) {
   for (int i = 1; i < whereClauses.length; i++) {
    where = where.and(whereClauses[i]);
   }
  }
  return findOneByStatement(where);
 }
}

代码示例来源:origin: kaaproject/kaa

if (!res.wasApplied()) {
 LOG.error("[{}] Can't update entity with version {}. Entity already changed!",
   getColumnFamilyClass(), version);

代码示例来源:origin: com.datastax.cassandra/cassandra-driver-core

/**
 * Test for #JAVA-358 - Directly expose CAS_RESULT_COLUMN.
 *
 * <p>This test makes sure that the boolean flag {@code ResultSet.wasApplied()} is false when we
 * try to insert a row which already exists.
 *
 * @see ResultSet#wasApplied()
 */
@Test(groups = "short")
public void insert_if_not_exist_should_support_wasApplied_boolean() {
 // First, make sure the test table and the row exist
 session().execute("CREATE TABLE IF NOT EXISTS Java358 (key int primary key, value int)");
 ResultSet rs;
 rs = session().execute("INSERT INTO Java358(key, value) VALUES (42, 42) IF NOT EXISTS");
 assertTrue(rs.wasApplied());
 // Then, make sure the flag reports correctly that we did not create a new row
 rs = session().execute("INSERT INTO Java358(key, value) VALUES (42, 42) IF NOT EXISTS");
 assertFalse(rs.wasApplied());
}

代码示例来源:origin: com.datastax.cassandra/cassandra-driver-core

@Test(groups = "short")
public void singleUpdateTest() {
 session().execute("TRUNCATE test");
 session().execute("INSERT INTO test (k1, k2, v) VALUES (1, 1, 1)");
 ResultSet rs = session().execute("UPDATE test SET v = 3 WHERE k1 = 1 AND k2 = 1 IF v = 2");
 assertFalse(rs.wasApplied());
 // Ensure that reading the status does not consume a row:
 assertFalse(rs.isExhausted());
 rs = session().execute("UPDATE test SET v = 3 WHERE k1 = 1 AND k2 = 1 IF v = 1");
 assertTrue(rs.wasApplied());
 assertFalse(rs.isExhausted());
 // Non-conditional statement
 rs = session().execute("UPDATE test SET v = 4 WHERE k1 = 1 AND k2 = 1");
 assertTrue(rs.wasApplied());
}

代码示例来源:origin: com.datastax.cassandra/cassandra-driver-core

/**
  * Test for #JAVA-358 - Directly expose CAS_RESULT_COLUMN.
  *
  * <p>This test makes sure that the boolean flag {@code ResultSet.wasApplied()} is false when we
  * try to delete a row which does not exist.
  *
  * @see ResultSet#wasApplied()
  */
 @Test(groups = "short")
 public void delete_if_not_exist_should_support_wasApplied_boolean() {
  // First, make sure the test table and the row exist
  session().execute("CREATE TABLE IF NOT EXISTS Java358 (key int primary key, value int)");
  session().execute("INSERT INTO Java358(key, value) VALUES (42, 42)");

  // Then, make sure the flag reports correctly that we did delete the row
  ResultSet rs;
  rs = session().execute("DELETE FROM Java358 WHERE KEY=42 IF EXISTS");
  assertTrue(rs.wasApplied());

  // Finally, make sure the flag reports correctly that we did did not delete an non-existing row
  rs = session().execute("DELETE FROM Java358 WHERE KEY=42 IF EXISTS");
  assertFalse(rs.wasApplied());
 }
}

代码示例来源:origin: com.datastax.cassandra/cassandra-driver-core

@Test(groups = "short")
public void multipageResultSetTest() {
 session().execute("TRUNCATE test");
 session().execute("INSERT INTO test (k1, k2, v) VALUES (1, 1, 1)");
 session().execute("INSERT INTO test (k1, k2, v) VALUES (1, 2, 1)");
 // This is really contrived, we just want to cover the code path in
 // ArrayBackedResultSet#MultiPage.
 // Currently CAS update results are never multipage, so it's hard to come up with a meaningful
 // example.
 ResultSet rs =
   session().execute(new SimpleStatement("SELECT * FROM test WHERE k1 = 1").setFetchSize(1));
 assertTrue(rs.wasApplied());
}

代码示例来源:origin: io.vertx/vertx-cassandra-client

@Override
 public boolean wasApplied() {
  return resultSet.wasApplied();
 }
}

代码示例来源:origin: com.datastax.cassandra/cassandra-driver-core

@Test(groups = "short")
public void batchUpdateTest() {
 session().execute("TRUNCATE test");
 session().execute("INSERT INTO test (k1, k2, v) VALUES (1, 1, 1)");
 session().execute("INSERT INTO test (k1, k2, v) VALUES (1, 2, 1)");
 PreparedStatement ps =
   session().prepare("UPDATE test SET v = :new WHERE k1 = :k1 AND k2 = :k2 IF v = :old");
 BatchStatement batch = new BatchStatement();
 batch.add(
   ps.bind().setInt("k1", 1).setInt("k2", 1).setInt("old", 2).setInt("new", 3)); // will fail
 batch.add(ps.bind().setInt("k1", 1).setInt("k2", 2).setInt("old", 1).setInt("new", 3));
 ResultSet rs = session().execute(batch);
 assertFalse(rs.wasApplied());
}

代码示例来源:origin: org.springframework.data/spring-data-cassandra

@Override
public boolean execute(String cql) throws DataAccessException {
  Assert.hasText(cql, "CQL must not be empty");
  return queryForResultSet(cql).wasApplied();
}

代码示例来源:origin: com.datastax.cassandra/cassandra-driver-core

assertThat(rs.wasApplied()).isTrue();
assertThat(rs.getColumnDefinitions())
  .hasSize(1)
assertThat(rs.wasApplied()).isFalse();
assertThat(rs.getColumnDefinitions()).hasSize(4);
Row row = rs.one();
assertThat(rs.wasApplied()).isFalse();
assertThat(rs.getColumnDefinitions()).hasSize(5);
row = rs.one();

代码示例来源:origin: org.apache.apex/malhar-contrib

private void updatePerRowMetric(ResultSet result)
{
 uniqueHostsWrittenToInCurrentWindow.add(result.getExecutionInfo().getQueriedHost());
 updateConsistencyLevelMetrics(result.getExecutionInfo().getAchievedConsistencyLevel());
 successfullWrites += 1;
 if (!result.wasApplied()) {
  ignoredRequestsDuetoIfExistsCheck += 1;
 }
}

相关文章