]> git.sur5r.net Git - bacula/bacula/commitdiff
Enhance bvfs performance .bvfs_update for MySQL
authorEric Bollengier <eric@baculasystems.com>
Sun, 18 Oct 2015 09:39:00 +0000 (11:39 +0200)
committerEric Bollengier <eric@baculasystems.com>
Mon, 19 Oct 2015 08:04:29 +0000 (10:04 +0200)
Bug reported here:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=737821

bacula/src/cats/bvfs.c

index d73a49bbcd5c5940b043ac1cccd67d7e88a3e9d9..349407380ce2a16bc28ba00f9443f41e791e3fe9 100644 (file)
@@ -481,7 +481,19 @@ static int update_path_hierarchy_cache(JCR *jcr,
       "AND h.PPathId NOT IN (SELECT PathId FROM PathVisibility WHERE JobId=%s)",
            jobid, jobid, jobid );
 
-   } else {
+   }  else if (mdb->bdb_get_type_index() == SQL_TYPE_MYSQL) {
+      Mmsg(mdb->cmd,
+  "INSERT INTO PathVisibility (PathId, JobId)  "
+   "SELECT a.PathId,%s "
+   "FROM ( "
+     "SELECT DISTINCT h.PPathId AS PathId "
+       "FROM PathHierarchy AS h "
+       "JOIN  PathVisibility AS p ON (h.PathId=p.PathId) "
+      "WHERE p.JobId=%s) AS a "
+      "LEFT JOIN PathVisibility AS b ON (b.JobId=%s and a.PathId = b.PathId) "
+      "WHERE b.PathId IS NULL",  jobid, jobid, jobid);
+
+   } else {                     /* TODO: Test the MYSQL Query with PostgreSQL */
       Mmsg(mdb->cmd,
   "INSERT INTO PathVisibility (PathId, JobId)  "
    "SELECT a.PathId,%s "