java中的range,Java Util.range方法代码示例

import org.apache.cassandra.Util; //导入方法依赖的package包/类

@Test

public void testIndexUpdateOverwritingExpiringColumns() throws Exception

{

// see CASSANDRA-7268

Keyspace keyspace = Keyspace.open("Keyspace2");

// create a row and update the birthdate value with an expiring column

Mutation rm;

rm = new Mutation("Keyspace2", ByteBufferUtil.bytes("k100"));

rm.add("Indexed1", cellname("birthdate"), ByteBufferUtil.bytes(100L), 1, 1000);

rm.apply();

IndexExpression expr = new IndexExpression(ByteBufferUtil.bytes("birthdate"), Operator.EQ, ByteBufferUtil.bytes(100L));

List clause = Arrays.asList(expr);

IDiskAtomFilter filter = new IdentityQueryFilter();

Range range = Util.range("", "");

List rows = keyspace.getColumnFamilyStore("Indexed1").search(range, clause, filter, 100);

assertEquals(1, rows.size());

// requires a 1s sleep because we calculate local expiry time as (now() / 1000) + ttl

TimeUnit.SECONDS.sleep(1);

// now overwrite with the same name/value/ttl, but the local expiry time will be different

rm = new Mutation("Keyspace2", ByteBufferUtil.bytes("k100"));

rm.add("Indexed1", cellname("birthdate"), ByteBufferUtil.bytes(100L), 1, 1000);

rm.apply();

rows = keyspace.getColumnFamilyStore("Indexed1").search(range, clause, filter, 100);

assertEquals(1, rows.size());

// check that modifying the indexed value using the same timestamp behaves as expected

rm = new Mutation("Keyspace2", ByteBufferUtil.bytes("k101"));

rm.add("Indexed1", cellname("birthdate"), ByteBufferUtil.bytes(101L), 1, 1000);

rm.apply();

expr = new IndexExpression(ByteBufferUtil.bytes("birthdate"), Operator.EQ, ByteBufferUtil.bytes(101L));

clause = Arrays.asList(expr);

rows = keyspace.getColumnFamilyStore("Indexed1").search(range, clause, filter, 100);

assertEquals(1, rows.size());

TimeUnit.SECONDS.sleep(1);

rm = new Mutation("Keyspace2", ByteBufferUtil.bytes("k101"));

rm.add("Indexed1", cellname("birthdate"), ByteBufferUtil.bytes(102L), 1, 1000);

rm.apply();

// search for the old value

rows = keyspace.getColumnFamilyStore("Indexed1").search(range, clause, filter, 100);

assertEquals(0, rows.size());

// and for the new

expr = new IndexExpression(ByteBufferUtil.bytes("birthdate"), Operator.EQ, ByteBufferUtil.bytes(102L));

clause = Arrays.asList(expr);

rows = keyspace.getColumnFamilyStore("Indexed1").search(range, clause, filter, 100);

assertEquals(1, rows.size());

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值