]> git.sur5r.net Git - bacula/bacula/commitdiff
ebl Add a sort to db_get_file_list to improve
authorEric Bollengier <eric@eb.homelinux.org>
Tue, 8 Jul 2008 11:15:32 +0000 (11:15 +0000)
committerEric Bollengier <eric@eb.homelinux.org>
Tue, 8 Jul 2008 11:15:32 +0000 (11:15 +0000)
     bsr construction time.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@7340 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/cats/sql_get.c
bacula/src/dird/bsr.c
bacula/technotes-2.5

index c0fbb3f5bc85af092ecb6aac91206f73cffc5d6d..468c9e628e8274e20b6ea44ad1d597760cac549e 100644 (file)
@@ -1022,10 +1022,7 @@ bool db_get_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
  * 2) Take only the last version of each file (Temp subquery) => accurate list is ok
  * 3) Join the result to file table to get fileindex, jobid and lstat information
  *
- * TODO: On postgresql, this is done with
-SELECT DISTINCT ON (PathId, FilenameId) FileIndex, Path, Name, LStat
-  FROM File JOIN Filename USING (FilenameId) JOIN Path USING (PathId) WHERE JobId IN (40341)
- ORDER BY PathId, FilenameId, JobId DESC
+ * TODO: See if we can do the SORT only if needed (as an argument)
  */
 bool db_get_file_list(JCR *jcr, B_DB *mdb, char *jobids, 
                       DB_RESULT_HANDLER *result_handler, void *ctx)
@@ -1051,7 +1048,8 @@ bool db_get_file_list(JCR *jcr, B_DB *mdb, char *jobids,
  "JOIN Filename ON (Filename.FilenameId = Temp.FilenameId) "
  "JOIN Path ON (Path.PathId = Temp.PathId) "
  "JOIN File ON (File.FileId = Temp.FileId) "
- "WHERE File.FileIndex > 0 ",
+"WHERE File.FileIndex > 0 ORDER BY JobId, FileIndex ASC",     /* Return sorted by JobId, */
+                                                             /* FileIndex for restore code */ 
              jobids);
 #else
    /*  
index 4e03daa5a257079118b3b929e9f2ddbc160b7ee4..8820d6f31bdc8744217c52b27ca846014b1a13c3 100644 (file)
@@ -491,6 +491,7 @@ void print_bsr(UAContext *ua, RBSR *bsr)
  * Add a FileIndex to the list of BootStrap records.
  *  Here we are only dealing with JobId's and the FileIndexes
  *  associated with those JobIds.
+ * We expect that JobId, FileIndex are sorted ascending.
  */
 void add_findex(RBSR *bsr, uint32_t JobId, int32_t findex)
 {
index 6e74306c9965ff89d8bc0eba77ec1ab85cedf600..d45acbf8683c0f1851359bdf0a75589fd97531aa 100644 (file)
@@ -30,6 +30,8 @@ vtape driver
 
 
 General:
+08Jul08
+ebl  Add a sort to db_get_file_list() to improve bsr construction time.
 07Jul08
 kes  Add a mtx-changer.conf file that is not overwritten during
      an upgrade. It fully configures the mtx-changer script.