Skip to content

Changes in AliSQL 5.6.32 (2017 07 16)

AliSQL edited this page Jul 18, 2017 · 1 revision

AliSQL 5.6.32 Release Notes (2017-07-16)

Abstract

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.

Functionality Added or Changed

1. Invisible Indexes

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];

2. SELECT...FROM UPDATE

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;

Bugs Fixed

1. InnoDB Crash

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

2. Semisync Optimization

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;