[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/resources/sql/patches/ -> 20131106.diffphid.2.mig.php (source)

   1  <?php
   2  
   3  $diff_table = new DifferentialDiff();
   4  $conn_w = $diff_table->establishConnection('w');
   5  
   6  $size = 1000;
   7  
   8  $row_iter = id(new LiskMigrationIterator($diff_table))->setPageSize($size);
   9  $chunk_iter = new PhutilChunkedIterator($row_iter, $size);
  10  
  11  foreach ($chunk_iter as $chunk) {
  12    $sql = array();
  13  
  14    foreach ($chunk as $diff) {
  15      $id = $diff->getID();
  16      echo "Migrating diff ID {$id}...\n";
  17  
  18      $phid = $diff->getPHID();
  19      if (strlen($phid)) {
  20        continue;
  21      }
  22  
  23      $type_diff = DifferentialDiffPHIDType::TYPECONST;
  24      $new_phid = PhabricatorPHID::generateNewPHID($type_diff);
  25  
  26      $sql[] = qsprintf(
  27        $conn_w,
  28        '(%d, %s)',
  29        $id,
  30        $new_phid);
  31    }
  32  
  33    if (!$sql) {
  34      continue;
  35    }
  36  
  37    foreach (PhabricatorLiskDAO::chunkSQL($sql, ', ') as $sql_chunk) {
  38      queryfx(
  39        $conn_w,
  40        'INSERT IGNORE INTO %T (id, phid) VALUES %Q
  41          ON DUPLICATE KEY UPDATE phid = VALUES(phid)',
  42        $diff_table->getTableName(),
  43        $sql_chunk);
  44    }
  45  }
  46  
  47  echo "Done.\n";


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1