Skip to content

Change History

Davi Arnaut edited this page Jan 4, 2013 · 52 revisions

Changes in Twitter MySQL 5.5.28.t9 (5.5.28.t9)

Bugs Fixed

  • Bug#67718: InnoDB drastically under-fills pages in certain conditions

    InnoDB's B+ tree page split algorithm that attempts to optimize for sequential inserts might end up causing poor space utilization depending on the distribution pattern of index key values throughout the index.

    For example, if an insert that causes a page to be split is inserting a key value that is an immediate successor or predecessor to the last inserted key value in the same page, the insertion point is used as the split point irrespective of the actual distribution of values in the page.

    The solution is to use the standard B+ tree split algorithm while still preserving some form of optimization for sequential inserts. When a page needs to be split, the median key value in a page is used as the split point so that the data is distributed in a symmetric fashion.

    A new variable named innodb_index_page_split_mode is introduced to provide a way to control the page split behavior. The variable accepts a set of permitted values: symmetric, lower and upper. Using symmetric alone, pages are always split roughly in the middle. When symmetric,lower or symmetric,upper are set, sequential inserts into the left-most or right-most page in the tree will cause the insertion point to be used as a reference for the split point.

  • Bug#67963: InnoDB wastes 62 out of every 16384 pages

    The problem is that once the segments of a tablespace are bigger than 32 pages, fragment pages are no longer allocated for use, yet they are still reserved whenever a new fragment extent is allocated. This is a direct consequence of mainly two facts: whenever a new descriptor page is needed (every 16384 pages), the extent that contains the descriptor page cannot be assigned to a segment and is instead used as a fragment extent; and a segment can only allocate up to 32 fragment pages since the array used to track fragment pages belonging to a segment is limited to 32 entries per segment.

    The solution is to allow for fragment extents to be leased to segments whenever there are free fragment extents available. A fragment extent is considered available if the only used pages in the extent are the extent descriptor and ibuf bitmap pages. A new extent state is used to tag leased extents and to ensure that they are returned to the space free fragment list once no longer being used by a segment.

  • Bug#68023: InnoDB reserves an excessive amount of disk space for write operations

    When performing operations that are expected to expand a table (for example, allocate new pages due to a page split), InnoDB currently preallocates and reserves up to 1% of the total size of the tablespace as a measure to ensure that enough free extents (that is, disk space) are available for the operation and to ensure that if running out of disk space, these operations are preemptively failed as to reserve any remaining free space to operations that end up freeing space (that is, delete data).

    The percentage is reasonable for tables smaller than a few gigabytes, but not for tables sized at tens of gigabytes or more, at which point the percentage won't correctly estimate the free space needed to perform operations and may cause an excessive amount of free extents to be preallocated.

    This change introduces two new system variables to enable/disable free extents reservation and to control the amount of free extents that are reserved for such operations. The variable innodb_reserve_free_extents can be used to enable or disable free extents reservation and innodb_free_extents_reservation_factor can be used to control what percentage of a space size is reserved for operations that may cause more space to be used.

