sql-api-private.h revision 0dffa25d211be541ee3c953b23566a1a990789df
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen /* not connected to database */
edf7428147facc11ddb43b9a874a99b96486d42dTimo Sirainen /* waiting for connection attempt to succeed or fail */
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen /* connected, allowing more queries */
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen /* connected, no more queries allowed */
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen/* Minimum delay between reconnecting to same server */
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen/* Maximum time to avoiding reconnecting to same server */
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen/* If no servers are connected but a query is requested, try reconnecting to
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen next server which has been disconnected longer than this (with a single
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen server setup this is really the "max delay" and the SQL_CONNECT_MAX_DELAY
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen is never used). */
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen/* Abort connect() if it can't connect within this time. */
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen/* Abort queries after this many seconds */
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen/* Default max. number of connections to create per host */
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen#define SQL_ERRSTR_NOT_CONNECTED "Not connected to database"
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen unsigned int id;
6c07b8ddc5e894feead4d422075b079451721241Timo Sirainenextern struct sql_db_module_register sql_db_module_register;
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen struct sql_db *(*init)(const char *connect_string);
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen const char *(*escape_string)(struct sql_db *db, const char *string);
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen void (*exec)(struct sql_db *db, const char *query);
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen void (*query)(struct sql_db *db, const char *query,
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen sql_query_callback_t *callback, void *context);
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen struct sql_result *(*query_s)(struct sql_db *db, const char *query);
73bfdbe28c2ce6d143eadf0bab8ccfbe4cab0faeTimo Sirainen struct sql_transaction_context *(*transaction_begin)(struct sql_db *db);
edf7428147facc11ddb43b9a874a99b96486d42dTimo Sirainen void (*transaction_commit)(struct sql_transaction_context *ctx,
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen int (*transaction_commit_s)(struct sql_transaction_context *ctx,
73bfdbe28c2ce6d143eadf0bab8ccfbe4cab0faeTimo Sirainen const char **error_r);
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen void (*transaction_rollback)(struct sql_transaction_context *ctx);
73bfdbe28c2ce6d143eadf0bab8ccfbe4cab0faeTimo Sirainen void (*update)(struct sql_transaction_context *ctx, const char *query,
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen unsigned int *affected_rows);
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen ARRAY(union sql_db_module_context *) module_contexts;
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen void (*state_change_callback)(struct sql_db *db,
244fcb971a4a38b476f733bfd5ed5d18b2c831f7Timo Sirainen /* last time we started connecting to this server
3a734c9c3efd87864d1ad860826fd4e787457bedTimo Sirainen (which may or may not have succeeded) */
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen unsigned int (*get_fields_count)(struct sql_result *result);
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen const char *(*get_field_name)(struct sql_result *result,
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen unsigned int idx);
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen int (*find_field)(struct sql_result *result, const char *field_name);
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen const char *(*get_field_value)(struct sql_result *result,
73bfdbe28c2ce6d143eadf0bab8ccfbe4cab0faeTimo Sirainen unsigned int idx);
73bfdbe28c2ce6d143eadf0bab8ccfbe4cab0faeTimo Sirainen const unsigned char *
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen (*get_field_value_binary)(struct sql_result *result,
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen unsigned int idx,
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen const char *(*find_field_value)(struct sql_result *result,
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen const char *const *(*get_values)(struct sql_result *result);
517d1e7142d57299c733b30423e35e7e1f8d01d6Timo Sirainen const char *(*get_error)(struct sql_result *result);
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen /* commit() must use this query list if head is non-NULL. */
94a78eb438622fa53abef1e1726714dacad4b61cTimo SirainenARRAY_DEFINE_TYPE(sql_drivers, const struct sql_db *);
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainenextern struct sql_result sql_not_connected_result;
e80203675151ef9d4f3f850cf02041042eb13096Timo Sirainendriver_sqlpool_init(const char *connect_string, const struct sql_db *driver);
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainenvoid sql_db_set_state(struct sql_db *db, enum sql_db_state state);
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainenvoid sql_transaction_add_query(struct sql_transaction_context *ctx, pool_t pool,
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen const char *query, unsigned int *affected_rows);