«Неверный запрос: часть PRIMARY KEY to_id не может быть ограничена» при попытке выбора с использованием условия where
Вот моя таблица cassandra для чата:
CREATE TABLE tax_keyspace_dev.chat_messages (
message text,
when timestamp,
from_id text,
to_id text,
read boolean,
participants text,
PRIMARY KEY(participants, when, to_id)
);
Этот запрос работает:
select * from tax_keyspace_dev.chat_messages where participants='[email protected][email protected]' order by when;
но следующие запросы не работают:
select * from tax_keyspace_dev.chat_messages where to_id='[email protected]' order by when;
Ошибка "Неверный запрос: часть PRIMARY KEY to_id не может быть ограничена (предыдущая часть не ограничена или не связана с EQ)"
update tax_keyspace_dev.chat_messages set read=true where participants = '[email protected][email protected]' and when = '2014-04-10 17:44:22+0530';
Ошибка "Неверный запрос: отсутствует обязательный элемент PRIMARY KEY to_id"
Если я удаляю «to_id» из составного ключа и создаю отдельный индекс следующим образом:
CREATE TABLE tax_keyspace_dev.chat_messages (
message text,
when timestamp,
from_id text,
to_id text,
read boolean,
participants text,
PRIMARY KEY(participants, when)
);
CREATE INDEX idx_chat_messages_to ON tax_keyspace_dev.chat_messages (to_id);
тогда другие запросы работают, но этот отказывает:
select * from tax_keyspace_dev.chat_messages where to_id='[email protected]' order by when;
с ошибкойНеверный запрос: ORDER BY со вторыми индексами не поддерживается."
Как мне спроектировать таблицу так, чтобы все эти варианты использования работали?
select * from tax_keyspace_dev.chat_messages where participants='[email protected][email protected]' order by when;
update tax_keyspace_dev.chat_messages set read=true where participants = '[email protected][email protected]' and when = '2014-04-10 17:44:22+0530';
select * from tax_keyspace_dev.chat_messages where to_id='[email protected]' order by when;