diff --git a/resources/sql/autopatches/20220512.file.02.migrate.php b/resources/sql/autopatches/20220512.file.02.migrate.php new file mode 100644 --- /dev/null +++ b/resources/sql/autopatches/20220512.file.02.migrate.php @@ -0,0 +1,52 @@ +establishConnection('w'); + +$src_cursor = ''; +$dst_cursor = ''; + +while (true) { + $rows = queryfx_all( + $attachment_conn, + 'SELECT src, dst, dateCreated FROM %T + WHERE type = 26 AND (src > %s OR (src = %s AND dst > %s)) + ORDER BY src ASC, type ASC, dst ASC LIMIT %d', + 'edge', + $src_cursor, + $src_cursor, + $dst_cursor, + 10000); + + if (!$rows) { + break; + } + + $sql = array(); + foreach ($rows as $row) { + $sql[] = qsprintf( + $attachment_conn, + '(%s, %s, %s, %ns, %d, %d)', + $row['dst'], + $row['src'], + PhabricatorFileAttachment::MODE_ATTACH, + null, + $row['dateCreated'], + $row['dateCreated']); + } + + foreach (PhabricatorLiskDAO::chunkSQL($sql) as $chunk) { + queryfx( + $attachment_conn, + 'INSERT IGNORE INTO %R + (objectPHID, filePHID, attachmentMode, attacherPHID, + dateCreated, dateModified) + VALUES %LQ', + $attachment_table, + $chunk); + } + + $last = last($rows); + $src_cursor = $last['src']; + $dst_cursor = $last['dst']; +}