Functionality Added or Changed

  • Log checkpoint triggered flushes might be synchronous and asynchronous.

    To better reflect the synchronization status of such flushes, this change add a new status variable named innodb_buffer_pool_flush_async_page as a separate counter for asynchronous flushes.

  • Exported insert buffer statistics

    This change introduces a set of new status variables for insert buffering operations. See Status Variables for details.

  • Expose purge age information

    This introduces new status variables that expose the purge age in transactions and undo log: Innodb_purge_trx_no, Innodb_purge_undo_no and Innodb_trx_max_id.

  • Add counters for successful page merges and page discards

    Currently Innodb_page_merges counts only merge attempts but there is no metric for successful merges. This change introduces a new status variable named Innodb_page_merges_succeeded which indicates the number of successful page merge operations (that is, the number of pages successfully merged into another page).

    Additionally, this change also introduces a new status variable named Innodb_page_discards which represents the number of pages that have become empty and were thus discarded.

  • Support for floating-point system variables using the plugin interface.

    Augment the server plugin interface to allow plugins to define and expose floating-point system variables of type double. The convenience macros MYSQL_SYSVAR_DOUBLE and MYSQL_THDVAR_DOUBLE are introduced and can be used by plugins to declare system variables of type double.

  • The fractional part of the def, min and max values of system variables is ignored.

    Since the command-line option parsing interface (my_getopt) uses fields of type unsigned long long (ull) to store these values, the double values were being stored in a lossy way that discards the fractional part.

    This change allows the default, minimum and maximum values of system variables of type double to have a meaningful fractional part by to storing the raw representation of a double value in the raw bits of an unsigned long long field in a way that the binary representation remains the same. Hence, the actual value can be passed back and forth between the types.

  • Change the type of the system variables innodb_segment_fill_factor and innodb_index_fill_factor to double.

    These variables are used to represent percentages but could not be set to percentages with fractional parts. Furthermore, their initial default values were fractional percentages, but had to be changed because the interface did not support them. Now these system variables are made of type double and their default values are restored to their original form.

  • Fixed some some test failures.

    Suppressed unsafe statement warnings generated by the rpl_filter_tables_not_exist test case. Increased timeout of the innodb_mysql test case. Fixed spurious failures of the rpl_start_stop_slave test case.

Changes in Twitter MySQL 5.5.28.t8 (13 November 2012)

See also Changes in MySQL 5.5.28 for changes in the upstream release.

Bugs Fixed

  • Bug#67156: Sporadic query cache related crash in pthread_rwlock_init()

    Reinitializing the query cache could lead to a crash inside pthread_rwlock_init() on Mac OS X.

  • Bug#67433: Using SET GLOBAL SQL_LOG_BIN should not be allowed

    Earlier in MySQL 5.5 development cycle, the SQL_LOG_BIN variable was made to be both global and session-scoped, instead of only session as it was in previous releases. The problem is that usage of SQL_LOG_BIN at the global scope can be quite dangerous, potentially leading to data loss with binary logging being disabled for new (and unrelated) sessions.

    This changes makes SQL_LOG_BIN once again a session-only variable, generating an error if it is used with SET GLOBAL.

  • Bug#67476: Innodb_buffer_pool_read_ahead_evicted is inaccurate

    If a page being read into the buffer pool is made "young" (moved to the head of the LRU), its time of first access was not being properly set. When the page eventually gets evicted, it would be counted as a read-ahead page that was evicted without having been accessed by queries. This lack of access time could also affect linear read-ahead, potentially causing InnoDB to calculate multiple times whether to trigger read-ahead whenever the page was accessed.

  • Gracefully handle errors when disarming a statement timer.

    If the timer for a statement timeout cannot be properly disarmed, assume that the timer might be pending.

