Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
mx_mysql: Redesign mx_mysql_statement_prepare()
  • Loading branch information
mariux committed May 22, 2015
1 parent cb30353 commit ce4ab06
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 44 deletions.
52 changes: 30 additions & 22 deletions mx_mysql.c
Expand Up @@ -1110,38 +1110,46 @@ int mx_mysql_bind_init(struct mx_mysql_bind *bind, unsigned long count)
return 0;
}

int mx_mysql_statement_prepare(struct mx_mysql_stmt *stmt, char *statement)
struct mx_mysql_stmt *mx_mysql_statement_prepare(struct mx_mysql *mysql, char *statement)
{
int res;
struct mx_mysql_stmt *stmt = NULL;

mx_assert_return_minus_errno(stmt, EINVAL);
mx_assert_return_NULL(mysql, EINVAL);
mx_assert_return_NULL(statement, EINVAL);
mx_assert_return_NULL(*statement, EINVAL);

res = mx__mysql_stmt_prepare(stmt, statement);
mx_mysql_assert_usage_ok(res);
res = mx_mysql_statement_init(mysql, &stmt);
if (res < 0)
return res;
return NULL;

res = mx_mysql_stmt_param_count_set(stmt);
mx_mysql_assert_usage_ok(res);
if (res < 0)
return res;
while (1) {
res = mx__mysql_stmt_prepare(stmt, statement);
if (res < 0)
break;

res = mx_mysql_stmt_field_count_set(stmt);
mx_mysql_assert_usage_ok(res);
if (res < 0)
return res;
res = mx_mysql_stmt_param_count_set(stmt);
if (res < 0)
break;

res = mx_mysql_bind_init(&stmt->param, stmt->param_count);
mx_mysql_assert_usage_ok(res);
if (res < 0)
return res;
res = mx_mysql_stmt_field_count_set(stmt);
if (res < 0)
break;

res = mx_mysql_bind_init(&stmt->result, stmt->field_count);
mx_mysql_assert_usage_ok(res);
if (res < 0)
return res;
res = mx_mysql_bind_init(&stmt->param, stmt->param_count);
if (res < 0)
break;

return 0;
res = mx_mysql_bind_init(&stmt->result, stmt->field_count);
if (res < 0)
break;

return stmt;
};

mx_mysql_statement_close(&stmt);

return NULL;
}

int mx_mysql_statement_close(struct mx_mysql_stmt **stmt)
Expand Down
2 changes: 1 addition & 1 deletion mx_mysql.h
Expand Up @@ -114,7 +114,7 @@ int mx_mysql_end(void);
int mx_mysql_finish(struct mx_mysql **mysql);

int mx_mysql_statement_init(struct mx_mysql *mysql, struct mx_mysql_stmt **stmt);
int mx_mysql_statement_prepare(struct mx_mysql_stmt *stmt, char *statement);
struct mx_mysql_stmt *mx_mysql_statement_prepare(struct mx_mysql *mysql, char *statement);
int mx_mysql_statement_execute(struct mx_mysql_stmt *stmt, unsigned long long *count);

int mx_mysql_statement_insert_id(struct mx_mysql_stmt *stmt, unsigned long long int *id);
Expand Down
30 changes: 9 additions & 21 deletions mxqsub.c
Expand Up @@ -164,11 +164,7 @@ static int load_group_id(struct mx_mysql *mysql, struct mxq_group *g)
assert(g->job_command); assert(*g->job_command);
assert(g->job_threads); assert(g->job_memory); assert(g->job_time);

res = mx_mysql_statement_init(mysql, &stmt);
if (res < 0)
return res;

res = mx_mysql_statement_prepare(stmt,
stmt = mx_mysql_statement_prepare(mysql,
"SELECT"
" group_id"
" FROM mxq_group "
Expand All @@ -185,9 +181,9 @@ static int load_group_id(struct mx_mysql *mysql, struct mxq_group *g)
" AND group_status = 0"
" ORDER BY group_id "
" LIMIT 1");
if (res < 0) {
if (!stmt) {
mx_log_err("mx_mysql_statement_prepare(): %m");
return res;
return -errno;
}

res = mx_mysql_statement_param_bind(stmt, 0, string, &(g->group_name));
Expand Down Expand Up @@ -238,11 +234,7 @@ static int add_group(struct mx_mysql *mysql, struct mxq_group *g)
assert(g->job_command); assert(*g->job_command);
assert(g->job_threads); assert(g->job_memory); assert(g->job_time);

res = mx_mysql_statement_init(mysql, &stmt);
if (res < 0)
return res;

res = mx_mysql_statement_prepare(stmt,
stmt = mx_mysql_statement_prepare(mysql,
"INSERT INTO mxq_group SET"
" group_name = ?,"

Expand All @@ -257,9 +249,9 @@ static int add_group(struct mx_mysql *mysql, struct mxq_group *g)
" job_memory = ?,"
" job_time = ?,"
" group_priority = ?");
if (res < 0) {
if (!stmt) {
mx_log_err("mx_mysql_statement_prepare(): %m");
return res;
return -errno;
}

res = mx_mysql_statement_param_bind(stmt, 0, string, &(g->group_name));
Expand Down Expand Up @@ -308,11 +300,7 @@ static int add_job(struct mx_mysql *mysql, struct mxq_job *j)
assert(j->job_umask);
assert(j->host_submit); assert(*j->host_submit);

res = mx_mysql_statement_init(mysql, &stmt);
if (res < 0)
return res;

res = mx_mysql_statement_prepare(stmt,
stmt = mx_mysql_statement_prepare(mysql,
"INSERT INTO mxq_job SET"
" job_priority = ?,"

Expand All @@ -331,10 +319,10 @@ static int add_job(struct mx_mysql *mysql, struct mxq_job *j)

" job_flags = ?"
);
if (res < 0) {
if (!stmt) {
mx_log_err("mx_mysql_statement_prepare(): %m");
mx_mysql_statement_close(&stmt);
return res;
return -errno;
}

res = mx_mysql_statement_param_bind(stmt, 0, uint16, &(j->job_priority));
Expand Down

0 comments on commit ce4ab06

Please sign in to comment.