PHP  
 PHP: Test and Code Coverage Analysis
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

LTP GCOV extension - code coverage report
Current view: directory - pdo_mysql - pdo_mysql.c
Test: PHP Code Coverage
Date: 2009-11-21 Instrumented lines: 38
Code covered: 100.0 % Executed lines: 38
Legend: not executed executed

       1                 : /*
       2                 :   +----------------------------------------------------------------------+
       3                 :   | PHP Version 5                                                        |
       4                 :   +----------------------------------------------------------------------+
       5                 :   | Copyright (c) 1997-2009 The PHP Group                                |
       6                 :   +----------------------------------------------------------------------+
       7                 :   | This source file is subject to version 3.01 of the PHP license,      |
       8                 :   | that is bundled with this package in the file LICENSE, and is        |
       9                 :   | available through the world-wide-web at the following url:           |
      10                 :   | http://www.php.net/license/3_01.txt                                  |
      11                 :   | If you did not receive a copy of the PHP license and are unable to   |
      12                 :   | obtain it through the world-wide-web, please send a note to          |
      13                 :   | license@php.net so we can mail you a copy immediately.               |
      14                 :   +----------------------------------------------------------------------+
      15                 :   | Author: George Schlossnagle <george@omniti.com>                      |
      16                 :   |         Johannes Schlueter <johannes@mysql.com>                      |
      17                 :   +----------------------------------------------------------------------+
      18                 : */
      19                 : 
      20                 : /* $Id: pdo_mysql.c 290053 2009-10-29 13:33:51Z iliaa $ */
      21                 : 
      22                 : #ifdef HAVE_CONFIG_H
      23                 : #include "config.h"
      24                 : #endif
      25                 : 
      26                 : #include "php.h"
      27                 : #include "php_ini.h"
      28                 : #include "ext/standard/info.h"
      29                 : #include "pdo/php_pdo.h"
      30                 : #include "pdo/php_pdo_driver.h"
      31                 : #include "php_pdo_mysql.h"
      32                 : #include "php_pdo_mysql_int.h"
      33                 : 
      34                 : #ifdef COMPILE_DL_PDO_MYSQL
      35                 : ZEND_GET_MODULE(pdo_mysql)
      36                 : #endif
      37                 : 
      38                 : #if PDO_USE_MYSQLND
      39                 : ZEND_DECLARE_MODULE_GLOBALS(pdo_mysql);
      40                 : 
      41                 : #ifndef PHP_WIN32
      42                 : # ifndef PDO_MYSQL_UNIX_ADDR
      43                 : #  ifdef PHP_MYSQL_UNIX_SOCK_ADDR
      44                 : #   define PDO_MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR
      45                 : #  else
      46                 : #   define PDO_MYSQL_UNIX_ADDR "/tmp/mysql.sock"
      47                 : #  endif
      48                 : # endif
      49                 : #endif
      50                 : 
      51                 : /* {{{ PHP_INI_BEGIN
      52                 : */
      53                 : PHP_INI_BEGIN()
      54                 : #ifndef PHP_WIN32
      55                 :         STD_PHP_INI_ENTRY("pdo_mysql.default_socket", PDO_MYSQL_UNIX_ADDR, PHP_INI_SYSTEM, OnUpdateString, default_socket, zend_pdo_mysql_globals, pdo_mysql_globals)
      56                 : #endif
      57                 : #if PDO_DBG_ENABLED
      58                 :         STD_PHP_INI_ENTRY("pdo_mysql.debug",  NULL, PHP_INI_SYSTEM, OnUpdateString, debug, zend_pdo_mysql_globals, pdo_mysql_globals)
      59                 : #endif
      60                 :         STD_PHP_INI_ENTRY("pdo_mysql.cache_size",                     "2000",       PHP_INI_SYSTEM,         OnUpdateLong,           cache_size,                     zend_pdo_mysql_globals,         pdo_mysql_globals)
      61                 : PHP_INI_END()
      62                 : /* }}} */
      63                 : #endif
      64                 : 
      65                 : /* true global environment */
      66                 : #ifdef PDO_USE_MYSQLND
      67                 : static MYSQLND_ZVAL_PCACHE *pdo_mysqlnd_zval_cache;
      68                 : #endif
      69                 :                 
      70                 :                 
      71                 : /* {{{ PHP_MINIT_FUNCTION
      72                 :  */
      73                 : static PHP_MINIT_FUNCTION(pdo_mysql)
      74           17633 : {
      75                 : #if PDO_USE_MYSQLND
      76           17633 :         REGISTER_INI_ENTRIES();
      77                 : #endif
      78                 : 
      79           17633 :         REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_USE_BUFFERED_QUERY", (long)PDO_MYSQL_ATTR_USE_BUFFERED_QUERY);
      80           17633 :         REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_LOCAL_INFILE", (long)PDO_MYSQL_ATTR_LOCAL_INFILE);  
      81           17633 :         REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_INIT_COMMAND", (long)PDO_MYSQL_ATTR_INIT_COMMAND);
      82                 : #ifndef PDO_USE_MYSQLND
      83                 :         REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_MAX_BUFFER_SIZE", (long)PDO_MYSQL_ATTR_MAX_BUFFER_SIZE);
      84                 :         REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_FILE", (long)PDO_MYSQL_ATTR_READ_DEFAULT_FILE);
      85                 :         REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_GROUP", (long)PDO_MYSQL_ATTR_READ_DEFAULT_GROUP);
      86                 :         REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_COMPRESS", (long)PDO_MYSQL_ATTR_COMPRESS);
      87                 : #endif
      88           17633 :         REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_DIRECT_QUERY", (long)PDO_MYSQL_ATTR_DIRECT_QUERY);
      89           17633 :         REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_FOUND_ROWS", (long)PDO_MYSQL_ATTR_FOUND_ROWS);
      90           17633 :         REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_IGNORE_SPACE", (long)PDO_MYSQL_ATTR_IGNORE_SPACE);
      91                 : 
      92                 : #ifdef PDO_USE_MYSQLND
      93           17633 :         pdo_mysqlnd_zval_cache = mysqlnd_palloc_init_cache(PDO_MYSQL_G(cache_size));
      94                 : #endif
      95                 :         
      96           17633 :         return php_pdo_register_driver(&pdo_mysql_driver);
      97                 : }
      98                 : /* }}} */
      99                 : 
     100                 : /* {{{ PHP_MSHUTDOWN_FUNCTION
     101                 :  */
     102                 : static PHP_MSHUTDOWN_FUNCTION(pdo_mysql)
     103           17665 : {
     104           17665 :         php_pdo_unregister_driver(&pdo_mysql_driver);
     105                 : #if PDO_USE_MYSQLND
     106           17665 :         mysqlnd_palloc_free_cache(pdo_mysqlnd_zval_cache);
     107           17665 :         UNREGISTER_INI_ENTRIES();
     108                 : #endif
     109                 : 
     110           17665 :         return SUCCESS;
     111                 : }
     112                 : /* }}} */
     113                 : 
     114                 : /* {{{ PHP_MINFO_FUNCTION
     115                 :  */
     116                 : static PHP_MINFO_FUNCTION(pdo_mysql)
     117              42 : {
     118              42 :         php_info_print_table_start();
     119                 : 
     120              42 :         php_info_print_table_header(2, "PDO Driver for MySQL", "enabled");
     121              42 :         php_info_print_table_row(2, "Client API version", mysql_get_client_info());
     122                 : 
     123                 : #ifdef PDO_USE_MYSQLND
     124                 :         {
     125                 :                 zval values;
     126                 : 
     127              42 :                 php_info_print_table_header(2, "Persistent cache", pdo_mysqlnd_zval_cache ? "enabled":"disabled");
     128                 :                 
     129              42 :                 if (pdo_mysqlnd_zval_cache) {
     130                 :                         /* Now report cache status */
     131              42 :                         mysqlnd_palloc_stats(pdo_mysqlnd_zval_cache, &values);
     132              42 :                         mysqlnd_minfo_print_hash(&values);
     133              42 :                         zval_dtor(&values);
     134                 :                 }
     135                 :         }
     136                 : #endif
     137              42 :         php_info_print_table_end();
     138                 : 
     139                 : #ifdef PDO_USE_MYSQLND
     140              42 :         DISPLAY_INI_ENTRIES();
     141                 : #endif
     142              42 : }
     143                 : /* }}} */
     144                 : 
     145                 : 
     146                 : #if PDO_USE_MYSQLND
     147                 : /* {{{ PHP_RINIT_FUNCTION
     148                 :  */
     149                 : static PHP_RINIT_FUNCTION(pdo_mysql)
     150           17619 : {
     151           17619 :         PDO_MYSQL_G(mysqlnd_thd_zval_cache) = mysqlnd_palloc_rinit(pdo_mysqlnd_zval_cache);
     152                 :         
     153                 : #if PDO_DBG_ENABLED
     154                 :         if (PDO_MYSQL_G(debug)) {
     155                 :                 MYSQLND_DEBUG *dbg = mysqlnd_debug_init(TSRMLS_C);
     156                 :                 if (!dbg) {
     157                 :                         return FAILURE;
     158                 :                 }
     159                 :                 dbg->m->set_mode(dbg, PDO_MYSQL_G(debug));
     160                 :                 PDO_MYSQL_G(dbg) = dbg;
     161                 :         }
     162                 : #endif
     163                 :         
     164           17619 :         return SUCCESS;
     165                 : }
     166                 : /* }}} */
     167                 : 
     168                 : 
     169                 : /* {{{ PHP_RSHUTDOWN_FUNCTION
     170                 :  */
     171                 : static PHP_RSHUTDOWN_FUNCTION(pdo_mysql)
     172           17651 : {
     173           17651 :         mysqlnd_palloc_rshutdown(PDO_MYSQL_G(mysqlnd_thd_zval_cache));
     174                 :         
     175                 : #if PDO_DBG_ENABLED
     176                 :         MYSQLND_DEBUG *dbg = PDO_MYSQL_G(dbg);
     177                 :         PDO_DBG_ENTER("RSHUTDOWN");
     178                 :         if (dbg) {
     179                 :                 dbg->m->close(dbg);
     180                 :                 dbg->m->free_handle(dbg);
     181                 :                 PDO_MYSQL_G(dbg) = NULL;
     182                 :         }
     183                 : #endif
     184           17651 :         return SUCCESS;
     185                 : }
     186                 : /* }}} */
     187                 : 
     188                 : 
     189                 : /* {{{ PHP_GINIT_FUNCTION
     190                 :  */
     191                 : static PHP_GINIT_FUNCTION(pdo_mysql)
     192           17633 : {
     193           17633 :         pdo_mysql_globals->mysqlnd_thd_zval_cache = NULL; /* zval cache */
     194           17633 :         pdo_mysql_globals->cache_size = 0;
     195                 : #ifndef PHP_WIN32
     196           17633 :         pdo_mysql_globals->default_socket = NULL;
     197                 : #endif
     198                 : #if PDO_DBG_ENABLED
     199                 :         pdo_mysql_globals->debug = NULL;     /* The actual string */
     200                 :         pdo_mysql_globals->dbg = NULL;       /* The DBG object*/
     201                 : #endif
     202           17633 : }
     203                 : /* }}} */
     204                 : #endif
     205                 : 
     206                 : 
     207                 : /* {{{ pdo_mysql_functions[] */
     208                 : const zend_function_entry pdo_mysql_functions[] = {
     209                 :         {NULL, NULL, NULL}
     210                 : };
     211                 : /* }}} */
     212                 : 
     213                 : /* {{{ pdo_mysql_deps[] */
     214                 : #if ZEND_MODULE_API_NO >= 20050922
     215                 : static const zend_module_dep pdo_mysql_deps[] = {
     216                 :         ZEND_MOD_REQUIRED("pdo")
     217                 : #ifdef PDO_USE_MYSQLND
     218                 :         ZEND_MOD_REQUIRED("mysqlnd")
     219                 : #endif
     220                 :         {NULL, NULL, NULL}
     221                 : };
     222                 : #endif
     223                 : /* }}} */
     224                 : 
     225                 : /* {{{ pdo_mysql_module_entry */
     226                 : zend_module_entry pdo_mysql_module_entry = {
     227                 :         STANDARD_MODULE_HEADER_EX, NULL,
     228                 :         pdo_mysql_deps,
     229                 :         "pdo_mysql",
     230                 :         pdo_mysql_functions,
     231                 :         PHP_MINIT(pdo_mysql),
     232                 :         PHP_MSHUTDOWN(pdo_mysql),
     233                 : #if PDO_USE_MYSQLND
     234                 :         PHP_RINIT(pdo_mysql),
     235                 :         PHP_RSHUTDOWN(pdo_mysql),
     236                 : #else
     237                 :         NULL,
     238                 :         NULL,
     239                 : #endif
     240                 :         PHP_MINFO(pdo_mysql),
     241                 :         "1.0.2",
     242                 : #if PDO_USE_MYSQLND
     243                 :         PHP_MODULE_GLOBALS(pdo_mysql),
     244                 :         PHP_GINIT(pdo_mysql),
     245                 :         NULL,
     246                 :         NULL,
     247                 :         STANDARD_MODULE_PROPERTIES_EX
     248                 : #else
     249                 :         STANDARD_MODULE_PROPERTIES
     250                 : #endif
     251                 : };
     252                 : /* }}} */
     253                 : 
     254                 : 
     255                 : /*
     256                 :  * Local variables:
     257                 :  * tab-width: 4
     258                 :  * c-basic-offset: 4
     259                 :  * End:
     260                 :  * vim600: noet sw=4 ts=4 fdm=marker
     261                 :  * vim<600: noet sw=4 ts=4
     262                 :  */

Generated by: LTP GCOV extension version 1.5

Generated at Sat, 21 Nov 2009 12:27:05 +0000 (3 days ago)

Copyright © 2005-2009 The PHP Group
All rights reserved.