[MDEV-11202] InnoDB 10.1 -> 10.2 migration does not work Created: 2016-11-01 Updated: 2017-01-19 Resolved: 2017-01-19 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB |
| Affects Version/s: | 10.2.2 |
| Fix Version/s: | 10.2.4 |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Jan Lindström (Inactive) | Assignee: | Marko Mäkelä |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||||||||||||||||||||||
| Sprint: | 10.2.4-4, 10.2.4-1, 10.2.4-5, 10.1.21 | ||||||||||||||||||||||||||||
| Description |
|
See dictionary and tablespace flags from source code. |
| Comments |
| Comment by Jan Lindström (Inactive) [ 2016-11-09 ] | |
|
Problematic dictionary/tablespace options:
| |
| Comment by Jan Lindström (Inactive) [ 2016-11-22 ] | |
|
Remaining test failure after SYS_TABLE_OPTIONS system table change: innodb.innodb_bug12400341 not yet sure how to fix that. | |
| Comment by Jan Lindström (Inactive) [ 2016-11-23 ] | |
| |
| Comment by Jan Lindström (Inactive) [ 2016-11-28 ] | |
|
http://lists.askmonty.org/pipermail/commits/2016-November/010124.html I can explain more why this is needed if you want. | |
| Comment by Marko Mäkelä [ 2016-11-29 ] | |
|
An idea for ensuring future-proofness:
I hope this position is unused in MariaDB. In MySQL it is, up to and including 8.0. | |
| Comment by Jan Lindström (Inactive) [ 2016-11-30 ] | |
|
branch bb-10.2-jan commit 5dcfee7c0c40a8c0ac07b909649e58f5e667ce39 Remove MariaDB extended tablespace and dictionary flags | |
| Comment by Jan Lindström (Inactive) [ 2016-11-30 ] | |
|
branch bb-10.2-jan commit 5dcfee7c0c40a8c0ac07b909649e58f5e667ce39 Remove MariaDB extended tablespace and dictionary flags | |
| Comment by Jan Lindström (Inactive) [ 2016-11-30 ] | |
|
http://lists.askmonty.org/pipermail/commits/2016-November/010140.html | |
| Comment by Marko Mäkelä [ 2016-12-01 ] | |
|
Instead of adding a new table SYS_TABLEOPTIONS, could we try to keep the InnoDB data files self-contained? This would simplify upgrade, partial backup, and export/import. My suggestion is as follows:
Also, show some test results what happens when 10.2 startup is attempted after MariaDB 10.1 or MySQL 5.6 or MySQL 5.7 is killed. (That should be refused.) Show that startup works after a clean shutdown of MariaDB 10.1 or MySQL 5.7, but is refused on a data set that was created with MySQL 8.0. | |
| Comment by Marko Mäkelä [ 2016-12-01 ] | |
|
Side note: If we absolutely must add some table-level attributes to the transactional InnoDB dictionary tables, we could follow the example of MySQL 5.7 and append a column to the hard-coded table SYS_TABLES. MySQL 5.7 appended the MERGE_THRESHOLD column to SYS_INDEXES. Existing records are not updated on upgrade, but instead a default value is being used when a record contains a smaller number of columns. (ROW_FORMAT=REDUNDANT allows this.) | |
| Comment by Marko Mäkelä [ 2016-12-07 ] | |
|
Please try to see if we can avoid adding an InnoDB system table. | |
| Comment by Jan Lindström (Inactive) [ 2016-12-16 ] | |
|
http://lists.askmonty.org/pipermail/commits/2016-December/010292.html | |
| Comment by Marko Mäkelä [ 2016-12-16 ] | |
|
The revised patch looks much simpler. I think that the patch could be simplified a little further. | |
| Comment by Jan Lindström (Inactive) [ 2016-12-19 ] | |
|
http://lists.askmonty.org/pipermail/commits/2016-December/010299.html | |
| Comment by Marko Mäkelä [ 2016-12-20 ] | |
|
The commit seems to include some changes for I think that we need some more code removal and also more testing. I got the impression that already the upgrade from MariaDB 10.0 to MariaDB 10.1 might not work when a non-default innodb_page_size is being used. | |
| Comment by Marko Mäkelä [ 2017-01-18 ] | |
|
I believe that this issue will be fixed when I merge | |
| Comment by Jan Lindström (Inactive) [ 2017-01-18 ] | |
|
There is unrelated changes (space_id -> fil_space_t*) but in my opinion they are good. Ok to push. | |
| Comment by Marko Mäkelä [ 2017-01-18 ] | |
|
Thank you. Replacing space_id with fil_space_t* is not an unrelated change. It is necessary in order to avoid performing more tablespace ID lookups, worsening the contention on fil_system->mutex. Because we cannot trust the FSP_SPACE_FLAGS from page 0, we must access fil_space_t::flags. |