]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
cassandra: Include "prepared" when logging about prepared statement queries
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 16 Oct 2017 12:12:12 +0000 (15:12 +0300)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Tue, 17 Oct 2017 06:31:24 +0000 (09:31 +0300)
Mainly useful for debugging/testing.

src/lib-sql/driver-cassandra.c

index d211272b3f135d4b72dfa03a26cb48341fe91d1d..248162610eae0dd3e67944cf8413d320bec98121 100644 (file)
@@ -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;