2 Bacula® - The Network Backup Solution
4 Copyright (C) 2009-2014 Free Software Foundation Europe e.V.
6 The main author of Bacula is Kern Sibbald, with contributions from many
7 others, a complete list can be found in the file AUTHORS.
9 You may use this file and others of this release according to the
10 license defined in the LICENSE file, which includes the Affero General
11 Public License, v3.0 ("AGPLv3") and some additional permissions and
12 terms pursuant to its AGPLv3 Section 7.
14 Bacula® is a registered trademark of Kern Sibbald.
17 * Bacula Glue code for the catalog refactoring.
19 * Written by Marco van Wieringen, November 2009
24 #if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL
30 /* -----------------------------------------------------------------------
32 * Generic Glue Routines
34 * -----------------------------------------------------------------------
36 bool db_match_database(B_DB *mdb, const char *db_driver, const char *db_name,
37 const char *db_address, int db_port)
39 return mdb->db_match_database(db_driver, db_name, db_address, db_port);
42 B_DB *db_clone_database_connection(B_DB *mdb, JCR *jcr, bool mult_db_connections)
44 return mdb->db_clone_database_connection(jcr, mult_db_connections);
47 const char *db_get_type(B_DB *mdb)
49 return mdb->db_get_type();
52 int db_get_type_index(B_DB *mdb)
54 return mdb->db_get_type_index();
57 bool db_open_database(JCR *jcr, B_DB *mdb)
59 return mdb->db_open_database(jcr);
62 void db_close_database(JCR *jcr, B_DB *mdb)
65 mdb->db_close_database(jcr);
69 void db_thread_cleanup(B_DB *mdb)
71 mdb->db_thread_cleanup();
74 void db_escape_string(JCR *jcr, B_DB *mdb, char *snew, char *old, int len)
76 mdb->db_escape_string(jcr, snew, old, len);
79 char *db_escape_object(JCR *jcr, B_DB *mdb, char *old, int len)
81 return mdb->db_escape_object(jcr, old, len);
84 void db_unescape_object(JCR *jcr, B_DB *mdb,
85 char *from, int32_t expected_len,
86 POOLMEM **dest, int32_t *len)
88 mdb->db_unescape_object(jcr, from, expected_len, dest, len);
91 void db_start_transaction(JCR *jcr, B_DB *mdb)
93 mdb->db_start_transaction(jcr);
96 void db_end_transaction(JCR *jcr, B_DB *mdb)
98 mdb->db_end_transaction(jcr);
101 bool db_sql_query(B_DB *mdb, const char *query, int flags)
104 return mdb->db_sql_query(query, flags);
107 bool db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
110 return mdb->db_sql_query(query, result_handler, ctx);
113 bool db_big_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
116 return mdb->db_big_sql_query(query, result_handler, ctx);
119 void sql_free_result(B_DB *mdb)
121 ((B_DB_PRIV *)mdb)->sql_free_result();
124 SQL_ROW sql_fetch_row(B_DB *mdb)
126 return ((B_DB_PRIV *)mdb)->sql_fetch_row();
129 bool sql_query(B_DB *mdb, const char *query, int flags)
132 return ((B_DB_PRIV *)mdb)->sql_query(query, flags);
135 const char *sql_strerror(B_DB *mdb)
137 return ((B_DB_PRIV *)mdb)->sql_strerror();
140 int sql_num_rows(B_DB *mdb)
142 return ((B_DB_PRIV *)mdb)->sql_num_rows();
145 void sql_data_seek(B_DB *mdb, int row)
147 ((B_DB_PRIV *)mdb)->sql_data_seek(row);
150 int sql_affected_rows(B_DB *mdb)
152 return ((B_DB_PRIV *)mdb)->sql_affected_rows();
155 uint64_t sql_insert_autokey_record(B_DB *mdb, const char *query, const char *table_name)
157 return ((B_DB_PRIV *)mdb)->sql_insert_autokey_record(query, table_name);
160 void sql_field_seek(B_DB *mdb, int field)
162 ((B_DB_PRIV *)mdb)->sql_field_seek(field);
165 SQL_FIELD *sql_fetch_field(B_DB *mdb)
167 return ((B_DB_PRIV *)mdb)->sql_fetch_field();
170 int sql_num_fields(B_DB *mdb)
172 return ((B_DB_PRIV *)mdb)->sql_num_fields();
175 bool sql_field_is_not_null(B_DB *mdb, int field_type)
177 return ((B_DB_PRIV *)mdb)->sql_field_is_not_null(field_type);
180 bool sql_field_is_numeric(B_DB *mdb, int field_type)
182 return ((B_DB_PRIV *)mdb)->sql_field_is_numeric(field_type);
185 bool sql_batch_start(JCR *jcr, B_DB *mdb)
187 return ((B_DB_PRIV *)mdb)->sql_batch_start(jcr);
190 bool sql_batch_end(JCR *jcr, B_DB *mdb, const char *error)
192 return ((B_DB_PRIV *)mdb)->sql_batch_end(jcr, error);
195 bool sql_batch_insert(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
197 return ((B_DB_PRIV *)mdb)->sql_batch_insert(jcr, ar);
200 #endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL */