Due to all of the positive feedback that I received on the MySQL 5.7.3 & 5.7.4 blog posts, I have decided to complete the picture by doing the same for 5.7.1 & 5.7.2. Note that you will find historical releases — including milestone releases — at downloads.mysql.com.
So here is the belated post for the MySQL 5.7.1 Milestone Release, released on April 22, 2013. You can find the full list of changes and bug fixes in the 5.7.1 Release Notes. Enjoy!
InnoDB Online Alter Table
mysql> ALTER TABLE t RENAME INDEX i1 TO i2;
Enlarge VARCHAR column size online (WL#6554) This work by Marko Mäkelä makes it
possible to enlarge varchar column sizes as an online operation.
This is true as long as the number of bytes required by the
VARCHAR column type (
the same, i.e. from 0 to 255 or from 256 to higher. Example:
mysql> ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255);
InnoDB Temporary Table Performance
One of the goals of 5.7 is to optimize InnoDB temp tables for better performance. As a first step toward this goal, we made temp table creation and removal a more light-weight operation by avoiding the unnecessary step of persisting temp table metadata to disk.
Separate tablespace for temp tables (WL#6560). This work by Krunal Bauskar moves temp tables to a separate tablespace so that the recovery process for temp tables becomes a single stateless step by simply re-creating it at start-up. The new separate temp tablespace is named ibtmp1 and resides in the data directory.
Optimize DDL for temp tables (WL#6469) This work by Krunal Bauskar removes
unnecessary persistence for temp tables. Temp tables are only
visible within the connection/session in which they were created,
and they are bound by the lifetime of the server (the temp
tablespace is re-created at start-up). Thus, for statements such
CREATE TEMPORARY TABLE we will not make the table
definitions persistent. This will eliminate unnecessary disk IO
during the table create/drop phases.
InnoDB Spatial Index
One of the goals for 5.7 is to implement spatial indexing in
InnoDB. To achieve this InnoDB needs to support
GEOMETRY datatypes, so that InnoDB understands and
stores them properly.
InnoDB: GEOMETRY datatypes support (WL#6455) This work by Zheng Lai adds a new
InnoDB internal datatype called
maps all MySQL
GEOMETRY datatypes to this new
internal datatype. InnoDB continues to use BLOBs for the
underlying storage, but the columns are marked as the proper
datatype. Since InnoDB uses BLOBs for the underlying datatype,
the prefix index on the
GEOMETRY data column can
still be used. Also, for the same reason, nothing special needs
to be done for recovery related processes.
Add limited SQL HANDLER support for partitioning
(WL#6497) This work by Mattias Jonsson adds step by
step index reads for the
SQL HANDLER statements. The
purpose is to improve the test coverage of index reads in the
BEFORE triggers are not processed for NOT NULL columns (WL#6030) This work by Dmitry Shulga ensures that we check column constraints at the end of the SQL statement. This is in compliance with the SQL standard. In 5.6 and earlier, MySQL checks the column constraints too soon. For example, if a column was NOT NULL, one could not INSERT a NULL in the original statement (or UPDATE it to NULL), even though an associated trigger later set the column to a NON-NULL value (thus satisfying the NOT NULL column requirement for the final row that is created). See also Bug#6295 reported by Peter Gulutzan and Dmitry Shulga’s blog post about his implementation.
Stacked Diagnostic areas (WL#6406) This work by Jon Olav Hauglid implements
support for stacked diagnostic areas, according to the SQL
standard. This includes updating the current implementation of
and stored program execution. The
statement is also extended to support
GET [STACKED] DIAGNOSTICS.
Split info logging and binary logging code (WL#6613) This work by Jon Olav Hauglid splits the binary log code from the general/slow/error log code in order to improve modularity and maintainability. This work also improves the code documentation.
Non blocking show slave status (WL#6402) This work by Nuno Carvalho adds a
non-blocking option to
SHOW SLAVE STATUS. The new
SHOW SLAVE STATUS non-blocking
when run in parallel with
STOP SLAVE (the
SLAVE command may take a long time to complete when it is
waiting for an SQL thread to finish applying large events).
Add idempotent mode to mysqlbinlog (WL#6403) This work by Rohit Kalhans provides an idempotent mode of operation for mysql server. In this mode the server will ignore errors while applying row based events from a binlog file. This mode is useful when a DBA wants to replay binlogs using mysqlbinlog, but against a MySQL server which may not contain all of the data, so suppressing duplicate-key and no-key-found errors can be useful.
Add rewrite-db option to mysqlbinlog for RBR (WL#6404) This work by Manish Kumar adds support for a rewrite-db option to mysqlbinlog, so that a RBR event can be applied to a different database/schema. I.E. replace “from_db” to ‘to_db’ when reading a ROW based event from the binlog.
Log interactive commands to syslog (WL#6788) This work by Nirbhay Choubey introduces a
new client option,
--syslog, which enables/disables
the logging of attributes like sudo_user (or user), mysql_user,
connection_id, db_server, DB, and query entered in an interactive
session. This has been requested by some users due to auditing
compliance requirements, i.e. requirements to log all interactive
commands entered at the mysql command-line prompt to syslog.
Test suite improvements
One of the goals of 5.7 is to improve our automated tests.
Make the MTR binlog suite GTID_MODE agnostic (WL#6663) This work by Nuno Carvalho makes the MTR
binlog suite GTID_MODE agnostic, so standard replication test
suites can be run with
Switch default engine to InnoDB in MTR (WL#6731) This work by Sayantan Dutta changes MySQL Test Run (MTR) such that it uses InnoDB, unless MyISAM is explicitly specified within the test.
Migrate parts of MTR test suite to run with InnoDB storage engine (WL#6734) This work by Viswanatham Gudipati migrates the partitioning (parts) test suite to run with InnoDB as the default storage engine.
Migrate sys_vars MTR test suite to run with the InnoDB storage engine (WL#6735) This work by Akhila Maddukuri migrates the sys_vars test suite to run with InnoDB as the default storage engine.
Deprecation & Removal
Remove support for .sym files (WL#6561) This work by Dmitry Lenev removes the old
custom Windows symlink implementation from MySQL 5.7. Starting
from Windows Vista/Server 2008, a native symlink mechanism is
supported by Windows (see the
mklink command). MySQL
will now use the native Windows mechanism going forward.
Remove INSERT DELAYED (WL#6073) This work by Martin Hansson removes the
INSERT DELAYED in 5.7 and onwards.
INSERT DELAYED has a lot of limitations and issues
attached to it, and with InnoDB as default engine it becomes even
less relevant. We decided to keep the
DELAYED syntax, but convert it to
INSERT/REPLACE with a warning before execution.
Remove innodb_mirrored_log_groups (WL#6808) This work by Satya Bodapati removes the
innodb_mirrored_log_groups option in 5.7. The
allowed range of the parameter
innodb_mirrored_log_groups was 1..10, but there has
always been (at least since 3.23.53) a check within InnoDB
startup that refuses any value except 1. This is not meaningful
and thus we decided to remove it.