From: Eric Bollengier Date: Fri, 17 Mar 2023 14:58:09 +0000 (+0100) Subject: Add Pool name to MEDIA_DBR X-Git-Tag: Release-13.0.3~29 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f0de2d635a382fe8afab88fedc447d10a7ad08c6;p=thirdparty%2Fbacula.git Add Pool name to MEDIA_DBR --- diff --git a/bacula/src/cats/cats.h b/bacula/src/cats/cats.h index b124208cd..f762fa1aa 100644 --- a/bacula/src/cats/cats.h +++ b/bacula/src/cats/cats.h @@ -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 */ diff --git a/bacula/src/cats/sql_get.c b/bacula/src/cats/sql_get.c index 0cf6157d7..aa5890653 100644 --- a/bacula/src/cats/sql_get.c +++ b/bacula/src/cats/sql_get.c @@ -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; }