diff options
| author | Andrey Hristov <andrey@php.net> | 2008-10-27 12:07:35 +0000 |
|---|---|---|
| committer | Andrey Hristov <andrey@php.net> | 2008-10-27 12:07:35 +0000 |
| commit | e8e843b39e494d978c961bf869074150dc1db3ff (patch) | |
| tree | dc74e0371b708fae93b331562057e5a8f2814c0c /ext/mysql/php_mysql.c | |
| parent | 94a948e01f80647c5c955b07aa3e0936806c198f (diff) | |
| download | php-git-e8e843b39e494d978c961bf869074150dc1db3ff.tar.gz | |
Warning if the library API version differs from the headers used to compile.
Patch versions are not considered but major.minor
Fix build of ext/mysql with 4.0.x and pre.
Diffstat (limited to 'ext/mysql/php_mysql.c')
| -rw-r--r-- | ext/mysql/php_mysql.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c index 6890ad77fc..0db86d0fe6 100644 --- a/ext/mysql/php_mysql.c +++ b/ext/mysql/php_mysql.c @@ -124,10 +124,14 @@ static MYSQLND_QCACHE *mysql_mysqlnd_qcache; #endif +#ifdef CLIENT_MULTI_STATEMENTS #define MYSQL_DISABLE_MQ if (mysql->multi_query) { \ mysql_set_server_option(mysql->conn, MYSQL_OPTION_MULTI_STATEMENTS_OFF); \ mysql->multi_query = 0; \ -} +} +#else +#define MYSQL_DISABLE_MQ +#endif /* {{{ mysql_functions[] @@ -627,6 +631,13 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) zend_bool free_host=0, new_link=0; long connect_timeout; +#if !defined(MYSQL_USE_MYSQLND) + if ((MYSQL_VERSION_ID / 100) != (mysql_get_client_version() / 100)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, + "Headers and client library minor version mismatch. Headers:%d Library:%d", + MYSQL_VERSION_ID, mysql_get_client_version()); + } +#endif connect_timeout = MySG(connect_timeout); @@ -682,8 +693,9 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) client_flags ^= CLIENT_LOCAL_FILES; } +#ifdef CLIENT_MULTI_STATEMENTS client_flags &= ~CLIENT_MULTI_STATEMENTS; /* don't allow multi_queries via connect parameter */ - +#endif hashed_details_length = spprintf(&hashed_details, 0, "mysql_%s_%s_%s_%ld", SAFE_STRING(host_and_port), SAFE_STRING(user), SAFE_STRING(passwd), client_flags); } @@ -735,7 +747,11 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* create the link */ mysql = (php_mysql_conn *) malloc(sizeof(php_mysql_conn)); mysql->active_result_id = 0; +#ifdef CLIENT_MULTI_STATEMENTS mysql->multi_query = client_flags & CLIENT_MULTI_STATEMENTS? 1:0; +#else + mysql->multi_query = 0; +#endif #ifndef MYSQL_USE_MYSQLND mysql->conn = mysql_init(NULL); #else @@ -800,7 +816,11 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) } mysql = (php_mysql_conn *) le->ptr; mysql->active_result_id = 0; +#ifdef CLIENT_MULTI_STATEMENTS mysql->multi_query = client_flags & CLIENT_MULTI_STATEMENTS? 1:0; +#else + mysql->multi_query = 0; +#endif /* ensure that the link did not die */ #if defined(MYSQL_USE_MYSQLND) mysqlnd_end_psession(mysql->conn); @@ -882,7 +902,11 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) mysql = (php_mysql_conn *) emalloc(sizeof(php_mysql_conn)); mysql->active_result_id = 0; +#ifdef CLIENT_MULTI_STATEMENTS mysql->multi_query = 1; +#else + mysql->multi_query = 0; +#endif #ifndef MYSQL_USE_MYSQLND mysql->conn = mysql_init(NULL); #else |
