From: Timo Sirainen Date: Mon, 16 Oct 2017 12:12:12 +0000 (+0300) Subject: cassandra: Include "prepared" when logging about prepared statement queries X-Git-Tag: 2.3.0.rc1~820 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b6c9cc2bf7517adcc0b9f98696c61bde321900f6;p=thirdparty%2Fdovecot%2Fcore.git cassandra: Include "prepared" when logging about prepared statement queries Mainly useful for debugging/testing. --- diff --git a/src/lib-sql/driver-cassandra.c b/src/lib-sql/driver-cassandra.c index d211272b3f..248162610e 100644 --- a/src/lib-sql/driver-cassandra.c +++ b/src/lib-sql/driver-cassandra.c @@ -138,6 +138,7 @@ struct cassandra_result { sql_query_callback_t *callback; void *context; + bool is_prepared:1; bool query_sent:1; bool finished:1; bool paging_continues:1; @@ -777,7 +778,8 @@ static void driver_cassandra_log_result(struct cassandra_result *result, i_fatal("gettimeofday() failed: %m"); string_t *str = t_str_new(128); - str_printfa(str, "cassandra: Finished query '%s' (", result->query); + str_printfa(str, "cassandra: Finished %squery '%s' (", + result->is_prepared ? "prepared " : "", result->query); if (all_pages) { str_printfa(str, "%u pages in total, ", result->page_num); row_count = result->total_row_count; @@ -1103,6 +1105,7 @@ static void exec_callback(struct sql_result *_result ATTR_UNUSED, static struct cassandra_result * driver_cassandra_query_init(struct cassandra_db *db, const char *query, enum cassandra_query_type query_type, + bool is_prepared, sql_query_callback_t *callback, void *context) { struct cassandra_result *result; @@ -1115,6 +1118,7 @@ driver_cassandra_query_init(struct cassandra_db *db, const char *query, result->context = context; result->query_type = query_type; result->query = i_strdup(query); + result->is_prepared = is_prepared; array_append(&db->results, &result, 1); return result; } @@ -1127,7 +1131,7 @@ driver_cassandra_query_full(struct sql_db *_db, const char *query, struct cassandra_db *db = (struct cassandra_db *)_db; struct cassandra_result *result; - result = driver_cassandra_query_init(db, query, query_type, + result = driver_cassandra_query_init(db, query, query_type, FALSE, callback, context); result->statement = cass_statement_new(query, 0); (void)driver_cassandra_send_query(result); @@ -1353,6 +1357,7 @@ driver_cassandra_result_more(struct sql_result **_result, bool async, /* Initialize the next page as a new sql_result */ new_result = driver_cassandra_query_init(db, old_result->query, CASSANDRA_QUERY_TYPE_READ_MORE, + old_result->is_prepared, callback, context); /* Preserve the statement and update its paging state */ @@ -1551,7 +1556,7 @@ driver_cassandra_transaction_commit(struct sql_transaction_context *_ctx, transaction_commit_callback, ctx); } else { ctx->stmt->result = - driver_cassandra_query_init(db, query, query_type, + driver_cassandra_query_init(db, query, query_type, TRUE, transaction_commit_callback, ctx); if (ctx->stmt->cass_stmt == NULL) { /* wait for prepare to finish */ @@ -1959,9 +1964,11 @@ driver_cassandra_statement_query(struct sql_statement *_stmt, (struct cassandra_sql_statement *)_stmt; struct cassandra_db *db = (struct cassandra_db *)_stmt->db; const char *query = sql_statement_get_query(_stmt); + bool is_prepared = stmt->cass_stmt != NULL || stmt->prep != NULL; stmt->result = driver_cassandra_query_init(db, query, CASSANDRA_QUERY_TYPE_READ, + is_prepared, callback, context); if (stmt->cass_stmt != NULL) { stmt->result->statement = stmt->cass_stmt;