Skip to content

Commit

Permalink
dird: cats: remove cpp sorting and replace with ORDER BY in queries
Browse files Browse the repository at this point in the history
  • Loading branch information
alaaeddineelamri authored and pstorz committed Sep 19, 2022
1 parent d1e4180 commit 6d33342
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 28 deletions.
5 changes: 3 additions & 2 deletions core/src/cats/dml/0011_sel_JobMedia
@@ -1,5 +1,6 @@
SELECT DISTINCT JobMedia.JobId
FROM JobMedia, Job
WHERE MediaId = %s
FROM JobMedia, Job
WHERE MediaId = %s
AND Job.JobId = JobMedia.JobId
AND Job.JobTDate < %s
ORDER BY JobId
5 changes: 3 additions & 2 deletions core/src/cats/mysql_queries.inc
Expand Up @@ -165,10 +165,11 @@ const char *BareosDbMysql::query_definitions[] = {

/* 0011_sel_JobMedia */
"SELECT DISTINCT JobMedia.JobId "
"FROM JobMedia, Job "
"WHERE MediaId = %s "
"FROM JobMedia, Job "
"WHERE MediaId = %s "
"AND Job.JobId = JobMedia.JobId "
"AND Job.JobTDate < %s "
"ORDER BY JobId "
,

/* 0012_drop_deltabs.mysql */
Expand Down
5 changes: 3 additions & 2 deletions core/src/cats/postgresql_queries.inc
Expand Up @@ -165,10 +165,11 @@ const char *BareosDbPostgresql::query_definitions[] = {

/* 0011_sel_JobMedia */
"SELECT DISTINCT JobMedia.JobId "
"FROM JobMedia, Job "
"WHERE MediaId = %s "
"FROM JobMedia, Job "
"WHERE MediaId = %s "
"AND Job.JobId = JobMedia.JobId "
"AND Job.JobTDate < %s "
"ORDER BY JobId "
,

/* 0012_drop_deltabs.postgresql */
Expand Down
5 changes: 3 additions & 2 deletions core/src/cats/sqlite_queries.inc
Expand Up @@ -165,10 +165,11 @@ const char *BareosDbSqlite::query_definitions[] = {

/* 0011_sel_JobMedia */
"SELECT DISTINCT JobMedia.JobId "
"FROM JobMedia, Job "
"WHERE MediaId = %s "
"FROM JobMedia, Job "
"WHERE MediaId = %s "
"AND Job.JobId = JobMedia.JobId "
"AND Job.JobTDate < %s "
"ORDER BY JobId "
,

/* 0012_drop_deltabs */
Expand Down
8 changes: 3 additions & 5 deletions core/src/dird/ua_prune.cc
Expand Up @@ -547,7 +547,7 @@ bool PruneFiles(UaContext* ua, ClientResource* client, PoolResource* pool)
std::vector<JobId_t> prune_list;

/* Now process same set but making a delete list */
Mmsg(query, "SELECT JobId FROM Job %s WHERE PurgedFiles=0 %s",
Mmsg(query, "SELECT JobId FROM Job %s WHERE PurgedFiles=0 %s ORDER BY JobId",
sql_from.c_str(), sql_where.c_str());
Dmsg1(050, "select sql=%s\n", query.c_str());
ua->db->SqlQuery(query.c_str(), FileDeleteHandler, (void*)&prune_list);
Expand Down Expand Up @@ -771,8 +771,8 @@ bool PruneJobs(UaContext* ua, ClientResource* client, PoolResource* pool)

// We use DISTINCT because we can have two times the same job
Mmsg(query,
"SELECT DISTINCT DelCandidates.JobId,DelCandidates.PurgedFiles "
"FROM DelCandidates");
"SELECT DISTINCT DelCandidates.JobId "
"FROM DelCandidates ORDER BY JobId");

std::vector<JobId_t> prune_list;
if (!ua->db->SqlQuery(query.c_str(), JobDeleteHandler, (void*)&prune_list)) {
Expand Down Expand Up @@ -887,9 +887,7 @@ int ExcludeRunningJobsFromList(std::vector<JobId_t>& prune_list)
{
JobControlRecord* jcr;


/* Do not prune any job currently running */

foreach_jcr (jcr) {
prune_list.erase(std::remove_if(prune_list.begin(), prune_list.end(),
[&jcr](const JobId_t& jobid) {
Expand Down
26 changes: 13 additions & 13 deletions core/src/dird/ua_purge.cc
Expand Up @@ -56,15 +56,6 @@ static bool PurgeJobsFromClient(UaContext* ua, ClientResource* client);
static bool PurgeQuotaFromClient(UaContext* ua, ClientResource* client);
static bool ActionOnPurgeCmd(UaContext* ua, const char* cmd);

static const char* select_jobsfiles_from_client
= "SELECT JobId FROM Job "
"WHERE ClientId=%s "
"AND PurgedFiles=0";

static const char* select_jobs_from_client
= "SELECT JobId, PurgedFiles FROM Job "
"WHERE ClientId=%s";

/**
* Purge records from database
*
Expand Down Expand Up @@ -243,7 +234,13 @@ static bool PurgeFilesFromClient(UaContext* ua, ClientResource* client)

ua->InfoMsg(_("Begin purging files for Client \"%s\"\n"), cr.Name);

Mmsg(query, select_jobsfiles_from_client, edit_int64(cr.ClientId, ed1));
const std::string select_jobIds_from_client
= "SELECT JobId FROM Job "
"WHERE ClientId=%s "
"AND PurgedFiles=0 "
"ORDER BY JobId";

Mmsg(query, select_jobIds_from_client.c_str(), edit_int64(cr.ClientId, ed1));
Dmsg1(050, "select sql=%s\n", query.c_str());
ua->db->SqlQuery(query.c_str(), FileDeleteHandler, (void*)&del);

Expand Down Expand Up @@ -286,7 +283,12 @@ static bool PurgeJobsFromClient(UaContext* ua, ClientResource* client)

ua->InfoMsg(_("Begin purging jobs from Client \"%s\"\n"), cr.Name);

Mmsg(query, select_jobs_from_client, edit_int64(cr.ClientId, ed1));
const std::string select_jobs_from_client
= "SELECT JobId, PurgedFiles FROM Job "
"WHERE ClientId=%s "
"ORDER BY JobId";

Mmsg(query, select_jobs_from_client.c_str(), edit_int64(cr.ClientId, ed1));
Dmsg1(150, "select sql=%s\n", query.c_str());
ua->db->SqlQuery(query.c_str(), JobDeleteHandler, (void*)&del);

Expand Down Expand Up @@ -317,8 +319,6 @@ void PurgeFilesFromJobs(UaContext* ua, const char* jobs)
std::string PrepareJobidsTobedeleted(UaContext* ua,
std::vector<JobId_t>& deletion_list)
{
std::sort(deletion_list.begin(), deletion_list.end());

deletion_list.erase(std::remove_if(deletion_list.begin(), deletion_list.end(),
[&ua](const JobId_t& jobid) {
return ua->jcr->JobId == jobid
Expand Down
5 changes: 3 additions & 2 deletions core/src/dird/ua_purge.h
Expand Up @@ -32,10 +32,11 @@ void PurgeFilesFromVolume(UaContext* ua, MediaDbRecord* mr);
bool PurgeJobsFromVolume(UaContext* ua, MediaDbRecord* mr, bool force = false);
void PurgeFilesFromJobs(UaContext* ua, const char* jobs);
void PurgeJobsFromCatalog(UaContext* ua, const char* jobs);
void PurgeJobListFromCatalog(UaContext* ua, std::vector<JobId_t>& del);
void PurgeJobListFromCatalog(UaContext* ua,
std::vector<JobId_t>& deletion_list);
void PurgeFilesFromJobList(UaContext* ua, std::vector<JobId_t>& del);
std::string PrepareJobidsTobedeleted(UaContext* ua,
std::vector<JobId_t>& del);
std::vector<JobId_t>& deletion_list);

} /* namespace directordaemon */
#endif // BAREOS_DIRD_UA_PURGE_H_

0 comments on commit 6d33342

Please sign in to comment.