Mmsg(cmd, "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,"
"AcceptAnyVolume,VolRetention,VolUseDuration,MaxVolJobs,MaxVolBytes,"
"AutoPrune,Recycle,PoolType,LabelFormat,Enabled,ScratchPoolId,"
- "RecyclePoolId,LabelType "
+ "RecyclePoolId,LabelType,ActionOnPurge,CacheRetention "
" FROM Pool WHERE Name='%s'", esc);
} else {
Mmsg(cmd, "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,"
"AcceptAnyVolume,VolRetention,VolUseDuration,MaxVolJobs,MaxVolBytes,"
"AutoPrune,Recycle,PoolType,LabelFormat,Enabled,ScratchPoolId,"
- "RecyclePoolId,LabelType "
+ "RecyclePoolId,LabelType,ActionOnPurge,CacheRetention "
" FROM Pool ORDER BY PoolId");
}
} else {
if (pdbr->Name[0] != 0) {
- Mmsg(cmd, "SELECT PoolId,Name,NumVols,MaxVols,PoolType,LabelFormat "
+ Mmsg(cmd, "SELECT PoolId,Name,NumVols,MaxVols,MaxVolBytes,VolRetention,Enabled,PoolType,LabelFormat "
"FROM Pool WHERE Name='%s'", esc);
} else {
- Mmsg(cmd, "SELECT PoolId,Name,NumVols,MaxVols,PoolType,LabelFormat "
+ Mmsg(cmd, "SELECT PoolId,Name,NumVols,MaxVols,MaxVolBytes,VolRetention,Enabled,PoolType,LabelFormat "
"FROM Pool ORDER BY PoolId");
}
}
bdb_lock();
bdb_escape_string(jcr, esc, mdbr->VolumeName, strlen(mdbr->VolumeName));
+ const char *join = "";
+ const char *where = "";
if (type == VERT_LIST) {
if (mdbr->VolumeName[0] != 0) {
Mmsg(cmd, "SELECT MediaId,VolumeName,Slot,PoolId,"
"MediaType,MediaTypeId,FirstWritten,LastWritten,LabelDate,VolJobs,"
- "VolFiles,VolBlocks,VolMounts,VolBytes,VolABytes,VolAPadding,"
- "VolHoleBytes,VolHoles,VolErrors,VolWrites,"
- "VolCapacityBytes,VolStatus,Enabled,Recycle,VolRetention,"
- "VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes,InChanger,"
- "EndFile,EndBlock,VolParts,LabelType,StorageId,DeviceId,"
+ "VolFiles,VolBlocks,VolParts,VolCloudParts,Media.CacheRetention,VolMounts,VolBytes,"
+ "VolABytes,VolAPadding,"
+ "VolHoleBytes,VolHoles,LastPartBytes,VolErrors,VolWrites,"
+ "VolCapacityBytes,VolStatus,Media.Enabled,Media.Recycle,Media.VolRetention,"
+ "Media.VolUseDuration,Media.MaxVolJobs,Media.MaxVolFiles,Media.MaxVolBytes,InChanger,"
+ "EndFile,EndBlock,VolType,Media.LabelType,StorageId,DeviceId,"
"MediaAddressing,VolReadTime,VolWriteTime,"
- "LocationId,RecycleCount,InitialWrite,ScratchPoolId,RecyclePoolId, "
- "ActionOnPurge,%s AS ExpiresIn, Comment"
- " FROM Media WHERE Media.VolumeName='%s'", expiresin, esc);
+ "LocationId,RecycleCount,InitialWrite,Media.ScratchPoolId,Media.RecyclePoolId, "
+ "Media.ActionOnPurge,%s AS ExpiresIn, Comment"
+ " FROM Media %s WHERE Media.VolumeName='%s' %s",
+ expiresin,
+ join,
+ esc,
+ where
+ );
} else {
Mmsg(cmd, "SELECT MediaId,VolumeName,Slot,PoolId,"
"MediaType,MediaTypeId,FirstWritten,LastWritten,LabelDate,VolJobs,"
- "VolFiles,VolBlocks,VolMounts,VolBytes,VolABytes,VolAPadding,"
- "VolHoleBytes,VolHoles,VolErrors,VolWrites,"
- "VolCapacityBytes,VolStatus,Enabled,Recycle,VolRetention,"
- "VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes,InChanger,"
- "EndFile,EndBlock,VolParts,LabelType,StorageId,DeviceId,"
+ "VolFiles,VolBlocks,VolParts,VolCloudParts,Media.CacheRetention,VolMounts,VolBytes,"
+ "VolABytes,VolAPadding,"
+ "VolHoleBytes,VolHoles,LastPartBytes,VolErrors,VolWrites,"
+ "VolCapacityBytes,VolStatus,Media.Enabled,Media.Recycle,Media.VolRetention,"
+ "Media.VolUseDuration,Media.MaxVolJobs,Media.MaxVolFiles,Media.MaxVolBytes,InChanger,"
+ "EndFile,EndBlock,VolType,Media.LabelType,StorageId,DeviceId,"
"MediaAddressing,VolReadTime,VolWriteTime,"
- "LocationId,RecycleCount,InitialWrite,ScratchPoolId,RecyclePoolId, "
- "ActionOnPurge,%s AS ExpiresIn, Comment"
- " FROM Media WHERE Media.PoolId=%s ORDER BY MediaId",
- expiresin, edit_int64(mdbr->PoolId, ed1));
+ "LocationId,RecycleCount,InitialWrite,Media.ScratchPoolId,Media.RecyclePoolId, "
+ "Media.ActionOnPurge,%s AS ExpiresIn, Comment"
+ " FROM Media %s WHERE Media.PoolId=%s %s ORDER BY MediaId",
+ expiresin,
+ join,
+ edit_int64(mdbr->PoolId, ed1),
+ where
+ );
}
} else {
if (mdbr->VolumeName[0] != 0) {
- Mmsg(cmd, "SELECT MediaId,VolumeName,VolStatus,Enabled,"
- "VolBytes,VolFiles,VolRetention,Recycle,Slot,InChanger,MediaType,LastWritten,%s AS ExpiresIn "
- "FROM Media WHERE Media.VolumeName='%s'", expiresin, esc);
+ Mmsg(cmd, "SELECT MediaId,VolumeName,VolStatus,Media.Enabled,"
+ "VolBytes,VolFiles,Media.VolRetention,Media.Recycle,Slot,InChanger,MediaType,VolType,"
+ "VolParts,%s AS ExpiresIn "
+ "FROM Media %s WHERE Media.VolumeName='%s' %s",
+ expiresin,
+ join,
+ esc,
+ where
+ );
} else {
- Mmsg(cmd, "SELECT MediaId,VolumeName,VolStatus,Enabled,"
- "VolBytes,VolFiles,VolRetention,Recycle,Slot,InChanger,MediaType,LastWritten,%s AS ExpiresIn "
- "FROM Media WHERE Media.PoolId=%s ORDER BY MediaId",
- expiresin, edit_int64(mdbr->PoolId, ed1));
+ Mmsg(cmd, "SELECT MediaId,VolumeName,VolStatus,Media.Enabled,"
+ "VolBytes,VolFiles,Media.VolRetention,Media.Recycle,Slot,InChanger,MediaType,VolType,"
+ "VolParts,LastWritten,%s AS ExpiresIn "
+ "FROM Media %s WHERE Media.PoolId=%s %s ORDER BY MediaId",
+ expiresin,
+ join,
+ edit_int64(mdbr->PoolId, ed1),
+ where
+ );
}
}
-
+ Dmsg1(DT_SQL|50, "q=%s\n", cmd);
if (!QueryDB(jcr, cmd)) {
bdb_unlock();
return;
char ed1[50];
bdb_lock();
+ const char *join = "";
+ const char *where = "";
+
if (type == VERT_LIST) {
if (JobId > 0) { /* do by JobId */
Mmsg(cmd, "SELECT JobMediaId,JobId,Media.MediaId,Media.VolumeName,"
"FirstIndex,LastIndex,StartFile,JobMedia.EndFile,StartBlock,"
"JobMedia.EndBlock "
- "FROM JobMedia,Media WHERE Media.MediaId=JobMedia.MediaId "
- "AND JobMedia.JobId=%s", edit_int64(JobId, ed1));
+ "FROM JobMedia JOIN Media USING (MediaId) %s "
+ "WHERE JobMedia.JobId=%s %s",
+ join,
+ edit_int64(JobId, ed1),
+ where);
} else {
Mmsg(cmd, "SELECT JobMediaId,JobId,Media.MediaId,Media.VolumeName,"
"FirstIndex,LastIndex,StartFile,JobMedia.EndFile,StartBlock,"
"JobMedia.EndBlock "
- "FROM JobMedia,Media WHERE Media.MediaId=JobMedia.MediaId");
+ "FROM JobMedia JOIN Media USING (MediaId) %s %s",
+ join,
+ where);
}
} else {
if (JobId > 0) { /* do by JobId */
Mmsg(cmd, "SELECT JobId,Media.VolumeName,FirstIndex,LastIndex "
- "FROM JobMedia,Media WHERE Media.MediaId=JobMedia.MediaId "
- "AND JobMedia.JobId=%s", edit_int64(JobId, ed1));
+ "FROM JobMedia JOIN Media USING (MediaId) %s WHERE "
+ "JobMedia.JobId=%s %s",
+ join,
+ edit_int64(JobId, ed1),
+ where);
} else {
Mmsg(cmd, "SELECT JobId,Media.VolumeName,FirstIndex,LastIndex "
- "FROM JobMedia,Media WHERE Media.MediaId=JobMedia.MediaId");
+ "FROM JobMedia JOIN Media USING (MediaId) %s %s",
+ join,
+ where);
}
}
+ Dmsg1(DT_SQL|50, "q=%s\n", cmd);
+
if (!QueryDB(jcr, cmd)) {
bdb_unlock();
return;
}
if (jr->Name[0]) {
bdb_escape_string(jcr, esc, jr->Name, strlen(jr->Name));
- Mmsg(tmp, " Name='%s' ", esc);
+ Mmsg(tmp, " Job.Name='%s' ", esc);
append_filter(where, tmp);
} else if (jr->JobId != 0) {
- Mmsg(tmp, " JobId=%s ", edit_int64(jr->JobId, ed1));
+ Mmsg(tmp, " Job.JobId=%s ", edit_int64(jr->JobId, ed1));
append_filter(where, tmp);
} else if (jr->Job[0] != 0) {
bdb_escape_string(jcr, esc, jr->Job, strlen(jr->Job));
- Mmsg(tmp, " Job='%s' ", esc);
+ Mmsg(tmp, " Job.Job='%s' ", esc);
append_filter(where, tmp);
}
if (type == INCOMPLETE_JOBS && jr->JobStatus == JS_FatalError) {
- Mmsg(tmp, " JobStatus IN ('E', 'f') ");
+ Mmsg(tmp, " Job.JobStatus IN ('E', 'f') ");
append_filter(where, tmp);
} else if (jr->JobStatus) {
- Mmsg(tmp, " JobStatus='%c' ", jr->JobStatus);
+ Mmsg(tmp, " Job.JobStatus='%c' ", jr->JobStatus);
append_filter(where, tmp);
}
if (jr->JobType) {
- Mmsg(tmp, " Type='%c' ", jr->JobType);
+ Mmsg(tmp, " Job.Type='%c' ", jr->JobType);
append_filter(where, tmp);
}
if (jr->JobErrors > 0) {
- Mmsg(tmp, " JobErrors > 0 ");
+ Mmsg(tmp, " Job.JobErrors > 0 ");
append_filter(where, tmp);
}
if (jr->ClientId > 0) {
- Mmsg(tmp, " ClientId=%s ", edit_int64(jr->ClientId, ed1));
+ Mmsg(tmp, " Job.ClientId=%s ", edit_int64(jr->ClientId, ed1));
append_filter(where, tmp);
}
"Job.ClientId,Client.Name as ClientName,JobStatus,SchedTime,"
"StartTime,EndTime,RealEndTime,JobTDate,"
"VolSessionId,VolSessionTime,JobFiles,JobBytes,ReadBytes,JobErrors,"
- "JobMissingFiles,Job.PoolId,Pool.Name as PooLname,PriorJobId,"
+ "JobMissingFiles,Job.PoolId,Pool.Name as PoolName,PriorJobId,"
"Job.FileSetId,FileSet.FileSet,Job.HasBase,Job.HasCache,Job.Comment "
"FROM Job JOIN Client USING (ClientId) LEFT JOIN Pool USING (PoolId) "
"LEFT JOIN FileSet USING (FileSetId) %s "
default:
break;
}
- Dmsg1(100, "SQL: %s\n", cmd);
free_pool_memory(tmp);
free_pool_memory(where);
- Dmsg1(000, "cmd: %s\n", cmd);
+ Dmsg1(100, "SQL: %s\n", cmd);
if (!QueryDB(jcr, cmd)) {
bdb_unlock();
return NULL;
bdb_unlock();
}
-void BDB::bdb_list_files_for_job(JCR *jcr, JobId_t jobid, DB_LIST_HANDLER *sendit, void *ctx)
+/* List all file records from a job
+ * "deleted" values are described just below
+ */
+void BDB::bdb_list_files_for_job(JCR *jcr, JobId_t jobid, int deleted, DB_LIST_HANDLER *sendit, void *ctx)
{
char ed1[50];
+ const char *opt;
LIST_CTX lctx(jcr, this, sendit, ctx, HORZ_LIST);
+ switch (deleted) {
+ case 0: /* Show only actual files */
+ opt = " AND FileIndex <> 0 ";
+ break;
+ case 1: /* Show only deleted files */
+ opt = " AND FileIndex = 0 ";
+ break;
+ default: /* Show everything */
+ opt = "";
+ break;
+ }
+
bdb_lock();
/*
*/
if (bdb_get_type_index() == SQL_TYPE_MYSQL) {
Mmsg(cmd, "SELECT CONCAT(Path.Path,Filename.Name) AS Filename "
- "FROM (SELECT PathId, FilenameId FROM File WHERE JobId=%s "
+ "FROM (SELECT PathId, FilenameId FROM File WHERE JobId=%s %s "
"UNION ALL "
"SELECT PathId, FilenameId "
"FROM BaseFiles JOIN File "
") AS F, Filename,Path "
"WHERE Filename.FilenameId=F.FilenameId "
"AND Path.PathId=F.PathId",
- edit_int64(jobid, ed1), ed1);
+ edit_int64(jobid, ed1), opt, ed1);
} else {
Mmsg(cmd, "SELECT Path.Path||Filename.Name AS Filename "
- "FROM (SELECT PathId, FilenameId FROM File WHERE JobId=%s "
+ "FROM (SELECT PathId, FilenameId FROM File WHERE JobId=%s %s "
"UNION ALL "
"SELECT PathId, FilenameId "
"FROM BaseFiles JOIN File "
") AS F, Filename,Path "
"WHERE Filename.FilenameId=F.FilenameId "
"AND Path.PathId=F.PathId",
- edit_int64(jobid, ed1), ed1);
+ edit_int64(jobid, ed1), opt, ed1);
}
-
+ Dmsg1(100, "q=%s\n", cmd);
if (!bdb_big_sql_query(cmd, list_result, &lctx)) {
bdb_unlock();
return;