]> git.sur5r.net Git - bacula/bacula/commitdiff
bvfs: Restore should be ok with MySQL
authorEric Bollengier <eric@eb.homelinux.org>
Thu, 7 Oct 2010 16:09:48 +0000 (18:09 +0200)
committerEric Bollengier <eric@eb.homelinux.org>
Thu, 7 Oct 2010 18:30:07 +0000 (20:30 +0200)
bacula/src/cats/bvfs.c
bacula/src/cats/sql_cmds.c
bacula/src/cats/sql_cmds.h

index 942e971e7b81f7392b3601c9498fc2a71c2a8d1f..c3b8bbd8a28ba94d589990bebc64b3f27931a1c7 100644 (file)
@@ -889,15 +889,8 @@ bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
       goto bail_out;
    }
 
-   /* TODO: handle basejob and MySQL/SQLite3 */
-   Mmsg(query, "CREATE TABLE %s AS ( "
-        "SELECT JobId, FileIndex, FileId "
-          "FROM ( "
-     "SELECT DISTINCT ON (PathId, FilenameId) JobId, FileIndex, FileId "
-       "FROM btemp%s "
-      "ORDER BY PathId, FilenameId, JobId DESC "
-          ") AS T "
-          "WHERE FileIndex > 0)", output_table, output_table);
+   /* TODO: handle basejob and SQLite3 */
+   Mmsg(query, sql_bvfs_select[db_type], output_table, output_table);
 
    Dmsg1(dbglevel_sql, "q=%s\n", query.c_str());
    if (!db_sql_query(db, query.c_str(), NULL, NULL)) {
index eca649a19be87a2028e13ffef93d9f36569eb006..a1bbd698c979d4c7cc4361b760e1fbe5f5450496 100644 (file)
@@ -915,3 +915,27 @@ const uint32_t sql_get_max_connections_index[5] = {
    /* Ingres (TODO) */
    0
 };
+
+const char *sql_bvfs_select[5] = {
+   /* Mysql */
+   "CREATE TABLE %s AS ( "
+      "SELECT max(JobId) as JobId, FileIndex, FileId "
+        "FROM btemp%s "
+      "GROUP BY PathId, FilenameId "
+   "HAVING FileIndex > 0 ",
+   /* Postgresql */
+   "CREATE TABLE %s AS ( "
+        "SELECT JobId, FileIndex, FileId "
+          "FROM ( "
+     "SELECT DISTINCT ON (PathId, FilenameId) JobId, FileIndex, FileId "
+       "FROM btemp%s "
+      "ORDER BY PathId, FilenameId, JobId DESC "
+          ") AS T "
+          "WHERE FileIndex > 0)",
+   /* SQLite */
+   "SELECT 0",
+   /* SQLite3 */
+   "SELECT 0",
+   /* Ingres (TODO) */
+   "SELECT 0"
+};
index 148dd0aff05e5337510e927f10a102e58f47a84f..1446d800e0e38ef45a19514160bfeb8e10588b76 100644 (file)
@@ -82,3 +82,4 @@ extern const char CATS_IMP_EXP *uar_jobid_fileindex_from_dir[5];
 extern const char CATS_IMP_EXP *sql_media_order_most_recently_written[5];
 extern const char CATS_IMP_EXP *sql_get_max_connections[5];
 extern const uint32_t CATS_IMP_EXP sql_get_max_connections_index[5];
+extern const char *sql_bvfs_select[5];