Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Tweak sql update function.
Use only one function to do the database update and pass as argument the
minimum number of affected rows that must be met.
  • Loading branch information
Marco van Wieringen committed Feb 17, 2015
1 parent 0fe2716 commit f5d7ed6
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 35 deletions.
7 changes: 3 additions & 4 deletions src/cats/cats.h
Expand Up @@ -543,8 +543,8 @@ class B_DB: public SMARTALLOC {
#define BATCH_FLUSH 800000

/* Use for better error location printing */
#define UPDATE_DB(jcr, db, cmd) UpdateDB(__FILE__, __LINE__, jcr, db, cmd)
#define UPDATE_DB_NO_AFR(jcr, db, cmd) UpdateDB_no_afr(__FILE__, __LINE__, jcr, db, cmd)
#define UPDATE_DB(jcr, db, cmd) UpdateDB(__FILE__, __LINE__, jcr, db, cmd, 1)
#define UPDATE_DB_NO_AFR(jcr, db, cmd) UpdateDB(__FILE__, __LINE__, jcr, db, cmd, 0)
#define INSERT_DB(jcr, db, cmd) InsertDB(__FILE__, __LINE__, jcr, db, cmd)
#define QUERY_DB(jcr, db, cmd) QueryDB(__FILE__, __LINE__, jcr, db, cmd)
#define DELETE_DB(jcr, db, cmd) DeleteDB(__FILE__, __LINE__, jcr, db, cmd)
Expand Down Expand Up @@ -631,7 +631,6 @@ void print_result(B_DB *mdb);
bool QueryDB(const char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
bool InsertDB(const char *file, int line, JCR *jcr, B_DB *db, char *select_cmd);
int DeleteDB(const char *file, int line, JCR *jcr, B_DB *db, char *delete_cmd);
bool UpdateDB(const char *file, int line, JCR *jcr, B_DB *db, char *update_cmd);
bool UpdateDB_no_afr(const char *file, int line, JCR *jcr, B_DB *db, char *update_cmd);
bool UpdateDB(const char *file, int line, JCR *jcr, B_DB *db, char *update_cmd, int nr_afr);
void split_path_and_file(JCR *jcr, B_DB *mdb, const char *fname);
#endif /* __CATS_H_ */
45 changes: 14 additions & 31 deletions src/cats/sql.c
Expand Up @@ -258,11 +258,12 @@ bool InsertDB(const char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
return true;
}

/* Utility routine for updates.
/*
* Utility routine for updates.
* Returns: false on failure
* true on success
*/
bool UpdateDB(const char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
bool UpdateDB(const char *file, int line, JCR *jcr, B_DB *mdb, char *cmd, int nr_afr)
{
int num_rows;

Expand All @@ -274,38 +275,20 @@ bool UpdateDB(const char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
}
return false;
}
num_rows = sql_affected_rows(mdb);
if (num_rows < 1) {
char ed1[30];
m_msg(file, line, &mdb->errmsg, _("Update failed: affected_rows=%s for %s\n"),
edit_uint64(num_rows, ed1), cmd);
if (verbose) {
// j_msg(file, line, jcr, M_INFO, 0, "%s\n", cmd);
}
return false;
}
mdb->changes++;
return true;
}

/* Utility routine for updates.
* Returns: false on failure
* true on success
* sames as UpdateDB() but ignores the number of affected rows
*/
bool UpdateDB_no_afr(const char *file, int line, JCR *jcr, B_DB *mdb, char *cmd)
{
int num_rows;

if (!sql_query(mdb, cmd)) {
m_msg(file, line, &mdb->errmsg, _("update %s failed:\n%s\n"), cmd, sql_strerror(mdb));
j_msg(file, line, jcr, M_ERROR, 0, "%s", mdb->errmsg);
if (verbose) {
j_msg(file, line, jcr, M_INFO, 0, "%s\n", cmd);
if (nr_afr > 0) {
num_rows = sql_affected_rows(mdb);
if (num_rows < nr_afr) {
char ed1[30];
m_msg(file, line, &mdb->errmsg, _("Update failed: affected_rows=%s for %s\n"),
edit_uint64(num_rows, ed1), cmd);
if (verbose) {
// j_msg(file, line, jcr, M_INFO, 0, "%s\n", cmd);
}
return false;
}
return false;
}
num_rows = sql_affected_rows(mdb);

mdb->changes++;
return true;
}
Expand Down

0 comments on commit f5d7ed6

Please sign in to comment.