Skip to content

Commit

Permalink
Tweak sql update function.
Browse files Browse the repository at this point in the history
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 691f2fd commit 3c25e9e
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 3c25e9e

Please sign in to comment.