Functionality Added or Changed

  • Lightweight I_S table to hold basic information about each page in the InnoDB buffer pool

    Retrieving page information from the information_schema table INNODB_BUFFER_PAGE can become computationally expensive in terms of time and and disk storage since the temporary table that is created to materialize the table is populated with all fields, some of which are very large (table name, column, etc.).

    Since, currently, the main use case of the table is to export a list of space and page numbers from the buffer pool, this change introduces a new information_schema table, named INNODB_BUFFER_PAGE_BASIC, that only holds these particular fields for each index page in the buffer pool.

  • Increase time resolution of expire_logs_days

    In some scenarios, it is necessary to purge the binary logs more frequently than once a day. In these cases, expire_logs_days cannot be used for automatic binary log file removal because of its whole-day resolution.

    In order to allow for more fine-grained control over the automatic removal period, the type of the expire_logs_days variable is changed to decimal where the fractional part represents the fraction of one day. For example, 12 hours can be expressed as 0.5 day.

  • Thread state is "query end" while blocked writing to binary log

    When binary logging is enable, the thread state is set to "query end" most recently before writing to the binary log, so any time taken in that (due to contention or I/O) shows up as "query end" which makes it difficult to determine what is the current state of the thread.

    This change introduces new and more appropriate thread states that are set in any binary log related activities that may take time. For example, now whenever an event is being writing to the binary log, the thread state is set to "Writing an event to the binary log".

  • Add new InnoDB status variables for InnoDB B-tree node operations

    Introduced new counters for InnoDB b-tree page operations such as page split, merge and reorganization.

  • A non-blocking mode for ALTER TABLE

    While an ALTER TABLE is executing, writes to the table whose definition is being changed are blocked until the operation completes or a lock wait timeout occurs.

    In a sharded system, it would be better if conflicting operations were aborted rather than blocked, thereby eliminating delays due to lock waits and allowing them to be redirect to another shard.

    In order to allow for this behavior, this change introduces a new ALTER TABLE option named NO_WAIT. When NO_WAIT is set, conflicting locks requests that would normally block are aborted instead.

  • ALTER TABLE in exclusive mode

    In certain cases, it is desirable to control the lock mode to be used for an ALTER TABLE operation, especially in a scenario where it is appropriate to restrict access to the table while the operation is in progress.

    This change adds a LOCK clause to ALTER TABLE, that can be used to enforce a specific lock mode for an alter table operation. The only supported lock mode parameter is EXCLUSIVE and is meant to be used in conjunction with NO_WAIT to abort any attempts to use a table while its structure is being changed.

  • Expose the level of each B-tree page in the buffer pool

    Although the INNODB_BUFFER_PAGE table shows the number of records within a page, it is not clear whether these records are row data or internal B-tree pointers. For this reason, a new LEVEL column is introduced which shows the level of a page in the B-tree.

    Additionally, the direction of insertion encoded in InnoDB data pages is now available in the DIRECTION column, and the number of consecutive inserts in that direction is available in the N_DIRECTION column. These columns are useful to determine whether records are being inserted in an ascending or descending sequence.

  • Expose the segment fill factor as a configurable setting

    When allocating a page from a segment, InnoDB has an internal fill factor setting that is used to decide whether to allocate a new extent or to use an unused page. In short, the segment fill factor is used to determine how full to make the segment before extending it.

    This change introduces a new variable named innodb_segment_fill_factor that can be used to control the fill factor. Its value specifies the percentage of space on a segment to be used, reserving the remainder as free space for future growth.

  • Expose the index fill factor as a configurable setting

    When extending a clustered index to the left or right, InnoDB attempts to fill leaf pages only up to a certain percentage (known as the fill factor), at which point the page is split. The remaining space is reserved for updating rows belonging to the page, attempting to make it likely that an updated row will be stored on the same page.

    This change introduces a new variable name innodb_index_fill_factor that can be used to control the fill factor for clustered indexes. Its value specifies the percentage of space on a leaf page to be used, reserving the remainder as free space.

Changes in Twitter MySQL 5.5.24.t7 (25 July 2012)

See also Changes in MySQL 5.5.24 for changes in the upstream release.

Bugs Fixed

  • Bug#65715: Wrong connection ID (thread ID) in the general and slow query logs

    Connection IDs (thread IDs) above 2^32 were not being properly written to the general query log. The method used to write commands to the log (e.g. MYSQL_QUERY_LOG::write) uses a 32-bits wide integer to store the connection ID value, which is actually a 64-bits wide integer value, thus causing the higher bits of the value to be discarded.

  • Bug#65830: utf8_general_cs is not available

    The problem is that although the utf8_general_cs collation is enabled in CMake, the config option (HAVE_UTF8_GENERAL_CS) is not being copied over to the configuration header (e.g. config.h) because it lacks a stub in config.h.cmake for CMake to replace with the actual value of the variable.

