Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-14958

Merge new release of InnoDB MySQL 5.7.21 to 10.2

    Details

    • Sprint:
      10.1.31, 10.2.13

      Description

      The following changes between MySQL 5.7.20 and MySQL 5.7.21 touch InnoDB files.

      Raise version number after cloning 5.7.20
      This one we should apply; MariaDB 10.2 will report an InnoDB version number.

      Backport some additional GenError dependencies
      The MariaDB cmake files do use GenError outside InnoDB, so we could consider porting this.

      Bug #25729649 LOCK0LOCK.CC:NNN:ADD_POSITION != __NULL
      This appears to fix a bug in high-priority replication slave transactions that affects SPATIAL INDEX. The high-priority transactions (including TRX_STATE_FORCED_ROLLBACK must be dead code in MariaDB, because there is no tx_priority at the SQL layer, but we can apply the fix nevertheless. Only the test cannot be ported.

      Bug#26825211 BACKPORT FIX FOR #25643811 TO 5.7
      These are compilation fixes for GCC 7, in InnoDB mostly fixing -Wimplicit-fallthrough. We can skip this, because MariaDB already got similar fixes.

      Bug #25076416 VIRTUAL COLUMN IS NOT CONSIDERED WHILE FETCHING THE AUTOINC COLUMN
      There is no test case, and the code patch does not directly apply. MariaDB 10.2 thanks to MDEV-6204 already simplified this code, invoking row_search_autoinc_read_column() on the first field of the index, without bothering about columns or column names at all.

      Revert "Bug #25076416 VIRTUAL COLUMN IS NOT CONSIDERED WHILE"
      This appears to revert the above change.

      BUG#21625016: INNODB FULL TEXT CASE SENSITIVE NOT WORKING.
      This one we will get via the merge of MySQL 5.6.39 to MariaDB 10.0.
      The merge from 5.6.39 to 5.7.21 contains some conflict resolution due to different code formatting between 5.6 and 5.7, but apparently no functional change.

      Bug#26918439 ROW0SEL.CC:5178:32 ERROR: ISO C++ FORBIDS COMPARISON BETWEEN POINTER AND INTEGE
      This is one more follow-up to fix the numerous problems introduced by
      Bug #23481444 OPTIMISER CALL ROW_SEARCH_MVCC() AND READ THE INDEX APPLIED BY UNCOMMITTED ROWS in MySQL 5.7.18. As noted in MDEV-11751, MariaDB did not include this change due to the perceived high risk and the questionable benefit.

      two trivial zero-initializations, to avoid "may be used unitialized" warnings
      The InnoDB change applies to the above-mentioned code that we chose to skip in MDEV-11751. The change to Gis_multi_polygon::get_mbr() does not apply, because MariaDB is using more straightforward code (initializing the variable from a function return value, not by an output parameter).

      WL#10473: InnoDB: Deprecate innodb_undo_tablespaces in 5.7
      MariaDB will skip this. We will likely deprecate and remove parameters related to rollback segments and undo tablespaces in the course of MDEV-11657.

      Bug #26390658 RENAMING A PARTITIONED TABLE DOES NOT UPDATE MYSQL.INNODB_TABLE_STATS
      The test case passes in MariaDB. The code changes only seem necessary due to the InnoDB native partitioning (ha_innopart) that was not merged to MariaDB.

      Backport patch for Bug#16877045 5.6-CLUSTER-7.3 WIN32 SQL_YACC.CC BUILD PROBLEM
      This is a 5.6.39 patch that includes the above ‘two trivial zero-initializations’ patch from 5.7. If we need the cmake changes, we would get those via the merge from 5.6.39 to MariaDB 10.0.

      Bug #26191879 FOREIGN KEY CASCADES USE EXCESSIVE MEMORY
      The explicit recursion stack was replaced with procedural recursion, apparently to plug a memory leak. This fix will increase the stack memory usage of InnoDB, and to work around that, it will reduce the maximum depth of FOREIGN KEY cascade operations to 15 from the 255.
      I think that MariaDB should try to fix the actual problem in MDEV-14222 instead of applying this patch.

      Bug#26152751: INNODB LEAKS MEMORY, PERFORMANCE_SCHEMA FILE_INSTANCES #SQL-IB3129987-252773.IBD
      This patch introduces PSI_FILE_CALL(end_file_rename_wait) in order to plug some kind of a race condition that can lead to a memory leak. The changes are mostly outside InnoDB. A test case is included. I filed MDEV-15179 to address this.

      BUG#26734457 BACKPORT BUG#22305994 TO 5.6 AND 5.7
      This 5.6.39 patch is replacing GetSystemTimeAsFileTime() with GetSystemTimePreciseAsFileTime() when it is available. The call is used in ut_gettimeofday(), which in turn is used by ut_usectime(), ut_time_us(), ut_time_ms(). The ut_usectime() in turn is used by lock_wait_suspend_thread() and os_event::wait_time_low(). The other calls are used in various other places, affecting both logic and diagnostics.
      According to Vladislav Vaintroub, we do not need this.

      Merge branch 'mysql-5.6' into mysql-5.7
      The merge of the above, with a few conflict resolutions

      Bug #22486025 INNODB: FAILING ASSERTION: KEY_LEN != 0 || FIND_FLAG != HA_READ_KEY_EXACT
      This bug only affects the MySQL 5.7 feature of using InnoDB for the temporary tables that are internally created during SQL execution. The code was never active in MariaDB, and it was removed in MDEV-11487.

      Bug #26256456 INNODB CRASHED WHEN MASTER THREAD EVICT DICT_TABLE_T OBJECT
      This is the 5.6.39 version of a patch that seems to be a bug in the eviction of table definitions from the InnoDB dictionary cache, a feature that was introduced in MySQL 5.6. MDEV-13051 already fixed this in MariaDB.

      Bug #26492721 MYSQL/INNODB CRASHES DURING ALTER TABLE
      This MySQL 5.6.39 change fixes a bug in the dict_sys->size bookkeeping when renaming columns. The whole field is somewhat questionable, because some memory allocations related to the InnoDB data dictionary cache are bypassing this bookkeeping altogether. MDEV-13325 removed dict_sys->size.

      Bug #24296076 INNODB REPORTS WARNING WHILE INNODB_UNDO_LOG_TRUNCATE IS ENABLED
      This is disabling a warning in non-debug builds. Apparently Oracle came to the same conclusion as we in MDEV-14916, because they reworded the message. MariaDB removed the message altogether.

      Bug #23590280 NO WARNING WHEN REDUCING INNODB_BUFFER_POOL_SIZE INSIZE THE FIRST CHUNK
      This introduces a warning message when the MySQL 5.7 buffer pool resizing cannot be done. MariaDB should introduce a similar warning, but with clearer wording.

      Bug #23590280 NO WARNING WHEN REDUCING INNODB_BUFFER_POOL_SIZE INSIZE THE FIRST CHUNK
      A follow-up fix to the above.

      Bug #27212129 INNODB: A RECORD LOCK WAIT HAPPENS IN A DICTIONARY OPERATION
      This fix, without a test case, fixes an InnoDB hang when the persistent statistics of partitioned tables are updated. It looks like the function row_rename_partitions_for_mysql() is only needed because of native partitioning, and should be removed from MariaDB 10.2.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                marko Marko Mäkelä
                Reporter:
                marko Marko Mäkelä
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: