/* The following is necessary so that we do not include
* the dummy external definition of DB.
*/
-#define __SQL_C /* indicate that this is sql.c */
+#define __SQL_C /* indicate that this is sql.c */
#include "bacula.h"
#include "cats.h"
* Submit general SQL query
*/
int db_list_sql_query(JCR *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit,
- void *ctx, int verbose, e_list_type type)
+ void *ctx, int verbose, e_list_type type)
{
db_lock(mdb);
if (sql_query(mdb, query) != 0) {
Mmsg(mdb->errmsg, _("Query failed: %s\n"), sql_strerror(mdb));
if (verbose) {
- sendit(ctx, mdb->errmsg);
+ sendit(ctx, mdb->errmsg);
}
db_unlock(mdb);
return 0;
db_lock(mdb);
if (type == VERT_LIST) {
Mmsg(mdb->cmd, "SELECT ClientId,Name,Uname,AutoPrune,FileRetention,"
- "FileRetention,JobRetention "
+ "JobRetention "
"FROM Client ORDER BY ClientId");
} else {
Mmsg(mdb->cmd, "SELECT ClientId,Name,FileRetention,JobRetention "
*/
void
db_list_media_records(JCR *jcr, B_DB *mdb, MEDIA_DBR *mdbr,
- DB_LIST_HANDLER *sendit, void *ctx, e_list_type type)
+ DB_LIST_HANDLER *sendit, void *ctx, e_list_type type)
{
char ed1[50];
db_lock(mdb);
"VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes,InChanger,"
"EndFile,EndBlock,VolParts,LabelType,StorageId"
" FROM Media WHERE Media.PoolId=%s ORDER BY MediaId",
- edit_int64(mdbr->PoolId, ed1));
+ edit_int64(mdbr->PoolId, ed1));
}
} else {
if (mdbr->VolumeName[0] != 0) {
Mmsg(mdb->cmd, "SELECT MediaId,VolumeName,VolStatus,"
"VolBytes,VolFiles,VolRetention,Recycle,Slot,InChanger,MediaType,LastWritten "
"FROM Media WHERE Media.PoolId=%s ORDER BY MediaId",
- edit_int64(mdbr->PoolId, ed1));
+ edit_int64(mdbr->PoolId, ed1));
}
}
}
void db_list_jobmedia_records(JCR *jcr, B_DB *mdb, uint32_t JobId,
- DB_LIST_HANDLER *sendit, void *ctx, e_list_type type)
+ DB_LIST_HANDLER *sendit, void *ctx, e_list_type type)
{
char ed1[50];
db_lock(mdb);
if (type == VERT_LIST) {
- if (JobId > 0) { /* do by JobId */
+ if (JobId > 0) { /* do by JobId */
Mmsg(mdb->cmd, "SELECT JobMediaId,JobId,Media.MediaId,Media.VolumeName,"
"FirstIndex,LastIndex,StartFile,JobMedia.EndFile,StartBlock,"
"JobMedia.EndBlock,Copy,Stripe "
}
} else {
- if (JobId > 0) { /* do by JobId */
+ if (JobId > 0) { /* do by JobId */
Mmsg(mdb->cmd, "SELECT JobId,Media.VolumeName,FirstIndex,LastIndex "
"FROM JobMedia,Media WHERE Media.MediaId=JobMedia.MediaId "
"AND JobMedia.JobId=%s", edit_int64(JobId, ed1));
*/
void
db_list_job_records(JCR *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit,
- void *ctx, e_list_type type)
+ void *ctx, e_list_type type)
{
char ed1[50];
+ char limit[100];
db_lock(mdb);
+ if (jr->limit > 0) {
+ snprintf(limit, sizeof(limit), " LIMIT %d", jr->limit);
+ } else {
+ limit[0] = 0;
+ }
if (type == VERT_LIST) {
if (jr->JobId == 0 && jr->Job[0] == 0) {
- Mmsg(mdb->cmd,
+ Mmsg(mdb->cmd,
"SELECT JobId,Job,Job.Name,PurgedFiles,Type,Level,"
"Job.ClientId,Client.Name,JobStatus,SchedTime,"
"StartTime,EndTime,JobTDate,"
"JobMissingFiles,Job.PoolId,Pool.Name,Job.FileSetId,FileSet.FileSet "
"FROM Job,Client,Pool,FileSet WHERE "
"Client.ClientId=Job.ClientId AND Pool.PoolId=Job.PoolId "
- "AND FileSet.FileSetId=Job.FileSetId ORDER BY StartTime");
- } else { /* single record */
- Mmsg(mdb->cmd,
+ "AND FileSet.FileSetId=Job.FileSetId ORDER BY StartTime%s", limit);
+ } else { /* single record */
+ Mmsg(mdb->cmd,
"SELECT JobId,Job,Job.Name,PurgedFiles,Type,Level,"
"Job.ClientId,Client.Name,JobStatus,SchedTime,"
"StartTime,EndTime,JobTDate,"
"FROM Job,Client,Pool,FileSet WHERE Job.JobId=%s AND "
"Client.ClientId=Job.ClientId AND Pool.PoolId=Job.PoolId "
"AND FileSet.FileSetId=Job.FileSetId",
- edit_int64(jr->JobId, ed1));
+ edit_int64(jr->JobId, ed1));
}
} else {
if (jr->JobId == 0 && jr->Job[0] == 0) {
- Mmsg(mdb->cmd,
+ Mmsg(mdb->cmd,
"SELECT JobId,Name,StartTime,Type,Level,JobFiles,JobBytes,JobStatus "
- "FROM Job ORDER BY StartTime");
- } else { /* single record */
+ "FROM Job ORDER BY StartTime%s", limit);
+ } else { /* single record */
Mmsg(mdb->cmd, "SELECT JobId,Name,StartTime,Type,Level,"
"JobFiles,JobBytes,JobStatus FROM Job WHERE JobId=%s",
- edit_int64(jr->JobId, ed1));
+ edit_int64(jr->JobId, ed1));
}
}
if (!QUERY_DB(jcr, mdb, mdb->cmd)) {