- Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,"
-"VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,"
-"VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,Recycle,Slot,"
-"FirstWritten,LastWritten "
-"FROM Media WHERE PoolId=%u AND MediaType='%s' AND VolStatus='%s' "
-"ORDER BY MediaId", mr->PoolId, mr->MediaType, mr->VolStatus);
+ if (InChanger) {
+ Mmsg(changer, " AND InChanger=1 AND StorageId=%s ",
+ edit_int64(mr->StorageId, ed1));
+ }
+ /* Volumes will be automatically excluded from the query, we just take the
+ * first one of the list
+ */
+ if (mr->exclude_list && *mr->exclude_list) {
+ item = 1;
+ Mmsg(exclude, " AND MediaId NOT IN (%s) ", mr->exclude_list);
+ }
+ if (strcmp(mr->VolStatus, "Recycle") == 0 ||
+ strcmp(mr->VolStatus, "Purged") == 0) {
+ order = "AND Recycle=1 ORDER BY LastWritten ASC,MediaId"; /* take oldest that can be recycled */
+ } else {
+ order = sql_media_order_most_recently_written[bdb_get_type_index()]; /* take most recently written */
+ }
+ Mmsg(cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,"
+ "VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,"
+ "MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs,"
+ "MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger,"
+ "EndFile,EndBlock,VolParts,LabelType,LabelDate,StorageId,"
+ "Enabled,LocationId,RecycleCount,InitialWrite,"
+ "ScratchPoolId,RecyclePoolId,VolReadTime,VolWriteTime,ActionOnPurge "
+ "FROM Media WHERE PoolId=%s AND MediaType='%s' AND Enabled=1 "
+ "AND VolStatus='%s' "
+ "%s "
+ "%s "
+ "%s "
+ "%s LIMIT %d",
+ edit_int64(mr->PoolId, ed1), esc_type,
+ esc_status,
+ voltype.c_str(),
+ changer.c_str(), exclude.c_str(), order, item);