changeset 22728:3970c1d61616

cassandra: Include the used timestamp in logged queries
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sat, 04 Nov 2017 14:33:52 +0200
parents 37d5a5c7a7b7
children b50c55023f08
files src/lib-sql/driver-cassandra.c
diffstat 1 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-sql/driver-cassandra.c	Mon Nov 06 11:00:06 2017 +0200
+++ b/src/lib-sql/driver-cassandra.c	Sat Nov 04 14:33:52 2017 +0200
@@ -130,6 +130,7 @@
 	enum cassandra_query_type query_type;
 	struct timeval page0_start_time, start_time, finish_time;
 	unsigned int row_count, total_row_count, page_num;
+	cass_int64_t timestamp;
 
 	pool_t row_pool;
 	ARRAY_TYPE(const_string) fields;
@@ -777,6 +778,8 @@
 	string_t *str = t_str_new(128);
 	str_printfa(str, "cassandra: Finished %squery '%s' (",
 		    result->is_prepared ? "prepared " : "", result->query);
+	if (result->timestamp != 0)
+		str_printfa(str, "timestamp=%"PRId64", ", result->timestamp);
 	if (all_pages) {
 		str_printfa(str, "%u pages in total, ", result->page_num);
 		row_count = result->total_row_count;
@@ -1728,6 +1731,7 @@
 	}
 	if (stmt->result != NULL) {
 		stmt->result->statement = stmt->cass_stmt;
+		stmt->result->timestamp = stmt->timestamp;
 		(void)driver_cassandra_send_query(stmt->result);
 		pool_unref(&stmt->stmt.pool);
 	}
@@ -1883,10 +1887,11 @@
 		(cass_int64_t)ts->tv_sec * 1000000ULL +
 		ts->tv_nsec / 1000;
 
+	i_assert(stmt->result == NULL);
+
 	if (stmt->cass_stmt != NULL)
 		cass_statement_set_timestamp(stmt->cass_stmt, ts_usecs);
-	else
-		stmt->timestamp = ts_usecs;
+	stmt->timestamp = ts_usecs;
 }
 
 static struct cassandra_sql_arg *
@@ -1974,6 +1979,7 @@
 		return;
 	} else {
 		stmt->result->statement = cass_statement_new(query, 0);
+		stmt->result->timestamp = stmt->timestamp;
 		if (stmt->timestamp != 0) {
 			cass_statement_set_timestamp(stmt->result->statement,
 						     stmt->timestamp);