Functionality Added or Changed

  • Expose current row-based replication (RBR) execution state in the SQL Thread state

    The execution of row-based events in a replication slave is not reflected in the SQL Thread state, making it rather difficult to identify long-running events. For example, the execution of a large row-by-row delete event is not immediately identifiable as the replication SQL thread state for most of its duration stays as "Reading event from the relay log".

    This change adds two new states to the replication slave SQL thread that are used to highlight the event that the SQL thread is executing and, for row-based events, to indicate how many rows have been applied. These will generally look like:

      Executing Delete_rows event at position 100
      Handling record 50 of 100 for a Delete_rows event
    

    Additionally, the outermost state of a thread state is now saved and restored when inner states are set, so that the overall information of what the thread is doing is not lost.

  • Add an event to send column information in RBR

    Although Table_map events include some column metadata information, such as type and length, they lack the necessary information to fully deduce a column's definition and to interpret its values. For example, information such as the column name, whether an integer type is signed or unsigned, or the character set of string types, is missing. This makes it difficult for external programs to extract meaningful row data from row-based events.

    In order to enable external programs to fully deduce the table/column definitions, a new Table_metadata event is added. The purpose of this event is to describe the structure and other properties of the table and its columns, such as name, SQL type name, character set, etc. Each Table_metadata event follows a Table_map. Whether Table_metadata events are written to the binary log can be controlled using the system variable binlog_rows_table_metadata_events.

  • Print ISO date and PID with all error log messages.

    The currently available fields that compromise the header of error log messages, which are the date and time, plus the severity of the message, do not provide the enough information to identify discontinuity in reporting or which process generated a message.

    To make such identification possible, this change includes the process ID in the header so that any changes in its value will identify the source (process) of the message and also indicate any discontinuity in reporting.

    Additionally, the format of the date and time is changed to the ISO format (YYYY-MM-DD hh:mm:ss). The previous format was non-standard and difficult to read.

  • Provide the resulting error code for queries printed to the slow log

    The slow query log did not provide enough information to determine if logged SQL statements completed successfully or whether they failed for some reason (e.g. they were killed). To make this easier, the resulting error number of a slow SQL statement is now printed to the slow query log in the Error_code field.

  • Error when creating RBR-safe non-deterministic stored function due when binary logging is enabled

    Even though the creation of non-deterministic functions can be allowed by enabling log_bin_trust_function_creators, enabling the option also implies that executing such functions is allowed even if the binary log format is set to statement. If the binary log format is set to row-based, creating and executing non-deterministic functions shouldn't pose any problems. Hence, this change allows non-deterministic functions to be created when the binary log format is set to row-based. If said functions are invoked at runtime when the binary log format is statement-based, they will fail with an error.

  • Use an absolute install name for the shared library on Mac OS X

    In order to allow Apple's Mac OS X dynamic linker to locate the mysqlclient shared library even if the path where it is installed is not in the default search path, change the shared library install name from just the library filename to the absolute path to the library.

Changes in Twitter MySQL 5.5.23.t6.1 (20 June 2012)

Bugs Fixed

Changes in Twitter MySQL 5.5.23.t6 (11 June 2012)

See also Changes in MySQL 5.5.23 for changes in the upstream release.

Bugs Fixed

  • Bug#65469: Infinite loop when opening a corrupted table

    If a permanently corrupted page was read, InnoDB would forever keep trying to read the page.

  • Bug#65310: Crash with partition pruning and impossible condition

    Reading from a partitioned table using an impossible (e.g. WHERE, BETWEEN, etc.) condition could lead to a crash if all partitions are pruned and the optimizer attempts to obtain the number of rows in the table. The problem occurs because even though no partitions are used, the optimizer might still attempt to perform (e.g. using range) analysis where an estimate of the the number of rows is needed, but the partition storage engine wasn't prepared to provide it.

