]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Add Pool name to MEDIA_DBR
authorEric Bollengier <eric@baculasystems.com>
Fri, 17 Mar 2023 14:58:09 +0000 (15:58 +0100)
committerEric Bollengier <eric@baculasystems.com>
Tue, 2 May 2023 07:07:18 +0000 (09:07 +0200)
bacula/src/cats/cats.h
bacula/src/cats/sql_get.c

index b124208cd4adc266bad80732da7c04781fad222b..f762fa1aaf7babf79108dc33fca408372c3d0813 100644 (file)
@@ -408,6 +408,7 @@ public:
    DBId_t MediaId;                    /* Unique volume id */
    char VolumeName[MAX_NAME_LENGTH];  /* Volume name */
    char MediaType[MAX_NAME_LENGTH];   /* Media type */
+   char Pool[MAX_NAME_LENGTH];        /* Pool name directly available */
    DBId_t PoolId;                     /* Pool id */
    time_t   FirstWritten;             /* Time Volume first written this usage */
    time_t   LastWritten;              /* Time Volume last written */
index 0cf6157d7d03b2e0af39a303e48428545b738aa2..aa58906535baefff72dc18e302f371d62271595c 100644 (file)
@@ -1336,6 +1336,7 @@ bool BDB::bdb_get_media_record(JCR *jcr, MEDIA_DBR *mr)
    char ed1[50];
    bool ok = false;
    char esc[MAX_ESCAPE_NAME_LENGTH];
+   POOL_MEM filter;
 
    bdb_lock();
    if (mr->MediaId == 0 && mr->VolumeName[0] == 0) {
@@ -1345,31 +1346,24 @@ bool BDB::bdb_get_media_record(JCR *jcr, MEDIA_DBR *mr)
       return true;
    }
    if (mr->MediaId != 0) {               /* find by id */
-      Mmsg(cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,"
-         "VolBlocks,VolBytes,VolABytes,VolHoleBytes,VolHoles,VolMounts,"
-         "VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,"
-         "MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs,"
-         "MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger,"
-         "EndFile,EndBlock,VolType,VolParts,VolCloudParts,LastPartBytes,"
-         "LabelType,LabelDate,StorageId,"
-         "Enabled,LocationId,RecycleCount,InitialWrite,"
-         "ScratchPoolId,RecyclePoolId,VolReadTime,VolWriteTime,ActionOnPurge,CacheRetention "
-         "FROM Media WHERE MediaId=%s",
-         edit_int64(mr->MediaId, ed1));
+      Mmsg(filter, "WHERE MediaId=%s", edit_int64(mr->MediaId, ed1));
    } else {                           /* find by name */
       bdb_escape_string(jcr, esc, mr->VolumeName, strlen(mr->VolumeName));
-      Mmsg(cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,"
-         "VolBlocks,VolBytes,VolABytes,VolHoleBytes,VolHoles,VolMounts,"
-         "VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,"
-         "MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs,"
-         "MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger,"
-         "EndFile,EndBlock,VolType,VolParts,VolCloudParts,LastPartBytes,"
-         "LabelType,LabelDate,StorageId,"
-         "Enabled,LocationId,RecycleCount,InitialWrite,"
-         "ScratchPoolId,RecyclePoolId,VolReadTime,VolWriteTime,ActionOnPurge,CacheRetention "
-         "FROM Media WHERE VolumeName='%s'", esc);
+      Mmsg(filter, "WHERE VolumeName='%s'", esc);
    }
 
+   Mmsg(cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,"
+      "VolBlocks,VolBytes,VolABytes,VolHoleBytes,VolHoles,VolMounts,"
+      "VolErrors,VolWrites,Media.MaxVolBytes,Media.VolCapacityBytes,"
+      "MediaType,VolStatus,Media.PoolId,Media.VolRetention,Media.VolUseDuration,Media.MaxVolJobs,"
+      "Media.MaxVolFiles,Media.Recycle,Slot,FirstWritten,LastWritten,InChanger,"
+      "EndFile,EndBlock,VolType,VolParts,VolCloudParts,LastPartBytes,"
+      "Media.LabelType,LabelDate,StorageId,"
+      "Media.Enabled,LocationId,RecycleCount,InitialWrite,"
+      "Media.ScratchPoolId,Media.RecyclePoolId,VolReadTime,VolWriteTime,Media.ActionOnPurge,"
+      "Media.CacheRetention,Pool.Name "
+      "FROM Media JOIN Pool USING (PoolId) %s", filter.c_str());
+
    if (QueryDB(jcr, cmd)) {
       char ed1[50];
       if (sql_num_rows() > 1) {
@@ -1431,6 +1425,7 @@ bool BDB::bdb_get_media_record(JCR *jcr, MEDIA_DBR *mr)
             mr->VolWriteTime = str_to_int64(row[42]);
             mr->ActionOnPurge = str_to_int32(row[43]);
             mr->CacheRetention = str_to_int64(row[44]);
+            bstrncpy(mr->Pool, row[45], sizeof(mr->Pool));
 
             ok = true;
          }