+ if (*rx->BaseJobIds) {
+ pm_strcat(rx->JobIds, ",");
+ pm_strcat(rx->JobIds, rx->BaseJobIds);
+ }
+#else
+ for (p=rx->JobIds; get_next_jobid_from_list(&p, &JobId) > 0; ) {
+ char ed1[50];
+
+ if (JobId == last_JobId) {
+ continue; /* eliminate duplicate JobIds */
+ }
+ last_JobId = JobId;
+ /*
+ * Find files for this JobId and insert them in the tree
+ */
+ Mmsg(rx->query, uar_sel_files, edit_int64(JobId, ed1));
+ if (!db_sql_query(ua->db, rx->query, insert_tree_handler, (void *)&tree)) {
+ ua->error_msg("%s", db_strerror(ua->db));
+ }
+ }
+#endif
+ /*
+ * At this point, the tree is built, so we can garbage collect
+ * any memory released by the SQL engine that RedHat has
+ * not returned to the OS :-(
+ */
+ garbage_collect_memory();
+
+ /*
+ * Look at the first JobId on the list (presumably the oldest) and
+ * if it is marked purged, don't do the manual selection because
+ * the Job was pruned, so the tree is incomplete.
+ */
+ if (tree.FileCount != 0) {
+ /* Find out if any Job is purged */
+ Mmsg(rx->query, "SELECT SUM(PurgedFiles) FROM Job WHERE JobId IN (%s)", rx->JobIds);
+ if (!db_sql_query(ua->db, rx->query, restore_count_handler, (void *)rx)) {
+ ua->error_msg("%s\n", db_strerror(ua->db));
+ }
+ /* rx->JobId is the PurgedFiles flag */
+ if (rx->found && rx->JobId > 0) {
+ tree.FileCount = 0; /* set count to zero, no tree selection */
+ }
+ }