@@ -183,7 +183,12 @@ lua_mysql_field_type_to_string(enum enum_field_types type)
183
183
return mysql_field_type_strs [hash ];
184
184
}
185
185
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
+ */
187
192
static void
188
193
lua_mysql_push_value (struct lua_State * L , MYSQL_FIELD * field , void * data ,
189
194
unsigned long len , int keep_null )
@@ -263,11 +268,8 @@ lua_mysql_fetch_result(struct lua_State *L)
263
268
unsigned long * len = mysql_fetch_lengths (result );
264
269
unsigned col_no ;
265
270
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 );
271
273
if (conn -> use_numeric_result ) {
272
274
/* Assign to a column number. */
273
275
lua_rawseti (L , -2 , col_no + 1 );
@@ -380,14 +382,11 @@ lua_mysql_stmt_push_row(struct lua_State *L)
380
382
lua_newtable (L );
381
383
unsigned col_no ;
382
384
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 ;
388
387
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 );
391
390
lua_settable (L , -3 );
392
391
}
393
392
return 1 ;
0 commit comments