Functionality Added or Changed

  • Add partitioning functions for YMD and YMDH or equivalent

    Added a UTC_EXTRACT(unit FROM date) function that extracts parts from a date and returns them as an integer in a specified format. The function is modeled after EXTRACT(), but differs in that it uses UTC for all of its calculations. The supported unit specifiers are YEAR_MONTH_DAY and YEAR_MONTH_DAY_HOUR, which return a representation of the date argument as a value in the YYYYMMDD or YYYYMMDDHH format, respectively.

    This function is intended to facilitate partitioning by days, especially when applied to TIMESTAMP values. It allows partitions to be named in a more human-readable format (such as YYYYMMDD).

  • Export the last know good binary log position as a status variable from InnoDB

    Introduced two new status variables that export the master binary log name and position of a slave as stored by InnoDB. Whenever the SQL thread commits a transaction, InnoDB also commits the master binary log name and position to the system tablespace. Now this information can be retrieved through the Innodb_mysql_master_log_file and Innodb_mysql_master_log_pos status variables.

  • Report counters for InnoDB corruption events so that they are alertable

    Introduced status variables that expose a counter of page corruption and table corruption events so that they can be alerted on without scanning the error log files.

  • Improve obscure "Got error -1 when reading table" messages

    The problem was that handler originated errors printed to the error log sometimes do not indicate the precise nature of the problem. This is especially an issue with InnoDB because it cannot always convert an internal InnoDB error code to a MySQL error code.

    InnoDB now provides an additional (and more detailed) error message if it cannot convert the error code. Additionally, errors related to a statement being interrupted are no longer printed to the error log.

    Also, the error message format was changed from "Got error when reading table" to "Error when reading table: error message (error number)" in order to distinguish the offending error message.

  • Use the Google Breakpad crash reporting system

    Google's Breakpad is now used to generate minimal crash dump information when the server process (mysqld) crashes. The minidump file generated by breakpad contains a list of the executable and shared libraries loaded in the process, the state of the processor register and a stack trace for each thread, and miscellaneous information about the system and the reason for the dump. Minidumps are significantly smaller than core files, making them more practical for collection and processing.

  • Added non-functional RQG tests for InnoDB data compression

  • Binaries are now compiled with debugging symbols and are dynamically linked to the the Standard C++ Library (libstdc++)

Changes in Twitter MySQL 5.5.22.t5 (24 April 2012)

See also Changes in MySQL 5.5.22 for changes in the upstream release.

Bugs Fixed

  • Bug#65030: Innodb_buffer_pool_pages_flushed reports incorrect number of flushed pages

    The internal counter for the number of flushed pages (srv_buf_pool_flushed) was being incremented twice, once in buf_flush_batch() and again in buf_flush_common().

  • Bug#65061: LRU flush rate calculation is based on invalid values

    The internal counter for the number of pages flushed as part of LRU flushing was being incremented twice, once in buf_flush_LRU_list_batch() and again in buf_flush_common(). This could lead to an incorrect calculation of the rate at which LRU flush is happening, which might later affect the statistics associated with adaptive flushing.

  • Potential security issue with Oracle MySQL

    If, for whatever reason, the memcmp() call in check_scramble() returns a value with the 8 rightmost bits set to zero (e.g. 256), an invalid password could be accepted during authentication.

Functionality Added or Changed

  • MYSQL-62: Replication info not available from crash recovery?

    Restored code that stores the master binary log position of a slave in InnoDB's data file. Like in earlier MySQL versions, if a slave crashes, the name and position of the slave in relation to the master binary log file is printed after crash recovery.

  • Backport innodb_flush_neighbors from MySQL 5.6

    Backported from MySQL 5.6 the innodb_flush_neighbors option that controls whether flushing a page from the InnoDB buffer pool also flushes other dirty pages in the same extent.

  • Add ability to disable anticipatory flushing

    Introduced the innodb_anticipatory_flushing option that controls whether the master thread will flush dirty pages from the buffer pool if there is I/O bandwidth available for background tasks.

  • Add InnoDB flush-related status variables

    Introduced status variables that provide counters for the various flushing-related tasks performed by InnoDB. For example, these counters provide information about the number of pages scanned and flushed from the flush and LRU lists. Also, there are counters for the number of pages flushed by the background thread.

Changes in Twitter MySQL 5.5.21.t4 (06 March 2012)

See also Changes in MySQL 5.5.21 for changes in the upstream release.

