/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
mdb->path = get_pool_memory(PM_FNAME);
mdb->esc_name = get_pool_memory(PM_FNAME);
mdb->esc_path = get_pool_memory(PM_FNAME);
+ mdb->allow_transactions = mult_db_connections;
qinsert(&db_list, &mdb->bq); /* put db in list */
Dmsg3(100, "initdb ref=%d connected=%d db=%p\n", mdb->ref_count,
mdb->connected, mdb->db);
}
if ((errstat=rwl_init(&mdb->lock)) != 0) {
+ berrno be;
Mmsg1(&mdb->errmsg, _("Unable to initialize DB lock. ERR=%s\n"),
- strerror(errstat));
+ be.bstrerror(errstat));
V(mutex);
return 0;
}
"Database=%s User=%s\n"
"MySQL connect failed either server not running or your authorization is incorrect.\n"),
mdb->db_name, mdb->db_user);
+#if MYSQL_VERSION_ID >= 40101
+ Dmsg3(50, "Error %u (%s): %s\n",
+ mysql_errno(&(mdb->mysql)), mysql_sqlstate(&(mdb->mysql)),
+ mysql_error(&(mdb->mysql)));
+#else
+ Dmsg2(50, "Error %u: %s\n",
+ mysql_errno(&(mdb->mysql)), mysql_error(&(mdb->mysql)));
+#endif
V(mutex);
return 0;
}
Dmsg3(100, "opendb ref=%d connected=%d db=%p\n", mdb->ref_count,
mdb->connected, mdb->db);
+ /* Set connection timeout to 8 days specialy for batch mode */
+ sql_query(mdb, "SET wait_timeout=691200");
+ sql_query(mdb, "SET interactive_timeout=691200");
+
V(mutex);
return 1;
}
* Submit a general SQL command (cmd), and for each row returned,
* the sqlite_handler is called with the ctx.
*/
-int db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
+bool db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
{
SQL_ROW row;
bool send = true;
if (sql_query(mdb, query) != 0) {
Mmsg(mdb->errmsg, _("Query failed: %s: ERR=%s\n"), query, sql_strerror(mdb));
db_unlock(mdb);
- return 0;
+ return false;
}
if (result_handler != NULL) {
if ((mdb->result = sql_use_result(mdb)) != NULL) {
}
}
db_unlock(mdb);
- return 1;
+ return true;
}
}
#ifdef HAVE_BATCH_FILE_INSERT
-char *my_mysql_batch_lock_path_query = "LOCK TABLES Path write, "
- " batch write, "
- " Path as p write ";
-
-
-char *my_mysql_batch_lock_filename_query = "LOCK TABLES Filename write, "
- " batch write, "
- " Filename as f write ";
-
-char *my_mysql_batch_unlock_tables_query = "UNLOCK TABLES";
-
-char *my_mysql_batch_fill_path_query = "INSERT INTO Path (Path) "
- " SELECT a.Path FROM "
- " (SELECT DISTINCT Path "
- " FROM batch) AS a "
- " WHERE NOT EXISTS "
- " (SELECT Path "
- " FROM Path AS p "
- " WHERE p.Path = a.Path) ";
-
-char *my_mysql_batch_fill_filename_query = "INSERT INTO Filename (Name) "
- " SELECT a.Name FROM "
- " (SELECT DISTINCT Name "
- " FROM batch) AS a "
- " WHERE NOT EXISTS "
- " (SELECT Name "
- " FROM Filename AS f "
- " WHERE f.Name = a.Name) ";
+const char *my_mysql_batch_lock_path_query =
+ "LOCK TABLES Path write, batch write, Path as p write";
+
+
+const char *my_mysql_batch_lock_filename_query =
+ "LOCK TABLES Filename write, batch write, Filename as f write";
+
+const char *my_mysql_batch_unlock_tables_query = "UNLOCK TABLES";
+
+const char *my_mysql_batch_fill_path_query =
+ "INSERT INTO Path (Path) "
+ "SELECT a.Path FROM "
+ "(SELECT DISTINCT Path FROM batch) AS a WHERE NOT EXISTS "
+ "(SELECT Path FROM Path AS p WHERE p.Path = a.Path)";
+
+const char *my_mysql_batch_fill_filename_query =
+ "INSERT INTO Filename (Name) "
+ "SELECT a.Name FROM "
+ "(SELECT DISTINCT Name FROM batch) AS a WHERE NOT EXISTS "
+ "(SELECT Name FROM Filename AS f WHERE f.Name = a.Name)";
#endif /* HAVE_BATCH_FILE_INSERT */
#endif /* HAVE_MYSQL */