"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/lib-sql/driver-cassandra.c" between
dovecot-2.3.16.tar.gz and dovecot-2.3.17.tar.gz

About: Dovecot is an IMAP and POP3 server, written with security primarily in mind.

driver-cassandra.c  (dovecot-2.3.16):driver-cassandra.c  (dovecot-2.3.17)
skipping to change at line 2175 skipping to change at line 2175
{ {
const struct cassandra_sql_arg *arg; const struct cassandra_sql_arg *arg;
if (stmt->prep->prepared == NULL) { if (stmt->prep->prepared == NULL) {
i_assert(stmt->prep->error != NULL); i_assert(stmt->prep->error != NULL);
if (stmt->result != NULL) { if (stmt->result != NULL) {
stmt->result->error = i_strdup(stmt->prep->error); stmt->result->error = i_strdup(stmt->prep->error);
result_finish(stmt->result); result_finish(stmt->result);
} }
pool_unref(&stmt->stmt.pool);
return; return;
} }
stmt->cass_stmt = cass_prepared_bind(stmt->prep->prepared); stmt->cass_stmt = cass_prepared_bind(stmt->prep->prepared);
if (stmt->timestamp != 0) if (stmt->timestamp != 0)
cass_statement_set_timestamp(stmt->cass_stmt, stmt->timestamp); cass_statement_set_timestamp(stmt->cass_stmt, stmt->timestamp);
if (array_is_created(&stmt->pending_args)) { if (array_is_created(&stmt->pending_args)) {
array_foreach(&stmt->pending_args, arg) array_foreach(&stmt->pending_args, arg)
prepare_finish_arg(stmt, arg); prepare_finish_arg(stmt, arg);
skipping to change at line 2482 skipping to change at line 2483
} }
if (stmt->prep != NULL) if (stmt->prep != NULL)
ctx->stmt = stmt; ctx->stmt = stmt;
else { else {
ctx->query = i_strdup(sql_statement_get_query(_stmt)); ctx->query = i_strdup(sql_statement_get_query(_stmt));
ctx->query_timestamp = stmt->timestamp; ctx->query_timestamp = stmt->timestamp;
pool_unref(&_stmt->pool); pool_unref(&_stmt->pool);
} }
} }
static bool driver_cassandra_have_work(struct cassandra_db *db)
{
return array_not_empty(&db->pending_prepares) ||
array_not_empty(&db->callbacks) ||
array_not_empty(&db->results);
}
static void driver_cassandra_wait(struct sql_db *_db)
{
struct cassandra_db *db = (struct cassandra_db *)_db;
if (!driver_cassandra_have_work(db))
return;
struct ioloop *prev_ioloop = current_ioloop;
db->ioloop = io_loop_create();
db->io_pipe = io_loop_move_io(&db->io_pipe);
while (driver_cassandra_have_work(db))
io_loop_run(db->ioloop);
io_loop_set_current(prev_ioloop);
db->io_pipe = io_loop_move_io(&db->io_pipe);
io_loop_set_current(db->ioloop);
io_loop_destroy(&db->ioloop);
}
const struct sql_db driver_cassandra_db = { const struct sql_db driver_cassandra_db = {
.name = "cassandra", .name = "cassandra",
.flags = SQL_DB_FLAG_PREP_STATEMENTS, .flags = SQL_DB_FLAG_PREP_STATEMENTS,
.v = { .v = {
.init_full = driver_cassandra_init_full_v, .init_full = driver_cassandra_init_full_v,
.deinit = driver_cassandra_deinit_v, .deinit = driver_cassandra_deinit_v,
.connect = driver_cassandra_connect, .connect = driver_cassandra_connect,
.disconnect = driver_cassandra_disconnect, .disconnect = driver_cassandra_disconnect,
.escape_string = driver_cassandra_escape_string, .escape_string = driver_cassandra_escape_string,
.exec = driver_cassandra_exec, .exec = driver_cassandra_exec,
.query = driver_cassandra_query, .query = driver_cassandra_query,
.query_s = driver_cassandra_query_s, .query_s = driver_cassandra_query_s,
.wait = driver_cassandra_wait,
.transaction_begin = driver_cassandra_transaction_begin, .transaction_begin = driver_cassandra_transaction_begin,
.transaction_commit = driver_cassandra_transaction_commit, .transaction_commit = driver_cassandra_transaction_commit,
.transaction_commit_s = driver_cassandra_transaction_commit_s, .transaction_commit_s = driver_cassandra_transaction_commit_s,
.transaction_rollback = driver_cassandra_transaction_rollback, .transaction_rollback = driver_cassandra_transaction_rollback,
.update = driver_cassandra_update, .update = driver_cassandra_update,
.escape_blob = driver_cassandra_escape_blob, .escape_blob = driver_cassandra_escape_blob,
 End of changes. 3 change blocks. 
0 lines changed or deleted 28 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)