WordPress.org

Make WordPress Core

Ticket #20838: lazy-col-info.diff

File lazy-col-info.diff, 2.1 KB (added by pento, 21 months ago)
  • wp-includes/wp-db.php

     
    137137         * @access private 
    138138         * @var array 
    139139         */ 
    140         var $col_info; 
     140        private $col_info; 
    141141 
    142142        /** 
    143143         * Saved queries that were executed 
     
    514514        function __destruct() { 
    515515                return true; 
    516516        } 
     517         
     518        /** 
     519         * PHP5 style magic getter, used to lazy-load expensive data. 
     520         * 
     521         * @since 3.5.0 
     522         * @param string $var The private member to get, and optionally process 
     523         * @return mixed The private member 
     524         */ 
     525        function __get( $var ) { 
     526                if ( 'col_info' == $var ) 
     527                        $this->load_col_info(); 
     528                 
     529                return $this->$var; 
     530        } 
    517531 
    518532        /** 
    519533         * Set $this->charset and $this->collate 
     
    10251039                $this->last_result = array(); 
    10261040                $this->col_info    = null; 
    10271041                $this->last_query  = null; 
     1042                @mysql_free_result( $this->result ); 
    10281043        } 
    10291044 
    10301045        /** 
     
    11171132                        // Return number of rows affected 
    11181133                        $return_val = $this->rows_affected; 
    11191134                } else { 
    1120                         $i = 0; 
    1121                         while ( $i < @mysql_num_fields( $this->result ) ) { 
    1122                                 $this->col_info[$i] = @mysql_fetch_field( $this->result ); 
    1123                                 $i++; 
    1124                         } 
    11251135                        $num_rows = 0; 
    11261136                        while ( $row = @mysql_fetch_object( $this->result ) ) { 
    11271137                                $this->last_result[$num_rows] = $row; 
    11281138                                $num_rows++; 
    11291139                        } 
    11301140 
    1131                         @mysql_free_result( $this->result ); 
    1132  
    11331141                        // Log number of rows the query returned 
    11341142                        // and return number of rows selected 
    11351143                        $this->num_rows = $num_rows; 
     
    14561464                } 
    14571465                return null; 
    14581466        } 
     1467         
     1468        /** 
     1469         * Load the column metadata from the last query. 
     1470         * 
     1471         * @since 3.5.0 
     1472         */ 
     1473        function load_col_info() { 
     1474                if( empty( $this->col_info ) ) { 
     1475                        for ( $i = 0; $i < @mysql_num_fields( $this->result ); $i++ ) 
     1476                                $this->col_info[$i] = @mysql_fetch_field( $this->result, $i ); 
     1477                } 
     1478        } 
    14591479 
    14601480        /** 
    14611481         * Retrieve column metadata from the last query. 
     
    14671487         * @return mixed Column Results 
    14681488         */ 
    14691489        function get_col_info( $info_type = 'name', $col_offset = -1 ) { 
     1490                $this->load_col_info(); 
     1491                 
    14701492                if ( $this->col_info ) { 
    14711493                        if ( $col_offset == -1 ) { 
    14721494                                $i = 0;