Skip to content

Commit

Permalink
cats: refactoring UPDATEDB to return number of affected rows
Browse files Browse the repository at this point in the history
  • Loading branch information
alaaeddineelamri committed Jan 28, 2022
1 parent 092d71e commit a26c16f
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 50 deletions.
13 changes: 5 additions & 8 deletions core/src/cats/cats.h
Expand Up @@ -596,11 +596,10 @@ class BareosDb : public BareosDbQueryEnum {
int line,
JobControlRecord* jcr,
const char* DeleteCmd);
bool UpdateDB(const char* file,
int line,
JobControlRecord* jcr,
const char* UpdateCmd,
int expected_minimum_number_affected_rows);
int UpdateDB(const char* file,
int line,
JobControlRecord* jcr,
const char* UpdateCmd);
int GetSqlRecordMax(JobControlRecord* jcr);
void SplitPathAndFile(JobControlRecord* jcr, const char* fname);
void ListDashes(OutputFormatter* send);
Expand Down Expand Up @@ -1003,9 +1002,7 @@ class BareosDb : public BareosDbQueryEnum {
#define BATCH_FLUSH 800000

/* Use for better error location printing */
#define UPDATE_DB(jcr, cmd) UpdateDB(__FILE__, __LINE__, jcr, cmd, 1)
#define UPDATE_DB_NO_AFFECTED_ROWS(jcr, cmd) \
UpdateDB(__FILE__, __LINE__, jcr, cmd, 0)
#define UPDATE_DB(jcr, cmd) UpdateDB(__FILE__, __LINE__, jcr, cmd)
#define INSERT_DB(jcr, cmd) InsertDB(__FILE__, __LINE__, jcr, cmd)
#define QUERY_DB(jcr, cmd) QueryDB(__FILE__, __LINE__, jcr, cmd)
#define DELETE_DB(jcr, cmd) DeleteDB(__FILE__, __LINE__, jcr, cmd)
Expand Down
28 changes: 6 additions & 22 deletions core/src/cats/sql.cc
Expand Up @@ -267,37 +267,21 @@ bool BareosDb::InsertDB(const char* file,
* Returns: false on failure
* true on success
*/
bool BareosDb::UpdateDB(const char* file,
int line,
JobControlRecord* jcr,
const char* UpdateCmd,
int expected_minimum_number_affected_rows)
int BareosDb::UpdateDB(const char* file,
int line,
JobControlRecord* jcr,
const char* UpdateCmd)
{
int num_rows;

if (!SqlQuery(UpdateCmd)) {
msg_(file, line, errmsg, _("update %s failed:\n%s\n"), UpdateCmd,
sql_strerror());
j_msg(file, line, jcr, M_ERROR, 0, "%s", errmsg);
if (verbose) { j_msg(file, line, jcr, M_INFO, 0, "%s\n", UpdateCmd); }
return false;
}

if (expected_minimum_number_affected_rows > 0) {
num_rows = SqlAffectedRows();
if (num_rows < expected_minimum_number_affected_rows) {
char ed1[30];
msg_(file, line, errmsg, _("Update failed: affected_rows=%s for %s\n"),
edit_uint64(num_rows, ed1), UpdateCmd);
if (verbose) {
// j_msg(file, line, jcr, M_INFO, 0, "%s\n", UpdateCmd);
}
return false;
}
return -1;
}

changes++;
return true;
return SqlAffectedRows();
}

/**
Expand Down
4 changes: 2 additions & 2 deletions core/src/cats/sql_create.cc
Expand Up @@ -139,7 +139,7 @@ bool BareosDb::CreateJobmediaRecord(JobControlRecord* jcr, JobMediaDbRecord* jm)
// Worked, now update the Media record with the EndFile and EndBlock
Mmsg(cmd, "UPDATE Media SET EndFile=%u, EndBlock=%u WHERE MediaId=%u",
jm->EndFile, jm->EndBlock, jm->MediaId);
if (!UPDATE_DB(jcr, cmd)) {
if (UPDATE_DB(jcr, cmd) == -1) {
Mmsg2(errmsg, _("Update Media record %s failed: ERR=%s\n"), cmd,
sql_strerror());
} else {
Expand Down Expand Up @@ -483,7 +483,7 @@ bool BareosDb::CreateMediaRecord(JobControlRecord* jcr, MediaDbRecord* mr)
"UPDATE Media SET LabelDate='%s' "
"WHERE MediaId=%d",
dt, mr->MediaId);
retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;
}
/*
* Make sure that if InChanger is non-zero any other identical slot
Expand Down
36 changes: 18 additions & 18 deletions core/src/cats/sql_update.cc
Expand Up @@ -61,7 +61,7 @@ bool BareosDb::AddDigestToFileRecord(JobControlRecord* jcr,
EscapeString(jcr, esc_name, digest, len);
Mmsg(cmd, "UPDATE File SET MD5='%s' WHERE FileId=%s", esc_name,
edit_int64(FileId, ed1));
retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;
DbUnlock(this);

return retval;
Expand All @@ -80,7 +80,7 @@ bool BareosDb::MarkFileRecord(JobControlRecord* jcr,
DbLock(this);
Mmsg(cmd, "UPDATE File SET MarkId=%s WHERE FileId=%s", edit_int64(JobId, ed1),
edit_int64(FileId, ed2));
retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;
DbUnlock(this);

return retval;
Expand Down Expand Up @@ -113,7 +113,7 @@ bool BareosDb::UpdateJobStartRecord(JobControlRecord* jcr, JobDbRecord* jr)
edit_int64(jr->PoolId, ed3), edit_int64(jr->FileSetId, ed4),
edit_int64(jr->JobId, ed5));

retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;
changes = 0;
DbUnlock(this);
return retval;
Expand Down Expand Up @@ -185,7 +185,7 @@ bool BareosDb::UpdateJobEndRecord(JobControlRecord* jcr, JobDbRecord* jr)
jr->PoolId, jr->FileSetId, edit_uint64(JobTDate, ed2), rdt, PriorJobId,
jr->HasBase, jr->PurgedFiles, edit_int64(jr->JobId, ed3));

retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;

DbUnlock(this);
return retval;
Expand Down Expand Up @@ -216,7 +216,7 @@ bool BareosDb::UpdateClientRecord(JobControlRecord* jcr, ClientDbRecord* cr)
cr->AutoPrune, edit_uint64(cr->FileRetention, ed1),
edit_uint64(cr->JobRetention, ed2), esc_uname, esc_clientname);

retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;

bail_out:
DbUnlock(this);
Expand All @@ -238,7 +238,7 @@ bool BareosDb::UpdateCounterRecord(JobControlRecord* jcr, CounterDbRecord* cr)
EscapeString(jcr, esc, cr->Counter, strlen(cr->Counter));
FillQuery(SQL_QUERY::update_counter_values, cr->MinValue, cr->MaxValue,
cr->CurrentValue, cr->WrapCounter, esc);
retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;

DbUnlock(this);
return retval;
Expand Down Expand Up @@ -272,7 +272,7 @@ bool BareosDb::UpdatePoolRecord(JobControlRecord* jcr, PoolDbRecord* pr)
pr->LabelType, esc, edit_int64(pr->RecyclePoolId, ed5),
edit_int64(pr->ScratchPoolId, ed6), pr->ActionOnPurge, pr->MinBlocksize,
pr->MaxBlocksize, ed4);
retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;
DbUnlock(this);
return retval;
}
Expand All @@ -286,7 +286,7 @@ bool BareosDb::UpdateStorageRecord(JobControlRecord* jcr, StorageDbRecord* sr)
Mmsg(cmd, "UPDATE Storage SET AutoChanger=%d WHERE StorageId=%s",
sr->AutoChanger, edit_int64(sr->StorageId, ed1));

retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;
DbUnlock(this);
return retval;
}
Expand Down Expand Up @@ -322,7 +322,7 @@ bool BareosDb::UpdateMediaRecord(JobControlRecord* jcr, MediaDbRecord* mr)
"UPDATE Media SET FirstWritten='%s'"
" WHERE VolumeName='%s'",
dt, esc_medianame);
retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;
Dmsg1(400, "Firstwritten=%d\n", mr->FirstWritten);
}

Expand All @@ -335,7 +335,7 @@ bool BareosDb::UpdateMediaRecord(JobControlRecord* jcr, MediaDbRecord* mr)
"UPDATE Media SET LabelDate='%s' "
"WHERE VolumeName='%s'",
dt, esc_medianame);
UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;
}

if (mr->LastWritten != 0) {
Expand All @@ -345,7 +345,7 @@ bool BareosDb::UpdateMediaRecord(JobControlRecord* jcr, MediaDbRecord* mr)
"UPDATE Media Set LastWritten='%s' "
"WHERE VolumeName='%s'",
dt, esc_medianame);
UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;
}

Mmsg(cmd,
Expand Down Expand Up @@ -373,7 +373,7 @@ bool BareosDb::UpdateMediaRecord(JobControlRecord* jcr, MediaDbRecord* mr)

Dmsg1(400, "%s\n", cmd);

retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;

// Make sure InChanger is 0 for any record having the same Slot
MakeInchangerUnique(jcr, mr);
Expand Down Expand Up @@ -423,7 +423,7 @@ bool BareosDb::UpdateMediaDefaults(JobControlRecord* jcr, MediaDbRecord* mr)

Dmsg1(400, "%s\n", cmd);

retval = UPDATE_DB_NO_AFFECTED_ROWS(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) != -1;

DbUnlock(this);
return retval;
Expand Down Expand Up @@ -462,7 +462,7 @@ void BareosDb::MakeInchangerUnique(JobControlRecord* jcr, MediaDbRecord* mr)
mr->Slot, edit_int64(mr->StorageId, ed1), mr->VolumeName);
}
Dmsg1(100, "%s\n", cmd);
UPDATE_DB_NO_AFFECTED_ROWS(jcr, cmd);
UPDATE_DB(jcr, cmd);
}
}

Expand All @@ -483,7 +483,7 @@ bool BareosDb::UpdateQuotaGracetime(JobControlRecord* jcr, JobDbRecord* jr)
Mmsg(cmd, "UPDATE Quota SET GraceTime=%s WHERE ClientId='%s'",
edit_uint64(now, ed1), edit_uint64(jr->ClientId, ed2));

retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;

DbUnlock(this);

Expand All @@ -507,7 +507,7 @@ bool BareosDb::UpdateQuotaSoftlimit(JobControlRecord* jcr, JobDbRecord* jr)
edit_uint64((jr->JobSumTotalBytes + jr->JobBytes), ed1),
edit_uint64(jr->ClientId, ed2));

retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;

DbUnlock(this);

Expand All @@ -531,7 +531,7 @@ bool BareosDb::ResetQuotaRecord(JobControlRecord* jcr, ClientDbRecord* cr)
"UPDATE Quota SET GraceTime='0', QuotaLimit='0' WHERE ClientId='%s'",
edit_uint64(cr->ClientId, ed1));

retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;

DbUnlock(this);

Expand Down Expand Up @@ -563,7 +563,7 @@ bool BareosDb::UpdateNdmpLevelMapping(JobControlRecord* jcr,
edit_uint64(level, ed1), edit_uint64(jr->ClientId, ed2),
edit_uint64(jr->FileSetId, ed3), esc_name);

retval = UPDATE_DB(jcr, cmd);
retval = UPDATE_DB(jcr, cmd) > 0;

DbUnlock(this);

Expand Down

0 comments on commit a26c16f

Please sign in to comment.