Maintenance release from an external code review — performance, hardening, and better handling of real-world MySQL dumps. No breaking changes.
Fixed
- Much faster NodeBB post imports. NodeBB orders posts by post id rather than by topic, so a single batch could span dozens of discussions and fire a separate query for each one. Those are now a single grouped lookup per batch.
- Safer XenForo password migration. The stored authentication blob is now decoded without allowing object instantiation, so a malicious source database can't influence the import. A corrupt row is skipped instead of stopping the run.
- Uploads are checked before they hit the disk. Dumps over 500 MB are rejected with a clear message, and the file's leading bytes are inspected so an obviously wrong file (an image, an archive) is refused straight away.
- Better support for modern mysqldump output. Character-set introducers such as
_binary'…'and_utf8mb4'…'are now handled — previously they could cause a table's rows to be skipped. - You'll be told when a dump only partly parsed. If any row batches can't be read, the upload step now warns you instead of quietly importing incomplete content.
- The command line importer can no longer hang forever if a run gets stuck; it stops with an explanatory message.
Under the hood
Dump conversion now runs through Flarum's managed database layer rather than a direct connection, and the parser's known limitations are documented in the source.
Upgrade with composer update ernestdefoe/importer.