-
Notifications
You must be signed in to change notification settings - Fork 846
Changes in AliSQL 5.6.32 (2017 07 16)
Here are the AliSQL (20170716) Release Notes:
1. Invisible Indexes
Add new attributes 'VISIBLE/INVISIBLE' for index, it only determines whether the index can be used by exec plan and won't affect the index record maintenance.
2. SELECT...FROM UPDATE
AliSQL supplies a new SQL syntax: SELECT...FROM UPDATE
, it not only executes UPDATE statement but also returns the updated row records to the client.
3. InnoDB Crash
When adding UNIQUE KEY failed because the duplicate key, the dictionary objects cleaning will be delayed to wait background thread execution, then InnoDB crashed occasionally when master thread evicts the object.
4. Semisync Optimization
Semisync begin to use poll()
to listen all slave sockets instead of using select()
which has many restrictions.
Description:
The index can be marked as unavailable by the optimizer, and still be maintained as data is modified.
Parameters:
no
Usage:
ALTER TABLE tblname
ALTER INDEX idxname
[VISIBLE | INVISIBLE];
ALTER TABLE tblename
ADD INDEX idxname
[VISIBLE | INVISIBLE];
Description:
The original way to update table records and retrieve the new rows is that: 1) UPDATE table rows, 2) then SELECT table rows.
Based on the consideration of system performance and efficiency, SELECT...FROM UPDATE
will accomplish this demand only through one request round trip.
Parameters:
no
Usage:
Syntax:
SELECT
select_expr
FROM
UPDATE update_clause ;
Example:
SELECT a FROM UPDATE t SET a=2 WHERE id=1;
Description:
The InnoDB will crash when master thread wants to evict an unused object. For detail information of reproducing and analysis on the crash, please refer to: http://mysql.taobao.org/monthly/2017/06/05/.
We have reported this serious bug to MySQL offical team and MariaDB;
https://bugs.mysql.com/bug.php?id=86607
https://jira.mariadb.org/browse/MDEV-13051
Description:
Originally Semisync use the select()
function to listen all slave sockets, but select()
has several restrictions, so replace it with poll()
.
Ack_receiver may read invalid socket fd and report network packet errors. We should clear socket when the read()
returns error with ER_NET_READ_ERROR, otherwise Ack_receiver will report a lot of network packet errors until dump thread is killed;