andrey Thu, 06 Oct 2011 11:25:05 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=317829
Log: Be consistent, add mysqli::stat property, as equivalent of mysqli_stat(). Fix for Bug #55859 mysqli->stat property access gives error Bug: https://bugs.php.net/55859 (Open) mysqli->stat property access gives error Changed paths: U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/ext/mysqli/mysqli_prop.c U php/php-src/branches/PHP_5_4/ext/mysqli/mysqli_prop.c U php/php-src/trunk/ext/mysqli/mysqli_prop.c Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2011-10-06 09:50:21 UTC (rev 317828) +++ php/php-src/branches/PHP_5_3/NEWS 2011-10-06 11:25:05 UTC (rev 317829) @@ -3,6 +3,7 @@ ?? ??? 2011, PHP 5.3.9 - Core: + . Fixed bug #55859 (mysqli->stat property access gives error). (Andrey) . Fixed bug #55798 (serialize followed by unserialize with numeric object prop. gives integer prop). (Gustavo) . Fixed bug #55749 (TOCTOU issue in getenv() on Windows builds). (Pierre) Modified: php/php-src/branches/PHP_5_3/ext/mysqli/mysqli_prop.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqli/mysqli_prop.c 2011-10-06 09:50:21 UTC (rev 317828) +++ php/php-src/branches/PHP_5_3/ext/mysqli/mysqli_prop.c 2011-10-06 11:25:05 UTC (rev 317829) @@ -202,6 +202,37 @@ MYSQLI_MAP_PROPERTY_FUNC_STRING(link_sqlstate_read, mysql_sqlstate, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID)) MYSQLI_MAP_PROPERTY_FUNC_LONG(link_thread_id_read, mysql_thread_id, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong, "%lu") MYSQLI_MAP_PROPERTY_FUNC_LONG(link_warning_count_read, mysql_warning_count, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong, "%lu") + +/* {{{ property link_stat_read */ +static int link_stat_read(mysqli_object *obj, zval **retval TSRMLS_DC)\ +{\ + MY_MYSQL *mysql; + + MAKE_STD_ZVAL(*retval); + + CHECK_STATUS(MYSQLI_STATUS_VALID); + + mysql = (MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr; + + if (!mysql) { + ZVAL_NULL(*retval); + } else { + char * stat_msg; +#if defined(MYSQLI_USE_MYSQLND) + uint stat_msg_len; + if (mysqlnd_stat(mysql->mysql, &stat_msg, &stat_msg_len) == PASS) { + ZVAL_STRINGL(*retval, stat_msg, stat_msg_len, 0); + } +#else + if ((stat_msg = (char *) mysql_stat(mysql->mysql))) { + ZVAL_STRING(*retval, stat_msg, 1); + } +#endif + } + return SUCCESS; +} +/* }}} */ + /* result properties */ /* {{{ property result_type_read */ @@ -329,6 +360,7 @@ {"insert_id", sizeof("insert_id") - 1, link_insert_id_read, NULL}, {"server_info", sizeof("server_info") - 1, link_server_info_read, NULL}, {"server_version", sizeof("server_version") - 1, link_server_version_read, NULL}, + {"stat", sizeof("stat") - 1, link_stat_read, NULL}, {"sqlstate", sizeof("sqlstate") - 1, link_sqlstate_read, NULL}, {"protocol_version",sizeof("protocol_version") - 1, link_protocol_version_read, NULL}, {"thread_id", sizeof("thread_id") - 1, link_thread_id_read, NULL}, @@ -351,6 +383,7 @@ {ZEND_ACC_PUBLIC, "insert_id", sizeof("insert_id") - 1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "server_info", sizeof("server_info") - 1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "server_version", sizeof("server_version") - 1, 0, NULL, 0, NULL}, + {ZEND_ACC_PUBLIC, "stat", sizeof("stat") - 1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "sqlstate", sizeof("sqlstate") - 1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "protocol_version", sizeof("protocol_version")-1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "thread_id", sizeof("thread_id") - 1, 0, NULL, 0, NULL}, Modified: php/php-src/branches/PHP_5_4/ext/mysqli/mysqli_prop.c =================================================================== --- php/php-src/branches/PHP_5_4/ext/mysqli/mysqli_prop.c 2011-10-06 09:50:21 UTC (rev 317828) +++ php/php-src/branches/PHP_5_4/ext/mysqli/mysqli_prop.c 2011-10-06 11:25:05 UTC (rev 317829) @@ -251,6 +251,37 @@ MYSQLI_MAP_PROPERTY_FUNC_LONG(link_thread_id_read, mysql_thread_id, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong, "%lu") MYSQLI_MAP_PROPERTY_FUNC_LONG(link_warning_count_read, mysql_warning_count, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong, "%lu") +/* {{{ property link_stat_read */ +static int link_stat_read(mysqli_object *obj, zval **retval TSRMLS_DC)\ +{\ + MY_MYSQL *mysql; + + MAKE_STD_ZVAL(*retval); + + CHECK_STATUS(MYSQLI_STATUS_VALID); + + mysql = (MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr; + + if (!mysql) { + ZVAL_NULL(*retval); + } else { + char * stat_msg; +#if defined(MYSQLI_USE_MYSQLND) + uint stat_msg_len; + if (mysqlnd_stat(mysql->mysql, &stat_msg, &stat_msg_len) == PASS) { + ZVAL_STRINGL(*retval, stat_msg, stat_msg_len, 0); + } +#else + if ((stat_msg = (char *) mysql_stat(mysql->mysql))) { + ZVAL_STRING(*retval, stat_msg, 1); + } +#endif + } + return SUCCESS; +} +/* }}} */ + + /* result properties */ /* {{{ property result_type_read */ @@ -424,6 +455,7 @@ {"insert_id", sizeof("insert_id") - 1, link_insert_id_read, NULL}, {"server_info", sizeof("server_info") - 1, link_server_info_read, NULL}, {"server_version", sizeof("server_version") - 1, link_server_version_read, NULL}, + {"stat", sizeof("stat") - 1, link_stat_read, NULL}, {"sqlstate", sizeof("sqlstate") - 1, link_sqlstate_read, NULL}, {"protocol_version",sizeof("protocol_version") - 1, link_protocol_version_read, NULL}, {"thread_id", sizeof("thread_id") - 1, link_thread_id_read, NULL}, @@ -447,6 +479,7 @@ {ZEND_ACC_PUBLIC, "insert_id", sizeof("insert_id") - 1, -1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "server_info", sizeof("server_info") - 1, -1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "server_version", sizeof("server_version") - 1, -1, 0, NULL, 0, NULL}, + {ZEND_ACC_PUBLIC, "stat", sizeof("stat") - 1, -1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "sqlstate", sizeof("sqlstate") - 1, -1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "protocol_version", sizeof("protocol_version")-1, -1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "thread_id", sizeof("thread_id") - 1, -1, 0, NULL, 0, NULL}, Modified: php/php-src/trunk/ext/mysqli/mysqli_prop.c =================================================================== --- php/php-src/trunk/ext/mysqli/mysqli_prop.c 2011-10-06 09:50:21 UTC (rev 317828) +++ php/php-src/trunk/ext/mysqli/mysqli_prop.c 2011-10-06 11:25:05 UTC (rev 317829) @@ -251,6 +251,37 @@ MYSQLI_MAP_PROPERTY_FUNC_LONG(link_thread_id_read, mysql_thread_id, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong, "%lu") MYSQLI_MAP_PROPERTY_FUNC_LONG(link_warning_count_read, mysql_warning_count, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong, "%lu") +/* {{{ property link_stat_read */ +static int link_stat_read(mysqli_object *obj, zval **retval TSRMLS_DC)\ +{\ + MY_MYSQL *mysql; + + MAKE_STD_ZVAL(*retval); + + CHECK_STATUS(MYSQLI_STATUS_VALID); + + mysql = (MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr; + + if (!mysql) { + ZVAL_NULL(*retval); + } else { + char * stat_msg; +#if defined(MYSQLI_USE_MYSQLND) + uint stat_msg_len; + if (mysqlnd_stat(mysql->mysql, &stat_msg, &stat_msg_len) == PASS) { + ZVAL_STRINGL(*retval, stat_msg, stat_msg_len, 0); + } +#else + if ((stat_msg = (char *) mysql_stat(mysql->mysql))) { + ZVAL_STRING(*retval, stat_msg, 1); + } +#endif + } + return SUCCESS; +} +/* }}} */ + + /* result properties */ /* {{{ property result_type_read */ @@ -424,6 +455,7 @@ {"insert_id", sizeof("insert_id") - 1, link_insert_id_read, NULL}, {"server_info", sizeof("server_info") - 1, link_server_info_read, NULL}, {"server_version", sizeof("server_version") - 1, link_server_version_read, NULL}, + {"stat", sizeof("stat") - 1, link_stat_read, NULL}, {"sqlstate", sizeof("sqlstate") - 1, link_sqlstate_read, NULL}, {"protocol_version",sizeof("protocol_version") - 1, link_protocol_version_read, NULL}, {"thread_id", sizeof("thread_id") - 1, link_thread_id_read, NULL}, @@ -447,6 +479,7 @@ {ZEND_ACC_PUBLIC, "insert_id", sizeof("insert_id") - 1, -1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "server_info", sizeof("server_info") - 1, -1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "server_version", sizeof("server_version") - 1, -1, 0, NULL, 0, NULL}, + {ZEND_ACC_PUBLIC, "stat", sizeof("stat") - 1, -1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "sqlstate", sizeof("sqlstate") - 1, -1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "protocol_version", sizeof("protocol_version")-1, -1, 0, NULL, 0, NULL}, {ZEND_ACC_PUBLIC, "thread_id", sizeof("thread_id") - 1, -1, 0, NULL, 0, NULL},
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php