From 2e9b7bc10961ab43845b923c1bc362a2a163f574 Mon Sep 17 00:00:00 2001 From: Marco Villegas Date: Tue, 1 Apr 2014 16:26:27 -0500 Subject: [PATCH] Insert values in chunks instead of in one block. --- .../versioncontrol_project_issue_git.drush.inc | 26 +++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/versioncontrol_project_issue/versioncontrol_project_issue_git/versioncontrol_project_issue_git.drush.inc b/versioncontrol_project_issue/versioncontrol_project_issue_git/versioncontrol_project_issue_git.drush.inc index ac229d0..e7e62b5 100644 --- a/versioncontrol_project_issue/versioncontrol_project_issue_git/versioncontrol_project_issue_git.drush.inc +++ b/versioncontrol_project_issue/versioncontrol_project_issue_git/versioncontrol_project_issue_git.drush.inc @@ -88,7 +88,8 @@ function drush_versioncontrol_project_issue_git_vc_project_issue_git_resync_maps // Set up the plugin. $git_issue_mapper_instace->setRepository($repository); $git_issue_mapper_instace->setConfiguration($default_event_processor_data['git_issue_mapper']); - $operation_nid_maps = array(); + $operation_nid_maps_counter = 0; + $insert_query = db_insert('versioncontrol_project_issue_operations')->fields(array('nid', 'vc_op_id')); // Do a manual query for performance reasons. $result = db_query('SELECT vc_op_id, message FROM versioncontrol_operations WHERE repo_id = :repo_id', array(':repo_id' => $repository->repo_id)); while ($row = $result->fetchAssoc()) { @@ -99,22 +100,23 @@ function drush_versioncontrol_project_issue_git_vc_project_issue_git_resync_maps } $valid_issue_nids = $git_issue_mapper_instace->checkValidIssues($nids_on_message, TRUE); foreach ($valid_issue_nids as $valid_issue_nid) { - $operation_nid_maps[] = array( + $insert_query->values(array( 'nid' => $valid_issue_nid, 'vc_op_id' => $row['vc_op_id'], - ); + )); + ++$operation_nid_maps_counter; + } + if ($operation_nid_maps_counter % 100) { + // Insert when we reach the limit. + $insert_query->execute(); + $operation_nid_maps_counter = 0; + $insert_query = db_insert('versioncontrol_project_issue_operations')->fields(array('nid', 'vc_op_id')); } } - if (empty($operation_nid_maps)) { - // Nothing to do. - return; - } - // Insert mappings. - $insert_query = db_insert('versioncontrol_project_issue_operations')->fields(array('nid', 'vc_op_id')); - foreach ($operation_nid_maps as $operation_nid_map) { - $insert_query->values($operation_nid_map); + if ($operation_nid_maps_counter > 0) { + // Insert pending mappings. + $insert_query->execute(); } - $insert_query->execute(); } break; case 'operations': -- 1.7.10.4