From 113cd9dc0f133441b9790a8d13f1e843c4df707f Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Fri, 25 Feb 2011 12:25:36 +0000 Subject: [PATCH] move from macros to functions, which can be overwritten, if needed --- ext/mysqlnd/mysqlnd.c | 42 ++++++++++++++++++++++++++++++++++- ext/mysqlnd/mysqlnd.h | 10 ++++----- ext/mysqlnd/mysqlnd_structs.h | 8 +++++++ 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index f2a9f3422e..b233438b14 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -2225,6 +2225,43 @@ MYSQLND_METHOD(mysqlnd_conn, get_connection_stats)(const MYSQLND * const conn, /* }}} */ +/* {{{ mysqlnd_conn::set_autocommit */ +static enum_func_status +MYSQLND_METHOD(mysqlnd_conn, set_autocommit)(MYSQLND * conn, unsigned int mode TSRMLS_DC) +{ + enum_func_status ret; + DBG_ENTER("mysqlnd_conn::set_autocommit"); + ret = conn->m->query(conn, (mode) ? "SET AUTOCOMMIT=1":"SET AUTOCOMMIT=0", sizeof("SET AUTOCOMMIT=1") - 1 TSRMLS_CC); + DBG_RETURN(ret); +} +/* }}} */ + + +/* {{{ mysqlnd_conn::tx_commit */ +static enum_func_status +MYSQLND_METHOD(mysqlnd_conn, tx_commit)(MYSQLND * conn TSRMLS_DC) +{ + enum_func_status ret; + DBG_ENTER("mysqlnd_conn::tx_commit"); + ret = conn->m->query(conn, "COMMIT", sizeof("COMMIT") - 1 TSRMLS_CC); + DBG_RETURN(ret); +} +/* }}} */ + + +/* {{{ mysqlnd_conn::tx_rollback */ +static enum_func_status +MYSQLND_METHOD(mysqlnd_conn, tx_rollback)(MYSQLND * conn TSRMLS_DC) +{ + enum_func_status ret; + DBG_ENTER("mysqlnd_conn::tx_rollback"); + ret = conn->m->query(conn, "ROLLBACK", sizeof("ROLLBACK") - 1 TSRMLS_CC); + DBG_RETURN(ret); +} +/* }}} */ + + + MYSQLND_STMT * _mysqlnd_stmt_init(MYSQLND * const conn TSRMLS_DC); static enum_func_status MYSQLND_METHOD(mysqlnd_conn, init)(MYSQLND * conn TSRMLS_DC); @@ -2298,7 +2335,10 @@ MYSQLND_CLASS_METHODS_START(mysqlnd_conn) MYSQLND_METHOD(mysqlnd_conn, send_close), MYSQLND_METHOD(mysqlnd_conn, ssl_set), - mysqlnd_result_init + mysqlnd_result_init, + MYSQLND_METHOD(mysqlnd_conn, set_autocommit), + MYSQLND_METHOD(mysqlnd_conn, tx_commit), + MYSQLND_METHOD(mysqlnd_conn, tx_rollback) MYSQLND_CLASS_METHODS_END; diff --git a/ext/mysqlnd/mysqlnd.h b/ext/mysqlnd/mysqlnd.h index 9364fd2718..4b609ae521 100644 --- a/ext/mysqlnd/mysqlnd.h +++ b/ext/mysqlnd/mysqlnd.h @@ -22,8 +22,8 @@ #ifndef MYSQLND_H #define MYSQLND_H -#define MYSQLND_VERSION "mysqlnd 5.0.7-dev - 091210 - $Revision$" -#define MYSQLND_VERSION_ID 50007 +#define MYSQLND_VERSION "mysqlnd 5.0.9-dev - 20102224 - $Revision$" +#define MYSQLND_VERSION_ID 50009 /* This forces inlining of some accessor functions */ #define MYSQLND_USE_OPTIMISATIONS 0 @@ -198,9 +198,9 @@ PHPAPI void mysqlnd_local_infile_default(MYSQLND *conn); PHPAPI void mysqlnd_set_local_infile_handler(MYSQLND * const conn, const char * const funcname); /* Simple commands */ -#define mysqlnd_autocommit(conn, mode) (conn)->m->query((conn),(mode) ? "SET AUTOCOMMIT=1":"SET AUTOCOMMIT=0", 16 TSRMLS_CC) -#define mysqlnd_commit(conn) (conn)->m->query((conn), "COMMIT", sizeof("COMMIT")-1 TSRMLS_CC) -#define mysqlnd_rollback(conn) (conn)->m->query((conn), "ROLLBACK", sizeof("ROLLBACK")-1 TSRMLS_CC) +#define mysqlnd_autocommit(conn, mode) (conn)->m->set_autocommit((conn), (mode) TSRMLS_CC) +#define mysqlnd_commit(conn) (conn)->m->tx_commit((conn) TSRMLS_CC) +#define mysqlnd_rollback(conn) (conn)->m->tx_rollback((conn) TSRMLS_CC) #define mysqlnd_list_dbs(conn, wild) (conn)->m->list_method((conn), wild? "SHOW DATABASES LIKE %s":"SHOW DATABASES", (wild), NULL TSRMLS_CC) #define mysqlnd_list_fields(conn, tab,wild) (conn)->m->list_fields((conn), (tab), (wild) TSRMLS_CC) #define mysqlnd_list_processes(conn) (conn)->m->list_method((conn), "SHOW PROCESSLIST", NULL, NULL TSRMLS_CC) diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h index 90f61ca02c..95e676e679 100644 --- a/ext/mysqlnd/mysqlnd_structs.h +++ b/ext/mysqlnd/mysqlnd_structs.h @@ -406,6 +406,11 @@ typedef enum_func_status (*func_mysqlnd_conn__ssl_set)(MYSQLND * const conn, typedef MYSQLND_RES * (*func_mysqlnd_conn__result_init)(unsigned int field_count, zend_bool persistent TSRMLS_DC); +typedef enum_func_status (*func_mysqlnd_conn__set_autocommit)(MYSQLND * conn, unsigned int mode TSRMLS_DC); +typedef enum_func_status (*func_mysqlnd_conn__tx_commit)(MYSQLND * conn TSRMLS_DC); +typedef enum_func_status (*func_mysqlnd_conn__tx_rollback)(MYSQLND * conn TSRMLS_DC); + + struct st_mysqlnd_conn_methods { func_mysqlnd_conn__init init; @@ -477,6 +482,9 @@ struct st_mysqlnd_conn_methods func_mysqlnd_conn__ssl_set ssl_set; func_mysqlnd_conn__result_init result_init; + func_mysqlnd_conn__set_autocommit set_autocommit; + func_mysqlnd_conn__tx_commit tx_commit; + func_mysqlnd_conn__tx_rollback tx_rollback; }; -- 2.40.0