diff -ru bacula-5.2.13/src/cats/bvfs.c bacula-5.2.13-modificado/src/cats/bvfs.c
--- bacula-5.2.13/src/cats/bvfs.c	2013-02-19 20:21:35.000000000 +0100
+++ bacula-5.2.13-modificado/src/cats/bvfs.c	2014-12-25 22:32:55.000000000 +0100
@@ -328,6 +328,7 @@
 {
    Dmsg0(dbglevel, "update_path_hierarchy_cache()\n");
    int ret=0;
+   int nb=2;
    uint32_t num;
    char jobid[50];
    edit_uint64(JobId, jobid);
@@ -403,6 +404,21 @@
       free(result);
    }
 
+  if (mdb->db_get_type_index() == SQL_TYPE_POSTGRESQL)
+  { 
+	   Mmsg(mdb->cmd, "SET enable_nestloop=OFF");
+       nb = DESACTIVA_NL(jcr, mdb, mdb->cmd);
+   
+   	   if (nb == 0)
+   	   { 	   
+   			Dmsg1(dbglevel, "NESTEED LOOP DESACTIVADO. NB VALE = %d\n", nb);
+   	   }
+   	   else
+  	   {
+	   		Dmsg1(dbglevel, "IMPOSIBLE DESACTIVAR NESTEED LOOP. NB VALE = %d\n", nb);
+       }
+   }
+
    if (mdb->db_get_type_index() == SQL_TYPE_SQLITE3) {
       Mmsg(mdb->cmd, 
  "INSERT INTO PathVisibility (PathId, JobId) "
@@ -430,7 +446,22 @@
    do {
       ret = QUERY_DB(jcr, mdb, mdb->cmd);
    } while (ret && sql_affected_rows(mdb) > 0);
+ 
+   if (mdb->db_get_type_index() == SQL_TYPE_POSTGRESQL)
+   { 
+ 	   Mmsg(mdb->cmd, "SET enable_nestloop=ON");
+       nb = DESACTIVA_NL(jcr, mdb, mdb->cmd);
    
+   	   if (nb == 0)
+   	   { 	   
+   			Dmsg1(dbglevel, "NESTEED LOOP ACTIVADO. NB VALE = %d\n", nb);
+   	   }
+   	   else
+   	   {
+ 	   		Dmsg1(dbglevel, "IMPOSIBLE ACTIVAR NESTEED LOOP. NB VALE = %d\n", nb);
+       }
+	}
+    
    Mmsg(mdb->cmd, "UPDATE Job SET HasCache=1 WHERE JobId=%s", jobid);
    UPDATE_DB(jcr, mdb, mdb->cmd);
 
diff -ru bacula-5.2.13/src/cats/cats.h bacula-5.2.13-modificado/src/cats/cats.h
--- bacula-5.2.13/src/cats/cats.h	2013-02-19 20:21:35.000000000 +0100
+++ bacula-5.2.13-modificado/src/cats/cats.h	2014-12-25 21:59:13.000000000 +0100
@@ -528,6 +528,7 @@
 #define INSERT_DB(jcr, db, cmd) InsertDB(__FILE__, __LINE__, jcr, db, cmd)
 #define QUERY_DB(jcr, db, cmd) QueryDB(__FILE__, __LINE__, jcr, db, cmd)
 #define DELETE_DB(jcr, db, cmd) DeleteDB(__FILE__, __LINE__, jcr, db, cmd)
+#define DESACTIVA_NL(jcr, db, cmd) desactiva_nestloop(__FILE__, __LINE__, jcr, db, cmd)
 
 #include "protos.h"
 #include "jcr.h"
@@ -584,6 +585,7 @@
 int QueryDB(const char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
 int InsertDB(const char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
 int DeleteDB(const char *file, int line, JCR *jcr, B_DB *db, char *delete_cmd);
+int desactiva_nestloop(const char *file, int line, JCR *jcr, B_DB *db, char *delete_cmd);
 int UpdateDB(const char *file, int line, JCR *jcr, B_DB *db, char *update_cmd);
 void split_path_and_file(JCR *jcr, B_DB *mdb, const char *fname);
 #endif /* __CATS_H_ */
diff -ru bacula-5.2.13/src/cats/sql.c bacula-5.2.13-modificado/src/cats/sql.c
--- bacula-5.2.13/src/cats/sql.c	2013-02-19 20:21:35.000000000 +0100
+++ bacula-5.2.13-modificado/src/cats/sql.c	2014-12-25 21:59:53.000000000 +0100
@@ -216,6 +216,9 @@
    return true;
 }
 
+
+
+
 /*
  * Utility routine for queries. The database MUST be locked before calling here.
  * Returns: 0 on failure
@@ -322,6 +325,31 @@
    return sql_affected_rows(mdb);
 }
 
+#if HAVE_POSTGRESQL
+
+/*
+ * Rutina para desactivar temporalmente enable_nestloop en PostgreSQL
+ *
+ * Returns: -1 on error
+ *          0 que son los rows afectados por esto si todo ha ido bien
+ */
+int
+desactiva_nestloop(const char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
+{
+
+   if (!sql_query(mdb, cmd)) {
+      m_msg(file, line, &mdb->errmsg, _("Fallo al desactivar nestloop %s failed:\n%s\n"), cmd, sql_strerror(mdb));
+      j_msg(file, line, jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      if (verbose) {
+         j_msg(file, line, jcr, M_INFO, 0, "%s\n", cmd);
+      }
+      return -1;
+   }
+   return sql_affected_rows(mdb);
+}
+
+#endif 
+
 
 /*
  * Get record max. Query is already in mdb->cmd
