]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Fix list jobmedia command
authorEric Bollengier <eric@baculasystems.com>
Fri, 17 Mar 2023 10:40:19 +0000 (11:40 +0100)
committerEric Bollengier <eric@baculasystems.com>
Tue, 2 May 2023 07:07:18 +0000 (09:07 +0200)
bacula/src/cats/sql_list.c

index ef16acb3c1d43b843206dca3ac0734287ea89b68..19f0e959cb7e4b12008e38b1f5893eff7b28fae7 100644 (file)
@@ -396,25 +396,30 @@ void BDB::bdb_list_jobmedia_records(JCR *jcr, uint32_t JobId, char *volume,
 {
    POOL_MEM where2;
    bdb_lock();
+   const char *where_and = "WHERE";
+
    /* Get some extra SQL parameters if needed */
    const char *where = get_acls(DB_ACL_BIT(DB_ACL_JOB)     |
                                 DB_ACL_BIT(DB_ACL_FILESET) |
-                                DB_ACL_BIT(DB_ACL_CLIENT), (JobId == 0 || volume != NULL));
+                                DB_ACL_BIT(DB_ACL_CLIENT), true);
 
    const char *join = *where ? get_acl_join_filter(DB_ACL_BIT(DB_ACL_JOB)     |
                                                    DB_ACL_BIT(DB_ACL_FILESET) |
                                                    DB_ACL_BIT(DB_ACL_CLIENT)) : "";
 
+   if (*where) {
+      where_and = "AND";
+   }
    if (JobId) {
-      Mmsg(where2, " WHERE JobMedia.JobId=%lu ", JobId);
+      Mmsg(where2, " %s JobMedia.JobId=%lu ", where_and, JobId);
+      where_and = "AND";
    }
-   
    if (volume) {
       POOL_MEM tmp, tmp2;
       int len = strlen(volume);
       tmp.check_size(len*2+1);
       db_escape_string(jcr, this, tmp.c_str(), volume, len);
-      Mmsg(tmp2, " %s Media.VolumeName = '%s' ", JobId == 0 ?"WHERE": "AND", tmp.c_str());
+      Mmsg(tmp2, " %s Media.VolumeName = '%s' ", where_and, tmp.c_str());
       pm_strcat(where2, tmp2.c_str());
    }
 
@@ -425,15 +430,15 @@ void BDB::bdb_list_jobmedia_records(JCR *jcr, uint32_t JobId, char *volume,
            "FROM JobMedia JOIN Media USING (MediaId) %s "
            "%s %s ORDER BY JobMediaId ASC",
            join,
-           where2.c_str(),
-           where);
+           where,
+           where2.c_str());
 
    } else {
       Mmsg(cmd, "SELECT JobId,Media.VolumeName,FirstIndex,LastIndex "
            "FROM JobMedia JOIN Media USING (MediaId) %s %s %s ORDER BY JobMediaId ASC",
            join,
-           where2.c_str(),
-           where);
+           where,
+           where2.c_str());
    }
    Dmsg1(DT_SQL|50, "q=%s\n", cmd);