private static CqlQuery updateIfMatching(CheckAndSetRequest request) { Preconditions.checkState(request.oldValue().isPresent(), "updateIfMatching queries should only be made if we do have an old value"); return ImmutableCqlQuery.builder() .safeQueryFormat("UPDATE \"%s\" SET value=%s WHERE key=%s AND column1=%s AND column2=%s IF value=%s;") .addArgs( LoggingArgs.internalTableName(request.table()), UnsafeArg.of("newValue", encodeCassandraHexString(request.newValue())), UnsafeArg.of("row", encodeCassandraHexString(request.cell().getRowName())), UnsafeArg.of("column", encodeCassandraHexString(request.cell().getColumnName())), SafeArg.of("cassandraTimestamp", CASSANDRA_TIMESTAMP), UnsafeArg.of("oldValue", encodeCassandraHexString(request.oldValue().get()))) .build(); }
private static CqlQuery insertIfNotExists(CheckAndSetRequest request) { Preconditions.checkState(!request.oldValue().isPresent(), "insertIfNotExists queries should only be made if we don't have an old value"); return ImmutableCqlQuery.builder() .safeQueryFormat("INSERT INTO \"%s\" (key, column1, column2, value)" + " VALUES (%s, %s, %s, %s) IF NOT EXISTS;") .addArgs( LoggingArgs.internalTableName(request.table()), UnsafeArg.of("row", encodeCassandraHexString(request.cell().getRowName())), UnsafeArg.of("column", encodeCassandraHexString(request.cell().getColumnName())), SafeArg.of("cassandraTimestamp", CASSANDRA_TIMESTAMP), UnsafeArg.of("newValue", encodeCassandraHexString(request.newValue()))) .build(); }
private static CqlQuery updateIfMatching(CheckAndSetRequest request) { Preconditions.checkState(request.oldValue().isPresent(), "updateIfMatching queries should only be made if we do have an old value"); return ImmutableCqlQuery.builder() .safeQueryFormat("UPDATE \"%s\" SET value=%s WHERE key=%s AND column1=%s AND column2=%s IF value=%s;") .addArgs( LoggingArgs.internalTableName(request.table()), UnsafeArg.of("newValue", encodeCassandraHexString(request.newValue())), UnsafeArg.of("row", encodeCassandraHexString(request.cell().getRowName())), UnsafeArg.of("column", encodeCassandraHexString(request.cell().getColumnName())), SafeArg.of("cassandraTimestamp", CASSANDRA_TIMESTAMP), UnsafeArg.of("oldValue", encodeCassandraHexString(request.oldValue().get()))) .build(); }
.addArgs(SafeArg.of("cfId", getUuidForTable(tableRef))) .build();
/** * Returns a list of {@link CellWithTimestamp}s within the given {@code row}, starting at the (column, timestamp) * pair represented by ({@code startColumnInclusive}, {@code startTimestampExclusive}). */ @Override public List<CellWithTimestamp> getTimestampsWithinRow( TableReference tableRef, byte[] row, byte[] startColumnInclusive, long startTimestampExclusive, int limit) { long invertedTimestamp = ~startTimestampExclusive; String selQuery = "SELECT column1, column2 FROM %s WHERE key = %s AND (column1, column2) > (%s, %s) LIMIT %s;"; CqlQuery query = CqlQuery.builder() .safeQueryFormat(selQuery) .addArgs( quotedTableName(tableRef), key(row), column1(startColumnInclusive), column2(invertedTimestamp), limit(limit)) .build(); return executeAndGetCells(query, row, result -> CqlExecutorImpl.getCellFromKeylessRow(result, row)); }
private static CqlQuery insertIfNotExists(CheckAndSetRequest request) { Preconditions.checkState(!request.oldValue().isPresent(), "insertIfNotExists queries should only be made if we don't have an old value"); return ImmutableCqlQuery.builder() .safeQueryFormat("INSERT INTO \"%s\" (key, column1, column2, value)" + " VALUES (%s, %s, %s, %s) IF NOT EXISTS;") .addArgs( LoggingArgs.internalTableName(request.table()), UnsafeArg.of("row", encodeCassandraHexString(request.cell().getRowName())), UnsafeArg.of("column", encodeCassandraHexString(request.cell().getColumnName())), SafeArg.of("cassandraTimestamp", CASSANDRA_TIMESTAMP), UnsafeArg.of("newValue", encodeCassandraHexString(request.newValue()))) .build(); }
public static CqlQuery constructSelectFromTimestampTableQuery() { // Timestamps are safe. return ImmutableCqlQuery.builder() .safeQueryFormat("SELECT %s, %s FROM %s WHERE key=%s;") .addArgs( SafeArg.of("columnName", COLUMN_NAME_COLUMN), SafeArg.of("valueColumnName", VALUE_COLUMN), SafeArg.of("tableRef", wrapInQuotes(AtlasDbConstants.TIMESTAMP_TABLE.getQualifiedName())), SafeArg.of("rowAndColumnValue", ROW_AND_COLUMN_NAME_HEX_STRING)) .build(); }
/** * Returns a list of {@link CellWithTimestamp}s within the given {@code row}, starting at the (column, timestamp) * pair represented by ({@code startColumnInclusive}, {@code startTimestampExclusive}). */ @Override public List<CellWithTimestamp> getTimestampsWithinRow( TableReference tableRef, byte[] row, byte[] startColumnInclusive, long startTimestampExclusive, int limit) { long invertedTimestamp = ~startTimestampExclusive; String selQuery = "SELECT column1, column2 FROM %s WHERE key = %s AND (column1, column2) > (%s, %s) LIMIT %s;"; CqlQuery query = CqlQuery.builder() .safeQueryFormat(selQuery) .addArgs( quotedTableName(tableRef), key(row), column1(startColumnInclusive), column2(invertedTimestamp), limit(limit)) .build(); return executeAndGetCells(query, row, result -> CqlExecutorImpl.getCellFromKeylessRow(result, row)); }
.addArgs(SafeArg.of("cfId", getUuidForTable(tableRef))) .build();
private void putDummyValueAtCellAndTimestamp( TableReference tableReference, Cell cell, long atlasTimestamp, long cassandraTimestamp) throws TException { CassandraKeyValueServiceImpl ckvs = (CassandraKeyValueServiceImpl) keyValueService; ckvs.getClientPool().runWithRetry(input -> { CqlQuery cqlQuery = CqlQuery.builder() .safeQueryFormat("INSERT INTO \"%s\".\"%s\" (key, column1, column2, value)" + " VALUES (%s, %s, %s, %s) USING TIMESTAMP %s;") .addArgs( SafeArg.of("keyspace", CASSANDRA.getConfig().getKeyspaceOrThrow()), LoggingArgs.internalTableName(tableReference), UnsafeArg.of("row", convertBytesToHexString(cell.getRowName())), UnsafeArg.of("column", convertBytesToHexString(cell.getColumnName())), SafeArg.of("atlasTimestamp", ~atlasTimestamp), UnsafeArg.of("value", convertBytesToHexString(PtBytes.toBytes("testtesttest"))), SafeArg.of("cassandraTimestamp", cassandraTimestamp)) .build(); return input.execute_cql3_query( cqlQuery, Compression.NONE, ConsistencyLevel.QUORUM); }); }
public static CqlQuery constructSelectFromTimestampTableQuery() { // Timestamps are safe. return ImmutableCqlQuery.builder() .safeQueryFormat("SELECT %s, %s FROM %s WHERE key=%s;") .addArgs( SafeArg.of("columnName", COLUMN_NAME_COLUMN), SafeArg.of("valueColumnName", VALUE_COLUMN), SafeArg.of("tableRef", wrapInQuotes(AtlasDbConstants.TIMESTAMP_TABLE.getQualifiedName())), SafeArg.of("rowAndColumnValue", ROW_AND_COLUMN_NAME_HEX_STRING)) .build(); }