I was playing around with MySQL 5.7 this weekend and before having read the changelog, I managed to spot these two little gems.
Duplicate Indexes
“The server now issues a warning if an index is created that duplicates an existing index, or an error in strict SQL mode.” Bug #37520
Example Testcase:
mysql> SHOW CREATE TABLE city\G
*************************** 1. row ***************************
Table: city
Create Table: CREATE TABLE `city` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `CountryCode` (`CountryCode`),
CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `Country` (`Code`)
) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
mysql> ALTER TABLE city add index (countrycode);
ERROR 1831 (HY000): Duplicate index 'CountryCode_2' defined on the table 'world.city'.
This is deprecated and will be disallowed in a future release.
Pretty cool – I know this previously caught a lot of people.
Control-C support in the client
“Previously, Control+C in mysql interrupted the current statement if there was one, or exited mysql if not. Now Control+C interrupts the current statement if there was one, or cancels any partial input line otherwise, but does not exit.” Bug #66583
Example Testcase:
mysql> this is a test
-> test
-> test
-> ^C
So if I want to quit, I can now control-C then type “quit”. This is much more intuitive.