private function updateRawFacts(array $map)
 {
     foreach ($map as $phid => $facts) {
         assert_instances_of($facts, 'PhabricatorFactRaw');
     }
     $phids = array_keys($map);
     if (!$phids) {
         return;
     }
     $table = new PhabricatorFactRaw();
     $conn = $table->establishConnection('w');
     $table_name = $table->getTableName();
     $sql = array();
     foreach ($map as $phid => $facts) {
         foreach ($facts as $fact) {
             $sql[] = qsprintf($conn, '(%s, %s, %s, %d, %d, %d)', $fact->getFactType(), $fact->getObjectPHID(), $fact->getObjectA(), $fact->getValueX(), $fact->getValueY(), $fact->getEpoch());
         }
     }
     $table->openTransaction();
     queryfx($conn, 'DELETE FROM %T WHERE objectPHID IN (%Ls)', $table_name, $phids);
     if ($sql) {
         foreach (array_chunk($sql, 256) as $chunk) {
             queryfx($conn, 'INSERT INTO %T
           (factType, objectPHID, objectA, valueX, valueY, epoch)
           VALUES %Q', $table_name, implode(', ', $chunk));
         }
     }
     $table->saveTransaction();
 }