@Override public void setValue(String service, String serviceKey, String key, String value) throws DatastoreException { BoundStatement statement = new BoundStatement(m_metaCluster.psServiceIndexInsert); statement.setString(0, service); statement.setString(1, serviceKey); statement.setString(2, key); statement.setString(3, value); statement.setConsistencyLevel(m_metaCluster.getWriteConsistencyLevel()); m_metaCluster.execute(statement); }
@Override public void deleteKey(String service, String serviceKey, String key) throws DatastoreException { BoundStatement statement = new BoundStatement(m_metaCluster.psServiceIndexDeleteKey); statement.setString(0, service); statement.setString(1, serviceKey); statement.setString(2, key); statement.setConsistencyLevel(m_metaCluster.getWriteConsistencyLevel()); m_metaCluster.execute(statement); // Update modification time statement = new BoundStatement(m_metaCluster.psServiceIndexInsertModifiedTime); statement.setString(0, service); statement.setString(1, serviceKey); m_metaCluster.execute(statement); }
@Override public Date getServiceKeyLastModifiedTime(String service, String serviceKey) throws DatastoreException { BoundStatement statement = new BoundStatement(m_metaCluster.psServiceIndexModificationTime); statement.setString(0, service); statement.setString(1, serviceKey); ResultSet resultSet = m_metaCluster.execute(statement); Row row = resultSet.one(); if (row != null) return new Date(UUIDs.unixTimestamp(row.getUUID(0))); return new Date(0L); }
public void addMetricName(String metricName) { m_newMetrics.add(metricName); BoundStatement bs = new BoundStatement(m_clusterConnection.psStringIndexInsert); bs.setBytesUnsafe(0, ByteBuffer.wrap(ROW_KEY_METRIC_NAMES.getBytes(UTF_8))); bs.setString(1, metricName); bs.setConsistencyLevel(m_consistencyLevel); metricNamesBatch.add(bs); }
@Override public Iterable<String> listKeys(String service, String serviceKey, String keyStartsWith) throws DatastoreException { String begin = keyStartsWith; String end = keyStartsWith + Character.MAX_VALUE; List<String> ret = new ArrayList<>(); BoundStatement statement = new BoundStatement(m_metaCluster.psServiceIndexListKeysPrefix); statement.setString(0, service); statement.setString(1, serviceKey); statement.setString(2, begin); statement.setString(3, end); statement.setConsistencyLevel(m_metaCluster.getReadConsistencyLevel()); ResultSet resultSet = m_metaCluster.execute(statement); while (!resultSet.isExhausted()) { String key = resultSet.one().getString(0); if (key != null) { // The last row for the primary key doesn't get deleted and has a null key and isExhausted still return false. So check for null ret.add(key); } } return ret; }
@Override public ServiceKeyValue getValue(String service, String serviceKey, String key) throws DatastoreException { BoundStatement statement = new BoundStatement(m_metaCluster.psServiceIndexGet); statement.setString(0, service); statement.setString(1, serviceKey); statement.setString(2, key); statement.setConsistencyLevel(m_metaCluster.getReadConsistencyLevel()); ResultSet resultSet = m_metaCluster.execute(statement); Row row = resultSet.one(); if (row != null) return new ServiceKeyValue(row.getString(0), new Date(row.getTime(1))); return null; }
@Override public Iterable<String> listKeys(String service, String serviceKey) throws DatastoreException { List<String> ret = new ArrayList<>(); BoundStatement statement = new BoundStatement(m_metaCluster.psServiceIndexListKeys); statement.setString(0, service); statement.setString(1, serviceKey); statement.setConsistencyLevel(m_metaCluster.getReadConsistencyLevel()); ResultSet resultSet = m_metaCluster.execute(statement); while (!resultSet.isExhausted()) { String key = resultSet.one().getString(0); if (key != null) { // The last row for the primary key doesn't get deleted and has a null key and isExhausted still return false. So check for null ret.add(key); } } return ret; }
private List<Long> createQueryKeyList(ClusterConnection cluster, String metricName, long startTime, long endTime) { List<Long> ret = new ArrayList<>(); if (cluster.psRowKeyTimeQuery != null) //cluster may be old { BoundStatement statement = new BoundStatement(cluster.psRowKeyTimeQuery); statement.setString(0, metricName); statement.setTimestamp(1, new Date(CassandraDatastore.calculateRowTime(startTime))); statement.setTimestamp(2, new Date(endTime)); statement.setConsistencyLevel(cluster.getReadConsistencyLevel()); //printHosts(m_loadBalancingPolicy.newQueryPlan(m_keyspace, statement)); ResultSet rows = cluster.execute(statement); while (!rows.isExhausted()) { ret.add(rows.one().getTimestamp(0).getTime()); } } return ret; }
public void addRowKey(String metricName, DataPointsRowKey rowKey, int rowKeyTtl) { m_newRowKeys.add(rowKey); ByteBuffer bb = ByteBuffer.allocate(8); bb.putLong(0, rowKey.getTimestamp()); Statement bs = m_clusterConnection.psRowKeyTimeInsert.bind() .setString(0, metricName) .setTimestamp(1, new Date(rowKey.getTimestamp())) //.setBytesUnsafe(1, bb) //Setting timestamp in a more optimal way .setInt(2, rowKeyTtl) .setIdempotent(true); bs.setConsistencyLevel(m_consistencyLevel); rowKeyBatch.add(bs); bs = m_clusterConnection.psRowKeyInsert.bind() .setString(0, metricName) .setTimestamp(1, new Date(rowKey.getTimestamp())) //.setBytesUnsafe(1, bb) //Setting timestamp in a more optimal way .setString(2, rowKey.getDataType()) .setMap(3, rowKey.getTags()) .setInt(4, rowKeyTtl) .setIdempotent(true); bs.setConsistencyLevel(m_consistencyLevel); rowKeyBatch.add(bs); }
@Override public Iterable<String> listServiceKeys(String service) throws DatastoreException { List<String> ret = new ArrayList<>(); if (m_metaCluster.psServiceIndexListServiceKeys == null) { throw new DatastoreException("List Service Keys is not available on this version of Cassandra."); } BoundStatement statement = new BoundStatement(m_metaCluster.psServiceIndexListServiceKeys); statement.setString(0, service); statement.setConsistencyLevel(m_metaCluster.getReadConsistencyLevel()); ResultSet resultSet = m_metaCluster.execute(statement); while (!resultSet.isExhausted()) { ret.add(resultSet.one().getString(0)); } return ret; }
statement.setString(0, metricName); statement.setTimestamp(1, new Date(keyTime)); statement.setConsistencyLevel(cluster.getReadConsistencyLevel());
|| mainType.equals(DataType.varint())) { statement.setString(paramIndex, paramValue);
statement.setString(0, rowKey.getMetricName()); statement.setTimestamp(1, new Date(rowKey.getTimestamp())); statement.setString(2, rowKey.getDataType()); statement.setMap(3, rowKey.getTags()); statement.setConsistencyLevel(cluster.getReadConsistencyLevel()); statement.setString(0, rowKey.getMetricName()); statement.setTimestamp(1, new Date(rowKey.getTimestamp())); statement.setConsistencyLevel(cluster.getReadConsistencyLevel());
@Test(groups = "short") public void selectInjectionTests() throws Exception { String query; Statement select; PreparedStatement ps; BoundStatement bs; session().execute("CREATE TABLE foo ( k ascii PRIMARY KEY , i int, s ascii )"); query = "SELECT * FROM foo WHERE k=?;"; select = select().all().from("foo").where(eq("k", bindMarker())); ps = session().prepare(select.toString()); bs = ps.bind(); assertEquals(select.toString(), query); session().execute(bs.setString("k", "4 AND c=5")); }
@Test(groups = "short") public void should_handle_contains_on_map_with_index() { PreparedStatement byFeatures = session() .prepare( select("id", "description", "features_values") .from("products") .where(contains("features_values", bindMarker("feature")))); ResultSet results = session().execute(byFeatures.bind().setString("feature", "LED")); Row row = results.one(); assertThat(row).isNotNull(); assertThat(row.getInt("id")).isEqualTo(29412); assertThat(row.getMap("features_values", String.class, String.class)) .containsEntry("techno", "LED"); }
@Test(groups = "short") public void should_handle_udts_with_default_codecs() { setUpUserTypes(cluster()); // simple statement session().execute(insertQuery, uuid, "John Doe", addressValue); ResultSet rows = session().execute(selectQuery, uuid); Row row = rows.one(); assertRow(row); // prepared + values PreparedStatement ps = session().prepare(insertQuery); session().execute(ps.bind(uuid, "John Doe", addressValue)); rows = session().execute(selectQuery, uuid); row = rows.one(); assertRow(row); // bound with setUDTValue session() .execute(ps.bind().setUUID(0, uuid).setString(1, "John Doe").setUDTValue(2, addressValue)); rows = session().execute(selectQuery, uuid); row = rows.one(); assertRow(row); }
@Test(groups = "short") public void should_handle_contains_on_set_with_index() { PreparedStatement byCategory = session() .prepare( select("id", "description", "categories") .from("products") .where(contains("categories", bindMarker("category")))); ResultSet results = session().execute(byCategory.bind().setString("category", "hdtv")); assertThat(results.getAvailableWithoutFetching()).isEqualTo(2); for (Row row : results) { assertThat(row.getSet("categories", String.class)).contains("hdtv"); } }
@Test(groups = "short") public void should_handle_contains_key_on_map_with_index() { PreparedStatement byFeatures = session() .prepare( select("id", "description", "features_keys") .from("products") .where(containsKey("features_keys", bindMarker("feature")))); ResultSet results = session().execute(byFeatures.bind().setString("feature", "refresh-rate")); Row row = results.one(); assertThat(row).isNotNull(); assertThat(row.getInt("id")).isEqualTo(34134); assertThat(row.getMap("features_keys", String.class, String.class)) .containsEntry("refresh-rate", "400hz"); } }