]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
tweak bdb_get_media_record() don't duplicate the field twice
authorAlain Spineux <alain@baculasystems.com>
Tue, 6 Dec 2022 10:31:39 +0000 (11:31 +0100)
committerEric Bollengier <eric@baculasystems.com>
Thu, 14 Sep 2023 11:57:00 +0000 (13:57 +0200)
- just make the "WHERE" clause vary
- this reduce the risk of having the field in a different order in
  both query

bacula/src/cats/sql_get.c

index 767a929f83dad85522bbe9fa4c44f80e16d1a515..95a99ecbc236eed0f9a0acbc15fabb716b769568 100644 (file)
@@ -1362,32 +1362,23 @@ 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,Pool.Name,Protected,UseProtect,VolEncrypted "
-         "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,Pool.Name,Protected,UseProtect,VolEncrypted "
-         "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,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,Pool.Name,Protected,UseProtect,VolEncrypted "
+      "FROM Media JOIN Pool USING (PoolId) %s", filter.c_str());
 
    if (QueryDB(jcr, cmd)) {
       char ed1[50];