Cassandra NOT NULL Неподдерживаемое ограничение - PullRequest
0 голосов
/ 07 сентября 2018

Материализованное представление не заполняется, когда я его запускаю. Я думаю, это потому, что запрос SQL генерирует ошибки.

select * from table where id is not null

InvalidRequest: Error from server: code=2200 [Invalid query] message="Unsupported restriction: id IS NOT NULL"

Ранее этот SQL-запрос позволял мне указывать не нуль. Я думаю, что когда я делаю обновление системы, это подводит меня.

1 Ответ

0 голосов
/ 07 сентября 2018

Итак, предложение Кассандры where поддерживает =, <, >, >=, <=. Нет поддержки для not null или != null. Стоит отметить, что единственное время IS NOT NULL существует в материализованном представлении. Это связано с тем, что в первичном ключе не может быть нулевого значения, и в этом случае вы приводите переменные, которые в противном случае могли бы быть сброшены в первичный ключ. Кроме того, вам необходимо включить весь первичный ключ из базовой таблицы в ваше материализованное представление.

Пример материализованного представления

CREATE KEYSPACE test_keyspace
WITH REPLICATION = { 'class': 'SimpleStrategy', 'replication_factor': 1};

CREATE TABLE myTable(
  id int, 
  col1 varchar, 
  col2 varchar, 
PRIMARY KEY(id, col1)) ;

CREATE MATERIALIZED VIEW test_view AS 
  SELECT col2, col1, id FROM myTable 
  WHERE col2 IS NOT NULL AND col1 IS NOT NULL
PRIMARY KEY(col2, id, col1);

Следует отметить, что материализованные представления имеют некоторые последствия для производительности, и вам, возможно, будет лучше развернуть свои собственные.

...