Skip to content

6.3.3

Latest

Choose a tag to compare

@juanmitaboada juanmitaboada released this 20 Oct 05:16
· 4 commits to master since this release
v6.3.3
e8bbaf9
  • manage.py migrate_uuids --execute stopped with Ctrl-C now reports like a failed run and exits with status 1: the statement it was running (which the server finishes anyway, since Ctrl-C reaches Python only when the statement returns, so it may have completed) and the state of every UUID column, instead of a traceback. The session is restored and the connection closed; innodb_alter_copy_bulk is restored as before. A second Ctrl-C while the report is printed still ends with a traceback. - manage.py migrate_uuids --execute refuses to start when the statistics of a table whose size counts for the disk check (a table it rebuilds, or updates with a binary log in ROW format) are stale (information_schema.TABLES reports fewer than half the rows the value scan just counted, or less than 32 bytes, the narrowest UUID, per counted row: MariaDB keeps the row count current while the size waits for ANALYZE TABLE) and its tablespace file size cannot be read: the size check would rest on figures far too low, as right after an import. Run ANALYZE TABLE on it, or give --skip-space-check. Dry runs warn. A cut run leaves statistics behind too, so the failure report names ANALYZE TABLE for the next run. On a server on another host this refusal comes before the one for space that cannot be measured. - manage.py migrate_uuids --execute asks for more temporary and binary log space for ROW_FORMAT=COMPRESSED tables (see Fixed), so it can refuse runs on them that 6.3.2 started, and that then could fail mid-way; --skip-space-check still overrides.

  • manage.py migrate_uuids sizes each table by its tablespace file (FILE_SIZE of information_schema.INNODB_SYS_TABLESPACES on MariaDB, INNODB_TABLESPACES on MySQL) when it is larger than the information_schema.TABLES estimate: the file is current even right after an import. The views need the PROCESS privilege; without it the estimate is used as before, with the advice to run ANALYZE TABLE.

  • manage.py migrate_uuids counts ROW_FORMAT=COMPRESSED tables uncompressed for the merge files and the binary log: their size on disk times the page size divided by KEY_BLOCK_SIZE (2 times with the default, half a page). Merge files and binary log hold the rows uncompressed: with a highly compressible 200-character text per row they were measured at up to 4.2 times the size on disk with the default KEY_BLOCK_SIZE, 8.4 times with 4K and 18.4 times with 1K (MariaDB 10.11.14 and 11.8.6), beyond the 2.5 times estimated; less compressible rows stay lower. Scaled, they stay at 1.1 to 2.1 times. The data directory copy stays compressed and keeps its estimate.

  • manage.py migrate_uuids --execute restores FOREIGN_KEY_CHECKS and the session sql_mode independently, so one failing does not skip the other, and reports a restore that fails (exit status 1, connection closed) instead of hiding the error of the statement that failed. A failure report whose column scan fails too (a lost connection) still prints the failed statement.