]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/sql_list.c
- Put Dmsg() on inside if() to avoid calling subroutine.
[bacula/bacula] / bacula / src / cats / sql_list.c
index 0abc749d5ec6add8bdfc1af5d035928abc0ae856..cb229b72c20bdeff1e006bce3578b195507ea0b4 100644 (file)
@@ -29,7 +29,7 @@
 /* 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"
@@ -52,13 +52,13 @@ extern int QueryDB(const char *file, int line, JCR *jcr, B_DB *db, char *select_
  * 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;
@@ -131,7 +131,7 @@ db_list_client_records(JCR *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx,
  */
 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);
@@ -152,7 +152,7 @@ db_list_media_records(JCR *jcr, B_DB *mdb, MEDIA_DBR *mdbr,
             "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) {
@@ -163,7 +163,7 @@ db_list_media_records(JCR *jcr, B_DB *mdb, MEDIA_DBR *mdbr,
          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));
       }
    }
 
@@ -179,12 +179,12 @@ db_list_media_records(JCR *jcr, B_DB *mdb, MEDIA_DBR *mdbr,
 }
 
 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 "
@@ -198,7 +198,7 @@ void db_list_jobmedia_records(JCR *jcr, B_DB *mdb, uint32_t JobId,
       }
 
    } 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));
@@ -228,13 +228,19 @@ void db_list_jobmedia_records(JCR *jcr, B_DB *mdb, uint32_t JobId,
  */
 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,"
@@ -242,9 +248,9 @@ db_list_job_records(JCR *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit,
             "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,"
@@ -253,17 +259,17 @@ db_list_job_records(JCR *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit,
             "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)) {