This allows adding more methods without modifying all the existing drivers.
.flags = 0,
.v = {
- driver_cassandra_init_v,
- driver_cassandra_deinit_v,
- driver_cassandra_connect,
- driver_cassandra_disconnect,
- driver_cassandra_escape_string,
- driver_cassandra_exec,
- driver_cassandra_query,
- driver_cassandra_query_s,
-
- driver_cassandra_transaction_begin,
- driver_cassandra_transaction_commit,
- driver_cassandra_transaction_commit_s,
- driver_cassandra_transaction_rollback,
-
- driver_cassandra_update,
-
- driver_cassandra_escape_blob
+ .init = driver_cassandra_init_v,
+ .deinit = driver_cassandra_deinit_v,
+ .connect = driver_cassandra_connect,
+ .disconnect = driver_cassandra_disconnect,
+ .escape_string = driver_cassandra_escape_string,
+ .exec = driver_cassandra_exec,
+ .query = driver_cassandra_query,
+ .query_s = driver_cassandra_query_s,
+
+ .transaction_begin = driver_cassandra_transaction_begin,
+ .transaction_commit = driver_cassandra_transaction_commit,
+ .transaction_commit_s = driver_cassandra_transaction_commit_s,
+ .transaction_rollback = driver_cassandra_transaction_rollback,
+
+ .update = driver_cassandra_update,
+
+ .escape_blob = driver_cassandra_escape_blob,
}
};
.flags = SQL_DB_FLAG_BLOCKING | SQL_DB_FLAG_POOLED,
.v = {
- driver_mysql_init_v,
- driver_mysql_deinit_v,
- driver_mysql_connect,
- driver_mysql_disconnect,
- driver_mysql_escape_string,
- driver_mysql_exec,
- driver_mysql_query,
- driver_mysql_query_s,
-
- driver_mysql_transaction_begin,
- driver_mysql_transaction_commit,
- driver_mysql_transaction_commit_s,
- driver_mysql_transaction_rollback,
-
- driver_mysql_update,
-
- driver_mysql_escape_blob
+ .init = driver_mysql_init_v,
+ .deinit = driver_mysql_deinit_v,
+ .connect = driver_mysql_connect,
+ .disconnect = driver_mysql_disconnect,
+ .escape_string = driver_mysql_escape_string,
+ .exec = driver_mysql_exec,
+ .query = driver_mysql_query,
+ .query_s = driver_mysql_query_s,
+
+ .transaction_begin = driver_mysql_transaction_begin,
+ .transaction_commit = driver_mysql_transaction_commit,
+ .transaction_commit_s = driver_mysql_transaction_commit_s,
+ .transaction_rollback = driver_mysql_transaction_rollback,
+
+ .update = driver_mysql_update,
+
+ .escape_blob = driver_mysql_escape_blob,
}
};
const struct sql_result driver_mysql_result = {
.v = {
- driver_mysql_result_free,
- driver_mysql_result_next_row,
- driver_mysql_result_get_fields_count,
- driver_mysql_result_get_field_name,
- driver_mysql_result_find_field,
- driver_mysql_result_get_field_value,
- driver_mysql_result_get_field_value_binary,
- driver_mysql_result_find_field_value,
- driver_mysql_result_get_values,
- driver_mysql_result_get_error,
- NULL,
+ .free = driver_mysql_result_free,
+ .next_row = driver_mysql_result_next_row,
+ .get_fields_count = driver_mysql_result_get_fields_count,
+ .get_field_name = driver_mysql_result_get_field_name,
+ .find_field = driver_mysql_result_find_field,
+ .get_field_value = driver_mysql_result_get_field_value,
+ .get_field_value_binary = driver_mysql_result_get_field_value_binary,
+ .find_field_value = driver_mysql_result_find_field_value,
+ .get_values = driver_mysql_result_get_values,
+ .get_error = driver_mysql_result_get_error,
}
};
const struct sql_result driver_mysql_error_result = {
.v = {
- driver_mysql_result_free,
- driver_mysql_result_error_next_row,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- driver_mysql_result_get_error,
- NULL,
+ .free = driver_mysql_result_free,
+ .next_row = driver_mysql_result_error_next_row,
+ .get_error = driver_mysql_result_get_error,
},
.failed_try_retry = TRUE
};
.flags = SQL_DB_FLAG_POOLED,
.v = {
- driver_pgsql_init_v,
- driver_pgsql_deinit_v,
- driver_pgsql_connect,
- driver_pgsql_disconnect,
- driver_pgsql_escape_string,
- driver_pgsql_exec,
- driver_pgsql_query,
- driver_pgsql_query_s,
-
- driver_pgsql_transaction_begin,
- driver_pgsql_transaction_commit,
- driver_pgsql_transaction_commit_s,
- driver_pgsql_transaction_rollback,
-
- driver_pgsql_update,
-
- driver_pgsql_escape_blob
+ .init = driver_pgsql_init_v,
+ .deinit = driver_pgsql_deinit_v,
+ .connect = driver_pgsql_connect,
+ .disconnect = driver_pgsql_disconnect,
+ .escape_string = driver_pgsql_escape_string,
+ .exec = driver_pgsql_exec,
+ .query = driver_pgsql_query,
+ .query_s = driver_pgsql_query_s,
+
+ .transaction_begin = driver_pgsql_transaction_begin,
+ .transaction_commit = driver_pgsql_transaction_commit,
+ .transaction_commit_s = driver_pgsql_transaction_commit_s,
+ .transaction_rollback = driver_pgsql_transaction_rollback,
+
+ .update = driver_pgsql_update,
+
+ .escape_blob = driver_pgsql_escape_blob,
}
};
const struct sql_result driver_pgsql_result = {
.v = {
- driver_pgsql_result_free,
- driver_pgsql_result_next_row,
- driver_pgsql_result_get_fields_count,
- driver_pgsql_result_get_field_name,
- driver_pgsql_result_find_field,
- driver_pgsql_result_get_field_value,
- driver_pgsql_result_get_field_value_binary,
- driver_pgsql_result_find_field_value,
- driver_pgsql_result_get_values,
- driver_pgsql_result_get_error,
- NULL,
+ .free = driver_pgsql_result_free,
+ .next_row = driver_pgsql_result_next_row,
+ .get_fields_count = driver_pgsql_result_get_fields_count,
+ .get_field_name = driver_pgsql_result_get_field_name,
+ .find_field = driver_pgsql_result_find_field,
+ .get_field_value = driver_pgsql_result_get_field_value,
+ .get_field_value_binary = driver_pgsql_result_get_field_value_binary,
+ .find_field_value = driver_pgsql_result_find_field_value,
+ .get_values = driver_pgsql_result_get_values,
+ .get_error = driver_pgsql_result_get_error,
}
};
.flags = SQL_DB_FLAG_BLOCKING,
.v = {
- driver_sqlite_init_v,
- driver_sqlite_deinit_v,
- driver_sqlite_connect,
- driver_sqlite_disconnect,
- driver_sqlite_escape_string,
- driver_sqlite_exec,
- driver_sqlite_query,
- driver_sqlite_query_s,
-
- driver_sqlite_transaction_begin,
- driver_sqlite_transaction_commit,
- driver_sqlite_transaction_commit_s,
- driver_sqlite_transaction_rollback,
- driver_sqlite_update,
-
- driver_sqlite_escape_blob
+ .init = driver_sqlite_init_v,
+ .deinit = driver_sqlite_deinit_v,
+ .connect = driver_sqlite_connect,
+ .disconnect = driver_sqlite_disconnect,
+ .escape_string = driver_sqlite_escape_string,
+ .exec = driver_sqlite_exec,
+ .query = driver_sqlite_query,
+ .query_s = driver_sqlite_query_s,
+
+ .transaction_begin = driver_sqlite_transaction_begin,
+ .transaction_commit = driver_sqlite_transaction_commit,
+ .transaction_commit_s = driver_sqlite_transaction_commit_s,
+ .transaction_rollback = driver_sqlite_transaction_rollback,
+
+ .update = driver_sqlite_update,
+
+ .escape_blob = driver_sqlite_escape_blob,
}
};
const struct sql_result driver_sqlite_result = {
.v = {
- driver_sqlite_result_free,
- driver_sqlite_result_next_row,
- driver_sqlite_result_get_fields_count,
- driver_sqlite_result_get_field_name,
- driver_sqlite_result_find_field,
- driver_sqlite_result_get_field_value,
- driver_sqlite_result_get_field_value_binary,
- driver_sqlite_result_find_field_value,
- driver_sqlite_result_get_values,
- driver_sqlite_result_get_error,
- NULL,
+ .free = driver_sqlite_result_free,
+ .next_row = driver_sqlite_result_next_row,
+ .get_fields_count = driver_sqlite_result_get_fields_count,
+ .get_field_name = driver_sqlite_result_get_field_name,
+ .find_field = driver_sqlite_result_find_field,
+ .get_field_value = driver_sqlite_result_get_field_value,
+ .get_field_value_binary = driver_sqlite_result_get_field_value_binary,
+ .find_field_value = driver_sqlite_result_find_field_value,
+ .get_values = driver_sqlite_result_get_values,
+ .get_error = driver_sqlite_result_get_error,
}
};
const struct sql_result driver_sqlite_error_result = {
.v = {
- driver_sqlite_result_free,
- driver_sqlite_result_error_next_row,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- driver_sqlite_result_get_error,
- NULL,
+ .free = driver_sqlite_result_free,
+ .next_row = driver_sqlite_result_error_next_row,
+ .get_error = driver_sqlite_result_get_error,
}
};
"",
.v = {
- NULL,
- driver_sqlpool_deinit,
- driver_sqlpool_connect,
- driver_sqlpool_disconnect,
- driver_sqlpool_escape_string,
- driver_sqlpool_exec,
- driver_sqlpool_query,
- driver_sqlpool_query_s,
-
- driver_sqlpool_transaction_begin,
- driver_sqlpool_transaction_commit,
- driver_sqlpool_transaction_commit_s,
- driver_sqlpool_transaction_rollback,
-
- driver_sqlpool_update,
-
- driver_sqlpool_escape_blob
+ .deinit = driver_sqlpool_deinit,
+ .connect = driver_sqlpool_connect,
+ .disconnect = driver_sqlpool_disconnect,
+ .escape_string = driver_sqlpool_escape_string,
+ .exec = driver_sqlpool_exec,
+ .query = driver_sqlpool_query,
+ .query_s = driver_sqlpool_query_s,
+
+ .transaction_begin = driver_sqlpool_transaction_begin,
+ .transaction_commit = driver_sqlpool_transaction_commit,
+ .transaction_commit_s = driver_sqlpool_transaction_commit_s,
+ .transaction_rollback = driver_sqlpool_transaction_rollback,
+
+ .update = driver_sqlpool_update,
+
+ .escape_blob = driver_sqlpool_escape_blob,
}
};
.name = "mysql",
.v = {
- driver_test_mysql_init,
- driver_test_deinit,
- driver_test_connect,
- driver_test_disconnect,
- driver_test_mysql_escape_string,
- driver_test_exec,
- driver_test_query,
- driver_test_query_s,
-
- driver_test_transaction_begin,
- driver_test_transaction_commit,
- driver_test_transaction_commit_s,
- driver_test_transaction_rollback,
- driver_test_update,
-
- driver_test_mysql_escape_blob
+ .init = driver_test_mysql_init,
+ .deinit = driver_test_deinit,
+ .connect = driver_test_connect,
+ .disconnect = driver_test_disconnect,
+ .escape_string = driver_test_mysql_escape_string,
+ .exec = driver_test_exec,
+ .query = driver_test_query,
+ .query_s = driver_test_query_s,
+
+ .transaction_begin = driver_test_transaction_begin,
+ .transaction_commit = driver_test_transaction_commit,
+ .transaction_commit_s = driver_test_transaction_commit_s,
+ .transaction_rollback = driver_test_transaction_rollback,
+ .update = driver_test_update,
+
+ .escape_blob = driver_test_mysql_escape_blob,
}
};
.name = "cassandra",
.v = {
- driver_test_cassandra_init,
- driver_test_deinit,
- driver_test_connect,
- driver_test_disconnect,
- driver_test_escape_string,
- driver_test_exec,
- driver_test_query,
- driver_test_query_s,
-
- driver_test_transaction_begin,
- driver_test_transaction_commit,
- driver_test_transaction_commit_s,
- driver_test_transaction_rollback,
- driver_test_update,
-
- driver_test_escape_blob
+ .init = driver_test_cassandra_init,
+ .deinit = driver_test_deinit,
+ .connect = driver_test_connect,
+ .disconnect = driver_test_disconnect,
+ .escape_string = driver_test_escape_string,
+ .exec = driver_test_exec,
+ .query = driver_test_query,
+ .query_s = driver_test_query_s,
+
+ .transaction_begin = driver_test_transaction_begin,
+ .transaction_commit = driver_test_transaction_commit,
+ .transaction_commit_s = driver_test_transaction_commit_s,
+ .transaction_rollback = driver_test_transaction_rollback,
+ .update = driver_test_update,
+
+ .escape_blob = driver_test_escape_blob,
}
};
.name = "sqlite",
.v = {
- driver_test_sqlite_init,
- driver_test_deinit,
- driver_test_connect,
- driver_test_disconnect,
- driver_test_escape_string,
- driver_test_exec,
- driver_test_query,
- driver_test_query_s,
-
- driver_test_transaction_begin,
- driver_test_transaction_commit,
- driver_test_transaction_commit_s,
- driver_test_transaction_rollback,
- driver_test_update,
-
- driver_test_escape_blob
+ .init = driver_test_sqlite_init,
+ .deinit = driver_test_deinit,
+ .connect = driver_test_connect,
+ .disconnect = driver_test_disconnect,
+ .escape_string = driver_test_escape_string,
+ .exec = driver_test_exec,
+ .query = driver_test_query,
+ .query_s = driver_test_query_s,
+
+ .transaction_begin = driver_test_transaction_begin,
+ .transaction_commit = driver_test_transaction_commit,
+ .transaction_commit_s = driver_test_transaction_commit_s,
+ .transaction_rollback = driver_test_transaction_rollback,
+ .update = driver_test_update,
+
+ .escape_blob = driver_test_escape_blob,
}
};
const struct sql_result driver_test_result = {
.v = {
- driver_test_result_free,
- driver_test_result_next_row,
- driver_test_result_get_fields_count,
- driver_test_result_get_field_name,
- driver_test_result_find_field,
- driver_test_result_get_field_value,
- driver_test_result_get_field_value_binary,
- driver_test_result_find_field_value,
- driver_test_result_get_values,
- driver_test_result_get_error,
- NULL,
+ .free = driver_test_result_free,
+ .next_row = driver_test_result_next_row,
+ .get_fields_count = driver_test_result_get_fields_count,
+ .get_field_name = driver_test_result_get_field_name,
+ .find_field = driver_test_result_find_field,
+ .get_field_value = driver_test_result_get_field_value,
+ .get_field_value_binary = driver_test_result_get_field_value_binary,
+ .find_field_value = driver_test_result_find_field_value,
+ .get_values = driver_test_result_get_values,
+ .get_error = driver_test_result_get_error,
}
};