Mercurial > dovecot > core-2.2
changeset 22810:41c67443c1c5
cassandra: Fix setting timestamp for transaction queries with v3 protocol
It was working for prepared statements, but not for non-prepared statements.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Wed, 07 Feb 2018 15:27:07 +0200 |
parents | 9d921404799f |
children | d880c3334a2f |
files | src/lib-sql/driver-cassandra.c |
diffstat | 1 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-sql/driver-cassandra.c Mon Jan 29 19:10:38 2018 +0100 +++ b/src/lib-sql/driver-cassandra.c Wed Feb 07 15:27:07 2018 +0200 @@ -154,6 +154,7 @@ struct cassandra_sql_statement *stmt; char *query; + cass_int64_t query_timestamp; char *error; unsigned int begin_succeeded:1; @@ -1553,8 +1554,17 @@ query_type = CASSANDRA_QUERY_TYPE_WRITE; if (ctx->query != NULL) { - driver_cassandra_query_full(_ctx->db, query, query_type, - transaction_commit_callback, ctx); + struct cassandra_result *cass_result; + + cass_result = driver_cassandra_query_init(db, query, query_type, + FALSE, transaction_commit_callback, ctx); + cass_result->statement = cass_statement_new(query, 0); + if (ctx->query_timestamp != 0) { + cass_result->timestamp = ctx->query_timestamp; + cass_statement_set_timestamp(cass_result->statement, + ctx->query_timestamp); + } + (void)driver_cassandra_send_query(cass_result); } else { ctx->stmt->result = driver_cassandra_query_init(db, query, query_type, TRUE, @@ -2015,6 +2025,7 @@ ctx->stmt = stmt; else { ctx->query = i_strdup(sql_statement_get_query(_stmt)); + ctx->query_timestamp = stmt->timestamp; pool_unref(&_stmt->pool); } }