Allow COM_FIELD_LIST to be executed when WSREP was not ready

Description

COM_FIELD_LIST is the command executed via mysql_list_fields - https://dev.mysql.com/doc/refman/5.7/en/mysql-list-fields.html . 

As shown on the link above, it is deprecated, and one should use SHOW FIELDS instead.

Currently when wsrep is not ready for application use, we allow SHOW FIELDS but we don't allow mysql_list_fields.

mysql client uses that function when doing auto-completion of objects (which is on by default) and this can cause the client to hang.

Same function is used by mysqlshow.

 

How to reproduce:

1. Open cnx1
2. cnx1: SET GLOBAL wsrep_reject_queries=ALL
3. Open cnx2 passing a database to connect: mysql [args] mysql OR mysqlshow

CNX2 will hang.

 

Same will happen if one type USE db_name on an already open connection. 

Environment

None

Smart Checklist

Activity

Show:

Marcelo Altmann June 24, 2020 at 12:57 PM

Allow COM_FIELD_LIST (executed as part of SHOW FIELDS FROM [table]) to be executed while WSREP is not ready or wsrep_reject_queries is set to anything rather than NONE

Done

Details

Assignee

Reporter

Needs Review

Yes

Original estimate

Time tracking

1d 2h 49m logged9m remaining

Affects versions

Priority

Smart Checklist

Created April 15, 2020 at 12:17 PM
Updated March 6, 2024 at 9:37 PM
Resolved May 19, 2020 at 1:44 PM