]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Introduce 'bdb_list_plugin_objects_ids' helper method
authorMichal Rakowski <michal.rakowski@baculasystems.com>
Tue, 8 Dec 2020 09:14:04 +0000 (10:14 +0100)
committerEric Bollengier <eric@baculasystems.com>
Thu, 24 Mar 2022 08:02:59 +0000 (09:02 +0100)
bacula/src/cats/bdb.h
bacula/src/cats/protos.h
bacula/src/cats/sql_list.c

index c5d1f5d3934341dff56e2debcb2b0205fe37a021..79811a548560f4463c1be69e02567a5d6f71f30a 100644 (file)
@@ -269,6 +269,7 @@ public:
    void bdb_list_base_files_for_job(JCR *jcr, JobId_t jobid, DB_LIST_HANDLER *sendit, void *ctx);
    void bdb_list_restore_objects(JCR *jcr, ROBJECT_DBR *rr, DB_LIST_HANDLER *sendit, void *ctx, e_list_type type);
    void bdb_list_plugin_objects(JCR *jcr, OBJECT_DBR *obj_r, DB_LIST_HANDLER *sendit, void *ctx, e_list_type type);
+   void bdb_list_plugin_objects_ids(JCR *jcr, char* id_list, DB_LIST_HANDLER *sendit, void *ctx, e_list_type type);
    void bdb_list_plugin_object_types(JCR *jcr, DB_LIST_HANDLER *sendit, void *ctx, e_list_type type);
    void bdb_list_snapshot_records(JCR *jcr, SNAPSHOT_DBR *sdbr,
               DB_LIST_HANDLER *sendit, void *ctx, e_list_type type);
index 3b6c5b27a2e1a8db5cdce678be8532a5aa9814e4..86eba128ec6420f3e60c01bd47f5f9e1a8f203f2 100644 (file)
@@ -287,6 +287,8 @@ void bdb_free_restoreobject_record(JCR *jcr, ROBJECT_DBR *rr);
            mdb->bdb_list_plugin_object_types(jcr, sendit, ctx, type)
 #define db_list_plugin_objects(jcr, mdb, obj_r, sendit, ctx, type) \
            mdb->bdb_list_plugin_objects(jcr, obj_r, sendit, ctx, type)
+#define db_list_plugin_objects_ids(jcr, mdb, id_list, sendit, ctx, type) \
+           mdb->bdb_list_plugin_objects_ids(jcr, id_list, sendit, ctx, type);
 #define db_list_restore_objects(jcr, mdb, rr, sendit, ctx, type) \
            mdb->bdb_list_restore_objects(jcr, rr, sendit, ctx, type)
 #define db_list_snapshot_records(jcr, mdb, snapdbr, sendit, ua, llist) \
index c11f3cedbf79cc018e80a14571261f1f1dc50744..68708f0a74539d63df65724cf0d2572e189e3b52 100644 (file)
@@ -151,7 +151,7 @@ void BDB::bdb_list_plugin_object_types(JCR *jcr, DB_LIST_HANDLER *sendit, void *
 }
 
 /*
- * List plugin objects
+ * List plugin objects (search is based on object provided)
  */
 void BDB::bdb_list_plugin_objects(JCR *jcr, OBJECT_DBR *obj_r, DB_LIST_HANDLER *sendit, void *ctx, e_list_type type)
 {
@@ -234,6 +234,43 @@ void BDB::bdb_list_plugin_objects(JCR *jcr, OBJECT_DBR *obj_r, DB_LIST_HANDLER *
    bdb_unlock();
 }
 
+/*
+ * List plugin objects from list of ids provided
+ */
+void BDB::bdb_list_plugin_objects_ids(JCR *jcr, char* id_list, DB_LIST_HANDLER *sendit, void *ctx, e_list_type type)
+{
+   POOL_MEM msg;
+
+   switch (type) {
+   case VERT_LIST:
+         Mmsg(cmd,
+            "SELECT Object.ObjectId, Object.JobId, Object.Path, Object.Filename, Object.PluginName, Object.ObjectCategory, "
+                    "Object.ObjectType, Object.ObjectName, Object.ObjectSource, Object.ObjectUUID, Object.ObjectSize "
+            "FROM Object WHERE ObjectId IN (%s) ORDER BY ObjectId ASC", id_list);
+         break;
+   case HORZ_LIST:
+         Mmsg(cmd,
+            "SELECT Object.ObjectId, Object.JobId, Object.ObjectCategory, "
+                    "Object.ObjectType, Object.ObjectName, Object.ObjectUUID "
+            "FROM Object WHERE ObjectId IN (%s) ORDER BY ObjectId ASC", id_list);
+         break;
+   default:
+         break;
+   }
+
+   bdb_lock();
+
+   if (!QueryDB(jcr, cmd)) {
+      Jmsg(jcr, M_ERROR, 0, _("Query %s failed!\n"), cmd);
+      bdb_unlock();
+      return;
+   }
+
+   list_result(jcr, this, sendit, ctx, type);
+
+   sql_free_result();
+   bdb_unlock();
+}
 /*
  * List restore objects
  *