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

Reply via email to