Page MenuHomePhabricator

D20853.diff
No OneTemporary

D20853.diff

diff --git a/src/applications/repository/engine/PhabricatorRepositoryRefEngine.php b/src/applications/repository/engine/PhabricatorRepositoryRefEngine.php
--- a/src/applications/repository/engine/PhabricatorRepositoryRefEngine.php
+++ b/src/applications/repository/engine/PhabricatorRepositoryRefEngine.php
@@ -498,7 +498,7 @@
private function setCloseFlagOnCommits(array $identifiers) {
$repository = $this->getRepository();
$commit_table = new PhabricatorRepositoryCommit();
- $conn_w = $commit_table->establishConnection('w');
+ $conn = $commit_table->establishConnection('w');
$vcs = $repository->getVersionControlSystem();
switch ($vcs) {
@@ -515,13 +515,27 @@
throw new Exception(pht("Unknown repository type '%s'!", $vcs));
}
- $all_commits = queryfx_all(
- $conn_w,
- 'SELECT id, phid, commitIdentifier, importStatus FROM %T
- WHERE repositoryID = %d AND commitIdentifier IN (%Ls)',
- $commit_table->getTableName(),
- $repository->getID(),
- $identifiers);
+ $identifier_tokens = array();
+ foreach ($identifiers as $identifier) {
+ $identifier_tokens[] = qsprintf(
+ $conn,
+ '%s',
+ $identifier);
+ }
+
+ $all_commits = array();
+ foreach (PhabricatorLiskDAO::chunkSQL($identifier_tokens) as $chunk) {
+ $rows = queryfx_all(
+ $conn,
+ 'SELECT id, phid, commitIdentifier, importStatus FROM %T
+ WHERE repositoryID = %d AND commitIdentifier IN (%LQ)',
+ $commit_table->getTableName(),
+ $repository->getID(),
+ $chunk);
+ foreach ($rows as $row) {
+ $all_commits[] = $row;
+ }
+ }
$closeable_flag = PhabricatorRepositoryCommit::IMPORTED_CLOSEABLE;
@@ -539,7 +553,7 @@
if (!($row['importStatus'] & $closeable_flag)) {
queryfx(
- $conn_w,
+ $conn,
'UPDATE %T SET importStatus = (importStatus | %d) WHERE id = %d',
$commit_table->getTableName(),
$closeable_flag,

File Metadata

Mime Type
text/plain
Expires
Thu, May 16, 12:41 AM (2 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6290855
Default Alt Text
D20853.diff (1 KB)

Event Timeline