Details
- 
    Type:Bug 
- 
    Status: Done/Fixed
- 
    Priority:Major 
- 
    Resolution: Fixed/Completed
- 
    Affects Version/s: 4.2.4
- 
    Fix Version/s: 4.3.0
- 
    Component/s: Core CiviCRM
- 
    Labels:None
Description
Contact Change log tab shows as blank if for all contacts EXCEPT for the first 50 to be changed after turning on Change logging.
e.g.
http://sandbox.drupal.civicrm.org/civicrm/contact/view?reset=1&cid=106
To reproduce - 
1) turn on logging
2) update > 50 contacts via batch profile (contact fields only)
3) update a contact not already updated (contact fields only) - the change will not show on their log
The contact log is left joined agains the first 50 non-initialization entries in each table so if you change tables other than contact you will need to create a load more data to do this test.
Code is coming from
CRM_Logging_ReportSummary::postProcess
    foreach ( $this->_logTables as $entity => $detail ) {
      $tableName = CRM_Utils_Array::value('table_name', $detail, $entity);
      $clause = CRM_Utils_Array::value('entity_table', $detail);
      $clause = $clause ? "entity_table = 'civicrm_contact' AND" : null;
      $sql    = "
 INSERT IGNORE INTO civicrm_temp_civireport_logsummary ( contact_id )
 SELECT DISTINCT {$detail['fk']} FROM `{$this->loggingDB}`.{$tableName}
 WHERE {$clause} log_action != 'Initialization' {$logDateClause} LIMIT {$rowCount}";
      CRM_Core_DAO::executeQuery($sql);
    }
This table then becomes the 'subject' of an INNER JOIN
"SELECT SQL_CALC_FOUND_ROWS entity_log_civireport.id AS log_civicrm_entity_id, entity_log_civireport.log_action AS log_civicrm_entity_log_action, entity_log_civireport.log_type AS log_civicrm_entity_log_type, entity_log_civireport.log_user_id AS log_civicrm_entity_log_user_id, entity_log_civireport.log_date AS log_civicrm_entity_log_date, modified_contact_civireport.display_name AS log_civicrm_entity_altered_contact, modified_contact_civireport.id AS log_civicrm_entity_altered_contact_id, entity_log_civireport.log_conn_id AS log_civicrm_entity_log_conn_id, modified_contact_civireport.is_deleted AS log_civicrm_entity_is_deleted, altered_by_contact_civireport.display_name AS altered_by_contact_display_name
FROM `wct`.log_civicrm_entity_tag entity_log_civireport
INNER JOIN civicrm_temp_civireport_logsummary temp ON (entity_log_civireport.entity_id = temp.contact_id) ......."