Bugs Fixed

  • MYSQL-35: Packages for Mac OS X should not set -arch flags in mysql_config --cflags

    When building OS X universal binaries, the size of certain types might vary across architectures. Use architecture-to-size mapping to properly detect the size of time_t. This should fix a failure of the timezone test case.

  • MYSQL-30: Research safer buffer pool dump/restore method

    Fix tablespace bounds checking, the offset of the last page is the tablespace size minus one.

  • Bug#60682: deadlock from thd_security_context

    In order to avoid a deadlock-prone lock order, the query of a session associated with an active transaction is no longer displayed in the output of SHOW ENGINE INNODB STATUS.

  • Bug#64556: Interrupting a query inside InnoDB causes an unrelated warning to be raised

    Interrupting a statement (with KILL QUERY) that is executing inside InnoDB leads to an unrelated warning being raised in the context of the connection whose statement was interrupted.

Functionality Added or Changed

  • MYSQL-42: Allow pre-allocation of InnoDB file-per-table (ibd) tablespace files

    Added the ability to set the initial size and to extended the size, in pages, of per-table tablespaces. The option is only meaningful if innodb_file_per_table is enabled.

  • MYSQL-45: InnoDB should allow flushing to be gated by age of pages

    In order to reduce and control the frequency of write requests to SSD-based storage systems, this change introduces a new variable named innodb_flush_dirty_pages_age which can be used to set the minimum age (in seconds) of dirty pages to be flushed from the buffer pool, if the number of dirty pages is below the maximum percentage.

  • MYSQL-46: Make Replication filter settings dynamic

    Makes the slave options --replicate-* dynamic variables so that these options can be changed dynamically while the server is running, which enables users to modify replication filtering rules without having to stop and restart the server.

  • MYSQL-15: Implement server-side statement timeout support

    Introduces a server-side time limit for the execution of statements. The feature works by interrupting the execution of statements that take over a specified amount of time (in milliseconds) to complete. After the specified time has passed, the server attempts to abort the statement without affecting the session (connection) itself.

Changes in Twitter MySQL 5.5.20.t3 (06 February 2012)

See also Changes in MySQL 5.5.20 for changes in the upstream release.

Bugs Fixed

  • MYSQL-40: RPM "Obsoletes:" lines make it impossible to "yum install" specific old versions

    The "obsoletes" property of newer MySQL-server packages was interfering with the Yum installation of older (obsoleted) MySQL packages from different repositories. In order to avoid any obsoletes processing logic in Yum, the obsoletes property was simply removed.

  • MYSQL-39: Accessing innodb_buffer_page is very slow

    Temporary MyISAM tables, which are used to internally store the contents of large INFORMATION_SCHEMA tables, were being created using the static (fixed-length row) MyISAM storage format, which causes CHAR and VARCHAR columns to be padded to the column width. Given that the INNODB_BUFFER_PAGE table has a few large VARCHAR columns, and depending on the size of the buffer pool, this behavior would lead to large (tens of gigabytes) temporary tables being written to disk. Such temporary tables are now stored using the dynamic format, which uses significantly less disk space.

  • MYSQL-38: Counters in innodb_buffer_pool_stats seem broken

    The value of the NUMBER_PAGES_CREATED and NUMBER_PAGES_WRITTEN columns of the INNODB_BUFFER_POOL_STATS were being mistakenly set to the rate of pages created and written.

Functionality Added or Changed

  • MYSQL-37: Export InnoDB LSN information

    Added status variables that show the current log sequence number (Innodb_lsn_current), how far the log has been flushed to disk (Innodb_lsn_flushed), and the position at which InnoDB last took a checkpoint (Innodb_lsn_checkpoint).

  • MYSQL-28: Produce installable dmg+pkg builds for Mac OS X

    Various changes related to building on Mac OS X and producing installable packages.

  • MYSQL-27: Report test results to jenkins

    Artificial tests used for reporting unit-tests results, Valgrind warnings, etc., that have no associated suite name, are now added by default to the 'report' test suite for reporting purposes.

  • WL#5914: remove option "--all" and BDB errors from the "perror" program.

    Back-ported removal of the --all option that relied on deprecated APIs (e.g. sys_errlist).

Changes in Twitter MySQL 5.5.19.t2 (06 January 2012)

See also Changes in MySQL 5.5.19 for changes in the upstream release.

