update_stats bug fixes, mysql error returns

svn path=/trunk/boinc/; revision=1036
This commit is contained in:
David Anderson 2003-03-08 23:51:10 +00:00
parent 756384d8b4
commit d10af89ad9
2 changed files with 32 additions and 18 deletions

View File

@ -622,7 +622,7 @@ int db_user_count(int& n) {
int db_user_count_team(TEAM& p, int& n) { int db_user_count_team(TEAM& p, int& n) {
char buf[256]; char buf[256];
sprintf(buf, "teamid=%d", p.id); sprintf(buf, "where teamid=%d", p.id);
return boinc_db.db_count(&n, "*", TYPE_USER, buf); return boinc_db.db_count(&n, "*", TYPE_USER, buf);
} }
@ -660,14 +660,14 @@ int db_user_enum_teamid(USER& p) {
int db_user_sum_team_expavg_credit(TEAM& p, double& n) { int db_user_sum_team_expavg_credit(TEAM& p, double& n) {
char buf[256]; char buf[256];
sprintf(buf, "teamid=%d", p.id); sprintf(buf, "where teamid=%d", p.id);
return boinc_db.db_sum(&n, "expavg_credit", TYPE_USER, buf); return boinc_db.db_sum(&n, "expavg_credit", TYPE_USER, buf);
} }
int db_user_sum_team_total_credit(TEAM& p, double& n) { int db_user_sum_team_total_credit(TEAM& p, double& n) {
char buf[256]; char buf[256];
sprintf(buf, "teamid=%d", p.id); sprintf(buf, "where teamid=%d", p.id);
return boinc_db.db_sum(&n, "total_credit", TYPE_USER, buf); return boinc_db.db_sum(&n, "total_credit", TYPE_USER, buf);
} }

View File

@ -92,7 +92,9 @@ int MYSQL_DB::db_new(void* vp, int type) {
} }
int MYSQL_DB::db_insert_id() { int MYSQL_DB::db_insert_id() {
mysql_query(mp, "select LAST_INSERT_ID()"); int retval;
retval = mysql_query(mp, "select LAST_INSERT_ID()");
if (retval) return mysql_errno(mp);
rp = mysql_store_result(mp); rp = mysql_store_result(mp);
row = mysql_fetch_row(rp); row = mysql_fetch_row(rp);
return atoi(row[0]); return atoi(row[0]);
@ -107,10 +109,12 @@ int MYSQL_DB::db_delete(int id, int type) {
int MYSQL_DB::db_lookup_id(int i, void* vp, int type) { int MYSQL_DB::db_lookup_id(int i, void* vp, int type) {
char buf[MAX_QUERY_LEN]; char buf[MAX_QUERY_LEN];
int retval;
sprintf(buf, "select * from %s where id=%d", table_name[type], i); sprintf(buf, "select * from %s where id=%d", table_name[type], i);
mysql_query(mp, buf); retval = mysql_query(mp, buf);
if (retval) return mysql_errno(mp);
rp = mysql_store_result(mp); rp = mysql_store_result(mp);
if (!rp) return -1; if (!rp) return mysql_errno(mp);
row = mysql_fetch_row(rp); row = mysql_fetch_row(rp);
if (row) row_to_struct(row, vp, type); if (row) row_to_struct(row, vp, type);
mysql_free_result(rp); mysql_free_result(rp);
@ -119,10 +123,12 @@ int MYSQL_DB::db_lookup_id(int i, void* vp, int type) {
int MYSQL_DB::db_lookup(void* vp, int type, char* clause) { int MYSQL_DB::db_lookup(void* vp, int type, char* clause) {
char buf[MAX_QUERY_LEN]; char buf[MAX_QUERY_LEN];
int retval;
sprintf(buf, "select * from %s where %s", table_name[type], clause); sprintf(buf, "select * from %s where %s", table_name[type], clause);
mysql_query(mp, buf); retval = mysql_query(mp, buf);
if (retval) return mysql_errno(mp);
rp = mysql_store_result(mp); rp = mysql_store_result(mp);
if (!rp) return -1; if (!rp) return mysql_errno(mp);
row = mysql_fetch_row(rp); row = mysql_fetch_row(rp);
if (row) row_to_struct(row, vp, type); if (row) row_to_struct(row, vp, type);
mysql_free_result(rp); mysql_free_result(rp);
@ -142,6 +148,7 @@ int MYSQL_DB::db_update(void* vp, int type) {
int MYSQL_DB::db_enum(ENUM& e, void* p, int type, char* clause, int limit) { int MYSQL_DB::db_enum(ENUM& e, void* p, int type, char* clause, int limit) {
char buf[MAX_QUERY_LEN], buf2[256]; char buf[MAX_QUERY_LEN], buf2[256];
int retval;
if (!e.active) { if (!e.active) {
e.active = 1; e.active = 1;
sprintf(buf, "select * from %s %s", table_name[type], clause?clause:""); sprintf(buf, "select * from %s %s", table_name[type], clause?clause:"");
@ -149,9 +156,10 @@ int MYSQL_DB::db_enum(ENUM& e, void* p, int type, char* clause, int limit) {
sprintf(buf2, " limit %d", limit); sprintf(buf2, " limit %d", limit);
strcat(buf, buf2); strcat(buf, buf2);
} }
mysql_query(mp, buf); retval = mysql_query(mp, buf);
if (retval) return mysql_errno(mp);
e.rp = mysql_store_result(mp); e.rp = mysql_store_result(mp);
if (!e.rp) return -1; if (!e.rp) return mysql_errno(mp);
} }
row = mysql_fetch_row(e.rp); row = mysql_fetch_row(e.rp);
if (!row) { if (!row) {
@ -166,12 +174,14 @@ int MYSQL_DB::db_enum(ENUM& e, void* p, int type, char* clause, int limit) {
int MYSQL_DB::db_enum_field(ENUM& e, int type, char* field, char* clause) { int MYSQL_DB::db_enum_field(ENUM& e, int type, char* field, char* clause) {
char buf[MAX_QUERY_LEN]; char buf[MAX_QUERY_LEN];
int retval;
if (!e.active) { if (!e.active) {
e.active = 1; e.active = 1;
sprintf(buf, "select %s from %s %s", field, table_name[type], clause); sprintf(buf, "select %s from %s %s", field, table_name[type], clause);
mysql_query(mp, buf); retval = mysql_query(mp, buf);
if (retval) return mysql_errno(mp);
e.rp = mysql_store_result(mp); e.rp = mysql_store_result(mp);
if (!e.rp) return -1; if (!e.rp) return mysql_errno(mp);
} }
row = mysql_fetch_row(e.rp); row = mysql_fetch_row(e.rp);
if (!row) { if (!row) {
@ -184,22 +194,26 @@ int MYSQL_DB::db_enum_field(ENUM& e, int type, char* field, char* clause) {
} }
int MYSQL_DB::db_query_int(int* ip, char* query) { int MYSQL_DB::db_query_int(int* ip, char* query) {
mysql_query(mp, query); int retval;
retval = mysql_query(mp, query);
if (retval) return mysql_errno(mp);
rp = mysql_store_result(mp); rp = mysql_store_result(mp);
if (!rp) return -1; if (!rp) return mysql_errno(mp);
row = mysql_fetch_row(rp); row = mysql_fetch_row(rp);
if (!row) return -1; if (!row || !row[0]) return mysql_errno(mp);
*ip = atoi(row[0]); *ip = atoi(row[0]);
mysql_free_result(rp); mysql_free_result(rp);
return 0; return 0;
} }
int MYSQL_DB::db_query_double(double* dp, char* query) { int MYSQL_DB::db_query_double(double* dp, char* query) {
mysql_query(mp, query); int retval;
retval = mysql_query(mp, query);
if (retval) return mysql_errno(mp);
rp = mysql_store_result(mp); rp = mysql_store_result(mp);
if (!rp) return -1; if (!rp) return mysql_errno(mp);
row = mysql_fetch_row(rp); row = mysql_fetch_row(rp);
if (!row) return -1; if (!row || !row[0]) return mysql_errno(mp);
*dp = atof(row[0]); *dp = atof(row[0]);
mysql_free_result(rp); mysql_free_result(rp);
return 0; return 0;