diff -r 5ab0b30f8fbd -r 7956401a0c5e dbd/mysql/statement.c --- a/dbd/mysql/statement.c Fri Dec 12 03:46:34 2008 +0000 +++ b/dbd/mysql/statement.c Fri Dec 19 09:17:16 2008 +0000 @@ -27,6 +27,21 @@ } /* + * num_affected_rows = statement:affected() + */ +static int statement_affected(lua_State *L) { + statement_t *statement = (statement_t *)luaL_checkudata(L, 1, DBD_MYSQL_STATEMENT); + + if (!statement->stmt) { + luaL_error(L, DBI_ERR_INVALID_STATEMENT); + } + + lua_pushinteger(L, mysql_stmt_affected_rows(statement->stmt)); + + return 1; +} + +/* * success = statement:close() */ static int statement_close(lua_State *L) { @@ -163,6 +178,10 @@ metadata = mysql_stmt_result_metadata(statement->stmt); + if (metadata) { + mysql_stmt_store_result(statement->stmt); + } + cleanup: /* * free the buffer with a resize to 0 @@ -315,9 +334,23 @@ } /* + * num_rows = statement:rowcount() + */ +static int statement_rowcount(lua_State *L) { + statement_t *statement = (statement_t *)luaL_checkudata(L, 1, DBD_MYSQL_STATEMENT); + + if (!statement->stmt) { + luaL_error(L, DBI_ERR_INVALID_STATEMENT); + } + + lua_pushinteger(L, mysql_stmt_num_rows(statement->stmt)); + + return 1; +} + +/* * iterfunc = statement:rows(named_indexes) */ - static int statement_rows(lua_State *L) { if (lua_gettop(L) == 1) { lua_pushvalue(L, 1); @@ -373,9 +406,11 @@ int dbd_mysql_statement(lua_State *L) { static const luaL_Reg statement_methods[] = { + {"affected", statement_affected}, {"close", statement_close}, {"execute", statement_execute}, {"fetch", statement_fetch}, + {"rowcount", statement_rowcount}, {"rows", statement_rows}, {NULL, NULL} };