Драйвер Cassandra Datastax не выдает ошибку при сбое обновления - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть следующая таблица.

CREATE TABLE codingjedi.users (
    bucket int,
    email text,
    authprovider text,
    firstname text,
    lastname text,
    confirmed boolean,
    hasher text,
    id uuid,
    password text,
    salt text,
    PRIMARY KEY ((bucket, email), authprovider, firstname, lastname)
) WITH CLUSTERING ORDER BY (authprovider ASC, firstname ASC, lastname ASC)

Я пытался обновить строку таблицы, но не полностью определил строку. Я указал только partition key и частично указал clustering columns

def updateValues(tableName:String, model:User, id:UserKeys):Update.Where = {
    QueryBuilder.update(tableName).`with`(QueryBuilder.set("confirmed",model.profile.internalProfileDetails.get.confirmed))/*(QueryBuilder.set("authprovider",model.profile.internalProfileDetails.get.loginInfo.providerID)) //TODOM - remove hardcoding for bucket and also add bucket in User model*/
      .and(QueryBuilder.set("id",model.id))
      .and(QueryBuilder.set("password",model.profile.internalProfileDetails.get.passwordInfo.get.password))
      .and(QueryBuilder.set("hasher",model.profile.internalProfileDetails.get.passwordInfo.get.hasher))
      .and(QueryBuilder.set("salt",""/*model.profile.internalProfileDetails.get.passwordInfo.get.salt.get*/)) //salt is empty for BCryptSha256PasswordHasher. The 'hash' method of BCryptSha256PasswordHasher does not return the salt separately because it is embedded in the hashed password.
      .where(QueryBuilder.eq("bucket", id.bucket)) //TODOM - pick column names from config/env file
      .and(QueryBuilder.eq("email", id.email))
      .and(QueryBuilder.eq("authprovider", model.profile.internalProfileDetails.get.loginInfo.providerID))//TODOM - this should come from id
      .and(QueryBuilder.eq("firstname",model.profile.externalProfileDetails.firstName))
      /*.and(QueryBuilder.eq("lastname",model.profile.externalProfileDetails.lastName))*//*REMOVED a clustering column value*/

  }

Приведенный выше запрос не выполняется, и строка не обновляется, но я также не вижу сообщений об ошибках в консоли.

Но если я попробую то же самое в cqlsh, я вижу ошибку InvalidRequest: Error from server: code=2200 [Invalid query] message="Some clustering keys are missing: lastname".

Почему Datastax не сообщает об ошибке, и как я могу показать ошибки?

...