struct cassandra_db {
struct sql_db api;
- char *hosts, *keyspace, *user, *password;
+ char *hosts, *keyspace, *table_prefix, *user, *password;
CassConsistency read_consistency, write_consistency, delete_consistency;
CassConsistency read_fallback_consistency, write_fallback_consistency;
CassConsistency delete_fallback_consistency;
driver_cassandra_send_queries(db);
}
+static const char *driver_cassandra_table_prefix(struct sql_db *_db)
+{
+ struct cassandra_db *db = (struct cassandra_db *)_db;
+ return db->table_prefix == NULL ? "" : db->table_prefix;
+}
+
static int driver_cassandra_connect(struct sql_db *_db)
{
struct cassandra_db *db = (struct cassandra_db *)_db;
if (db->keyspace == NULL) {
*error_r = t_strdup_printf("No dbname given in connect string");
return -1;
+ } else {
+ i_free(db->table_prefix);
+ db->table_prefix = i_strdup_printf("%s.", db->keyspace);
}
if ((db->ssl_cert_file != NULL && db->ssl_private_key_file == NULL) ||
i_free(db->metrics_path);
i_free(db->hosts);
i_free(db->error);
+ i_free(db->table_prefix);
i_free(db->keyspace);
i_free(db->user);
i_free(db->password);
.statement_query = driver_cassandra_statement_query,
.statement_query_s = driver_cassandra_statement_query_s,
.update_stmt = driver_cassandra_update_stmt,
+ .table_prefix = driver_cassandra_table_prefix,
}
};
void (*update_stmt)(struct sql_transaction_context *ctx,
struct sql_statement *stmt,
unsigned int *affected_rows);
+
+ /* Returns a schema/keyspace followed by a dot '.' OR an empty string
+ if none is required (in order remove the requirement for further
+ checks down the line in format strings et al.) */
+ const char *(*table_prefix)(struct sql_db *db);
};
struct sql_db {
void sql_db_set_state(struct sql_db *db, enum sql_db_state state);
+inline static const char *sql_db_table_prefix(struct sql_db *db) {
+ return db->v.table_prefix == NULL ? "" : db->v.table_prefix(db);
+}
+
void sql_transaction_add_query(struct sql_transaction_context *ctx, pool_t pool,
const char *query, unsigned int *affected_rows);
const char *sql_statement_get_query(struct sql_statement *stmt);