В соответствии с документацией this, я пытался выбрать запрос с функцией token(), но он дает неправильные результаты.Cassandra - выберите запрос с функцией token()
Я использую ниже Кассандру версии
[cqlsh 5.0.1 | Cassandra 2.2.5 | CQL spec 3.3.1 | Native protocol v4]
Я пытался токены запроса для таблицы ниже -
CREATE TABLE price_key_test (
objectid int,
createdOn bigint,
price int,
foo text,
PRIMARY KEY ((objectid, createdOn), price));
вставленных данные -
insert into nasa.price_key_test (objectid,createdOn,price,foo) values (1,1000,100,'x');
insert into nasa.price_key_test (objectid,createdOn,price,foo) values (1,2000,200,'x');
insert into nasa.price_key_test (objectid,createdOn,price,foo) values (1,3000,300,'x');
данных в таблице -
objectid | createdon | price | foo
----------+-----------+-------+-----
1 | 3000 | 300 | x
1 | 2000 | 200 | x
1 | 1000 | 100 | x
Выберите запрос -
select * from nasa.price_key_test where token(objectid,createdOn) > token(1,1000) and token(objectid,createdOn) < token(1,3000)
Этот запрос предположим вернуть строку с createdOn 2000, но он возвращает ноль строк.
objectid | createdon | price | foo
----------+-----------+-------+-----
(0 rows)
Согласно моему пониманию, лексема (ObjectID, createdOn)> маркер (1,1000) и маркер (ObjectID, createdOn) < маркер (1,3000) следует выбрать строку с ключом раздела со значением 1 и 2000 .
Правильно ли я понимаю?
@Aron Спасибо за ответ sir. Это означает, что мы не можем передавать функцию token(). Можете ли вы связаться с нами, когда мы можем использовать токен в выбранном запросе. – Gunwant
@Gunwant 'token()' имеет смысл, если вы хотите запросить большую таблицу целиком. Как правило, запросы для больших наборов результатов будут тайм-аутом, поэтому вы можете запросить диапазон токенов за раз, чтобы сделать его более вероятным. – Aaron