Skip to content

Commit 86c108a

Browse files
committed
FIXUP: attempt to simplify the code
We can specify how lua_mysql_push_value() works with data == NULL and use this fact to simplify the code.
1 parent 3848ca5 commit 86c108a

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

mysql/driver.c

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,12 @@ lua_mysql_field_type_to_string(enum enum_field_types type)
183183
return mysql_field_type_strs[hash];
184184
}
185185

186-
/* Push value retrieved from mysql field to lua stack */
186+
/**
187+
* Push value retrieved from mysql field to lua stack.
188+
*
189+
* When `data` is NULL, `field` and len` parameters are
190+
* ignored and Lua nil or LuaJIT FFI NULL is pushed.
191+
*/
187192
static void
188193
lua_mysql_push_value(struct lua_State *L, MYSQL_FIELD *field, void *data,
189194
unsigned long len, int keep_null)
@@ -263,11 +268,8 @@ lua_mysql_fetch_result(struct lua_State *L)
263268
unsigned long *len = mysql_fetch_lengths(result);
264269
unsigned col_no;
265270
for (col_no = 0; col_no < num_fields; ++col_no) {
266-
void *data = conn->keep_null == 1 && !row[col_no] ? NULL
267-
: row[col_no];
268-
lua_mysql_push_value(L, fields + col_no, data,
269-
data == NULL ? 0 : len[col_no],
270-
conn->keep_null);
271+
lua_mysql_push_value(L, fields + col_no, row[col_no],
272+
len[col_no], conn->keep_null);
271273
if (conn->use_numeric_result) {
272274
/* Assign to a column number. */
273275
lua_rawseti(L, -2, col_no + 1);
@@ -380,14 +382,11 @@ lua_mysql_stmt_push_row(struct lua_State *L)
380382
lua_newtable(L);
381383
unsigned col_no;
382384
for (col_no = 0; col_no < col_count; ++col_no) {
383-
void *data = NULL;
384-
if (*results[col_no].is_null && keep_null == 0)
385-
continue;
386-
else if (!(*results[col_no].is_null))
387-
data = results[col_no].buffer;
385+
void *data = *results[col_no].is_null ? NULL :
386+
results[col_no].buffer;
388387
lua_pushstring(L, fields[col_no].name);
389-
lua_mysql_push_value(L, fields + col_no, data, data == NULL ? 0
390-
: *results[col_no].length, keep_null);
388+
lua_mysql_push_value(L, fields + col_no, data,
389+
*results[col_no].length, keep_null);
391390
lua_settable(L, -3);
392391
}
393392
return 1;

0 commit comments

Comments
 (0)