Merge branch 'rafis-master'
This commit is contained in:
commit
dfd5af092e
@ -17,6 +17,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "mysql.h"
|
#include "mysql.h"
|
||||||
|
#include "errmsg.h"
|
||||||
|
|
||||||
#include "lua.h"
|
#include "lua.h"
|
||||||
#include "lauxlib.h"
|
#include "lauxlib.h"
|
||||||
@ -369,6 +370,27 @@ static int conn_close (lua_State *L) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Ping connection.
|
||||||
|
*/
|
||||||
|
static int conn_ping (lua_State *L) {
|
||||||
|
conn_data *conn=(conn_data *)luaL_checkudata(L, 1, LUASQL_CONNECTION_MYSQL);
|
||||||
|
luaL_argcheck (L, conn != NULL, 1, LUASQL_PREFIX"connection expected");
|
||||||
|
if (conn->closed) {
|
||||||
|
lua_pushboolean (L, 0);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (mysql_ping (conn->my_conn) == 0) {
|
||||||
|
lua_pushboolean (L, 1);
|
||||||
|
return 1;
|
||||||
|
} else if (mysql_errno (conn->my_conn) == CR_SERVER_GONE_ERROR) {
|
||||||
|
lua_pushboolean (L, 0);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
luaL_error(L, mysql_error(conn->my_conn));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int escape_string (lua_State *L) {
|
static int escape_string (lua_State *L) {
|
||||||
size_t size, new_size;
|
size_t size, new_size;
|
||||||
@ -492,6 +514,8 @@ static int env_connect (lua_State *L) {
|
|||||||
const char *password = luaL_optstring(L, 4, NULL);
|
const char *password = luaL_optstring(L, 4, NULL);
|
||||||
const char *host = luaL_optstring(L, 5, NULL);
|
const char *host = luaL_optstring(L, 5, NULL);
|
||||||
const int port = luaL_optinteger(L, 6, 0);
|
const int port = luaL_optinteger(L, 6, 0);
|
||||||
|
const char *unix_socket = luaL_optstring(L, 7, NULL);
|
||||||
|
const long client_flag = luaL_optlong(L, 8, 0);
|
||||||
MYSQL *conn;
|
MYSQL *conn;
|
||||||
getenvironment(L); /* validade environment */
|
getenvironment(L); /* validade environment */
|
||||||
|
|
||||||
@ -501,7 +525,7 @@ static int env_connect (lua_State *L) {
|
|||||||
return luasql_faildirect(L, "error connecting: Out of memory.");
|
return luasql_faildirect(L, "error connecting: Out of memory.");
|
||||||
|
|
||||||
if (!mysql_real_connect(conn, host, username, password,
|
if (!mysql_real_connect(conn, host, username, password,
|
||||||
sourcename, port, NULL, 0))
|
sourcename, port, unix_socket, client_flag))
|
||||||
{
|
{
|
||||||
char error_msg[100];
|
char error_msg[100];
|
||||||
strncpy (error_msg, mysql_error(conn), 99);
|
strncpy (error_msg, mysql_error(conn), 99);
|
||||||
@ -552,6 +576,7 @@ static void create_metatables (lua_State *L) {
|
|||||||
struct luaL_Reg connection_methods[] = {
|
struct luaL_Reg connection_methods[] = {
|
||||||
{"__gc", conn_gc},
|
{"__gc", conn_gc},
|
||||||
{"close", conn_close},
|
{"close", conn_close},
|
||||||
|
{"ping", conn_ping},
|
||||||
{"escape", escape_string},
|
{"escape", escape_string},
|
||||||
{"execute", conn_execute},
|
{"execute", conn_execute},
|
||||||
{"commit", conn_commit},
|
{"commit", conn_commit},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user