andrey                                   Thu, 22 Oct 2009 17:07:55 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=289858

Log:
Have the lengths also to skip many calls to strlen

Changed paths:
    U   php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c
    U   php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h
    U   php/php-src/trunk/ext/mysqlnd/mysqlnd.c
    U   php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h

Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c  2009-10-22 16:17:41 UTC 
(rev 289857)
+++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c  2009-10-22 17:07:55 UTC 
(rev 289858)
@@ -174,6 +174,11 @@
                mnd_pefree(conn->passwd, pers);
                conn->passwd = NULL;
        }
+       if (conn->connect_or_select_db) {
+               DBG_INF("Freeing connect_or_select_db");
+               mnd_pefree(conn->connect_or_select_db, pers);
+               conn->connect_or_select_db = NULL;
+       }
        if (conn->unix_socket) {
                DBG_INF("Freeing unix_socket");
                mnd_pefree(conn->unix_socket, pers);
@@ -588,6 +593,7 @@
        } else {
                conn->scheme = transport;
        }
+       conn->scheme_len = strlen(conn->scheme);
        DBG_INF(conn->scheme);
        conn->net.stream = php_stream_xport_create(conn->scheme, transport_len, 
streams_options, streams_flags,
                                                                                
           hashed_details,
@@ -726,13 +732,18 @@
                CONN_SET_STATE(conn, CONN_READY);

                conn->user                              = pestrdup(user, 
conn->persistent);
+               conn->user_len                  = strlen(conn->user);
                conn->passwd                    = pestrndup(passwd, passwd_len, 
conn->persistent);
+               conn->passwd_len                = passwd_len;
                conn->port                              = port;
+               conn->connect_or_select_db = pestrndup(db, db_len, 
conn->persistent);
+               conn->connect_or_select_db_len = db_len;

                if (!unix_socket) {
                        char *p;

                        conn->host = pestrdup(host, conn->persistent);
+                       conn->host_len = strlen(conn->host);
                        spprintf(&p, 0, "%s via TCP/IP", conn->host);
                        if (conn->persistent) {
                                conn->host_info = pestrdup(p, 1);
@@ -742,6 +753,7 @@
                        }
                } else {
                        conn->unix_socket       = pestrdup(socket, 
conn->persistent);
+                       conn->unix_socket_len = strlen(conn->unix_socket);
                        conn->host_info         = pestrdup("Localhost via UNIX 
socket", conn->persistent);
                }
                conn->client_flag               = auth_packet->client_flags;
@@ -1282,7 +1294,12 @@
          a protocol of giving back -1. Thus we have to follow it :(
        */
        SET_ERROR_AFF_ROWS(conn);
-
+       if (ret == PASS) {
+               if (conn->connect_or_select_db) {
+                       pefree(conn->connect_or_select_db, conn->persistent);
+               }
+               conn->connect_or_select_db = pestrndup(db, db_len, 
conn->persistent);
+       }
        DBG_RETURN(ret);
 }
 /* }}} */

Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h
===================================================================
--- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h  2009-10-22 
16:17:41 UTC (rev 289857)
+++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h  2009-10-22 
17:07:55 UTC (rev 289858)
@@ -393,17 +393,23 @@

 /* Information related */
        char                    *host;
+       unsigned int    host_len;
        char                    *unix_socket;
+       unsigned int    unix_socket_len;
        char                    *user;
+       unsigned int    user_len;
        char                    *passwd;
-       unsigned int    *passwd_len;
+       unsigned int    passwd_len;
        char                    *scheme;
+       unsigned int    scheme_len;
        uint64_t                thread_id;
        char                    *server_version;
        char                    *host_info;
        unsigned char   *scramble;
        const MYSQLND_CHARSET *charset;
        const MYSQLND_CHARSET *greet_charset;
+       char                    *connect_or_select_db;
+       unsigned int    connect_or_select_db_len;
        MYSQLND_INFILE  infile;
        unsigned int    protocol_version;
        unsigned long   max_packet_size;

Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd.c
===================================================================
--- php/php-src/trunk/ext/mysqlnd/mysqlnd.c     2009-10-22 16:17:41 UTC (rev 
289857)
+++ php/php-src/trunk/ext/mysqlnd/mysqlnd.c     2009-10-22 17:07:55 UTC (rev 
289858)
@@ -174,6 +174,11 @@
                mnd_pefree(conn->passwd, pers);
                conn->passwd = NULL;
        }
+       if (conn->connect_or_select_db) {
+               DBG_INF("Freeing connect_or_select_db");
+               mnd_pefree(conn->connect_or_select_db, pers);
+               conn->connect_or_select_db = NULL;
+       }
        if (conn->unix_socket) {
                DBG_INF("Freeing unix_socket");
                mnd_pefree(conn->unix_socket, pers);
@@ -588,6 +593,7 @@
        } else {
                conn->scheme = transport;
        }
+       conn->scheme_len = strlen(conn->scheme);
        DBG_INF(conn->scheme);
        conn->net.stream = php_stream_xport_create(conn->scheme, transport_len, 
streams_options, streams_flags,
                                                                                
           hashed_details,
@@ -726,13 +732,18 @@
                CONN_SET_STATE(conn, CONN_READY);

                conn->user                              = pestrdup(user, 
conn->persistent);
+               conn->user_len                  = strlen(conn->user);
                conn->passwd                    = pestrndup(passwd, passwd_len, 
conn->persistent);
+               conn->passwd_len                = passwd_len;
                conn->port                              = port;
+               conn->connect_or_select_db = pestrndup(db, db_len, 
conn->persistent);
+               conn->connect_or_select_db_len = db_len;

                if (!unix_socket) {
                        char *p;

                        conn->host = pestrdup(host, conn->persistent);
+                       conn->host_len = strlen(conn->host);
                        spprintf(&p, 0, "%s via TCP/IP", conn->host);
                        if (conn->persistent) {
                                conn->host_info = pestrdup(p, 1);
@@ -742,6 +753,7 @@
                        }
                } else {
                        conn->unix_socket       = pestrdup(socket, 
conn->persistent);
+                       conn->unix_socket_len = strlen(conn->unix_socket);
                        conn->host_info         = pestrdup("Localhost via UNIX 
socket", conn->persistent);
                }
                conn->client_flag               = auth_packet->client_flags;
@@ -1282,7 +1294,12 @@
          a protocol of giving back -1. Thus we have to follow it :(
        */
        SET_ERROR_AFF_ROWS(conn);
-
+       if (ret == PASS) {
+               if (conn->connect_or_select_db) {
+                       pefree(conn->connect_or_select_db, conn->persistent);
+               }
+               conn->connect_or_select_db = pestrndup(db, db_len, 
conn->persistent);
+       }
        DBG_RETURN(ret);
 }
 /* }}} */

Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h
===================================================================
--- php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h     2009-10-22 16:17:41 UTC 
(rev 289857)
+++ php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h     2009-10-22 17:07:55 UTC 
(rev 289858)
@@ -393,17 +393,23 @@

 /* Information related */
        char                    *host;
+       unsigned int    host_len;
        char                    *unix_socket;
+       unsigned int    unix_socket_len;
        char                    *user;
+       unsigned int    user_len;
        char                    *passwd;
-       unsigned int    *passwd_len;
+       unsigned int    passwd_len;
        char                    *scheme;
+       unsigned int    scheme_len;
        uint64_t                thread_id;
        char                    *server_version;
        char                    *host_info;
        unsigned char   *scramble;
        const MYSQLND_CHARSET *charset;
        const MYSQLND_CHARSET *greet_charset;
+       char                    *connect_or_select_db;
+       unsigned int    connect_or_select_db_len;
        MYSQLND_INFILE  infile;
        unsigned int    protocol_version;
        unsigned long   max_packet_size;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to