Bugs Fixed

Functionality Added or Changed

  • MYSQL-27: Report test results to jenkins

    Added JUnit reporting support to the MySQL test suite.

  • MYSQL-30: Research safer buffer pool dump/restore method

    Added information_schema tables INNODB_BUFFER_PAGE, INNODB_BUFFER_POOL_STATS and INNODB_BUFFER_PAGE_LRU, which represents information about each page in the InnoDB buffer pool and their position in the LRU list. This change also introduces a prefetch_pages command to the InnoDB storage engine. This command may be use to prefetch (retrieve from disk) index and data pages into the buffer pool. The prefetch command syntax is: ENGINE_CONTROL(InnoDB, prefetch_pages, space, page [, page ...])

  • MYSQL-31: Implement super_only mode to restrict all queries to SUPER-user only

    Introduced a super_only variable that restricts all statements, rather than just update statements as was already possible with read_only, to users holding the SUPER privilege.

  • MYSQL-29: Remove stop/start logic from RPM install/upgrade process

    RPM install/upgrade now fails if a MySQL server instance is currently running. Any instance must be stopped before a package upgrade can continue.

  • MYSQL-10: Modules for non-functional testing: sysbench, randgen, dbt2, etc.

    Added additional optimizer, replication and InnoDB RQG-based stress tests.

Changes in Twitter MySQL 5.5.19.t1 (06 December 2011)

See also Changes in MySQL 5.5.19 for changes in the upstream release.

Bugs Fixed

Functionality Added or Changed

  • MYSQL-14: Twitter MySQL build configuration

    The RPM package now provides information about the organization that maintains and distributes the RPM package (Twitter, Inc.). Also, upgrades are now only allowed between packages of the same vendor (Twitter, Inc.).

  • MYSQL-22: Make population of column source metadata in result sets optional

    This change introduces a new protocol mode that instructs MySQL to empty certain object names that are part of the result set metadata. Only the absolutely minimal (or essential) set of names is preserved. If the minimal option is set, the database, table (both original and aliased) and column names in the result set metadata will be empty strings. Only the column alias name is preserved.

  • MYSQL-23: Integrate (and port) patch for Innodb_deadlocks

    Introduce an Innodb_lock_deadlocks server status variable that provides the number of deadlocks that have occurred within InnoDB.

  • MYSQL-24: Include git sha in version_comment

    The version_comment field now contains a reference to the last git commit object in the checked out branch that was used to build the source package.

  • MYSQL-25: Add new InnoDB status variables Innodb_files_{open,opened,closed}

    Added status variables Innodb_files_open, Innodb_files_opened, Innodb_files_closed, Innodb_tablespace_files_open, Innodb_tablespace_files_opened, and Innodb_tablespace_files_closed, that show the number of open, opened and closed files within InnoDB and within InnoDB's tablespaces.

  • Removed extraneous space in InnoDB log message "Waiting for the background threads to start".

Changes in Twitter MySQL 5.5.19 (16 November 2011)

See also Changes in MySQL 5.5.19 for changes in the upstream release.

Bugs Fixed

Functionality Added or Changed

  • MYSQL-10: Modules for non-functional testing: sysbench, randgen, dbt2, etc.

    Added optimizer, partitioning, runtime and InnoDB RQG-based tests.

  • MYSQL-16: Augment mysqld_safe to flush caches and set NUMA policy

    Added mysqld_safe options to flush (sync and drop) caches before starting mysqld and to set the NUMA memory allocation policy to interleave.

  • MYSQL-12: Improve MySQL memory allocation, especially under NUMA

    Added option innodb-buffer-pool-populate to force the operating system to pre-allocate in physical memory the page frames required for the buffer pool memory region.

  • MYSQL-14: Twitter MySQL build configuration.

    Now there is a build configuration specific for Twitter MySQL builds.

Changes in Twitter MySQL 5.5.18 (24 October 2011)

See also Changes in MySQL 5.5.18 for changes in the upstream release.

Bugs Fixed

Functionality Added or Changed

  • Fixed various compiler warnings.