Как проверить, применяется ли CQL-запрос - PullRequest
0 голосов
/ 09 января 2019

У меня есть API-сервер, написанный на golang в передней части Cassandra, поэтому я использую gocql в качестве драйвера. Я хочу вернуть ошибку, если кто-то пытается создать дублированные записи в Cassandra, поэтому мне нужна не только идемпотентная операция (которую можно выполнить с помощью предложения if not Существует), но и каким-то образом узнать, был ли применен запрос или нет. Предварительный запрос, такой как SELECT primary_keys FROM TABLE WHERE primary_keys = blah LIMIT 1, не является опцией, так как операция INSERT должна быть атомарной.

Когда я запускаю приведенный ниже пример в cqlsh, Кассандра сообщает, применяется ли запрос:

    cqlsh> create table tests.demo (
       ... uuid text PRIMARY KEY,
       ... data text
       ... );

    cqlsh> insert into tests.demo (uuid, data) values ('test', 'data') if not exists;

     applied
    -----------
      True 

    cqlsh> insert into tests.demo (uuid, data) values ('test', 'data') if not exists;

       applied | uuid | data
    -----------+------+------
         False | test | data

Есть ли возможность достичь того же с помощью gocql, так как query.Exec () возвращает только ошибку?

Спасибо!

...