Bug #80721 the new GET_LOCK implementation has a limit on the identifier name
| Submitted: | 14 Mar 2016 8:13 | Modified: | 14 Mar 2016 14:08 |
|---|---|---|---|
| Reporter: | Miguel Angel Nieto | Email Updates: | |
| Status: | Not a Bug | Impact on me: | |
| Category: | MySQL Server: Locking | Severity: | S3 (Non-critical) |
| Version: | 5.7.11 | OS: | Any |
| Assigned to: | CPU Architecture: | Any |
[14 Mar 2016 11:23]
Morgan Tocker
The new implementation is based on MDL, and thus has the same maximum length of table names. A workaround is to hash the lock-name using a function like SHA1. Here is an example: http://mysqlserverteam.com/making-get_lock-behavior-more-predictable-cross-version-with-qu...
[14 Mar 2016 14:08]
MySQL Verification Team
Hello Miguel, Thank you for the bug report and feedback. As Morgan explained(with possible workaround), this is a documented behavior i.e MySQL 5.7.5 and later enforces a maximum length on lock names of 64 characters. Previously, no limit was enforced. Please see http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_get-lock and some more details are here - https://dev.mysql.com/doc/refman/5.7/en/upgrading-from-previous-series.html Thanks, Umesh
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.051 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: MySQL 5.7 includes a patch for GET_LOCK that changes its behaviour but also places a limit on the identificator name that didn't exist before. In my personal opinion, that limitation could be removed. How to repeat: 5.6 > select GET_LOCK(repeat('x', 195), 1); +-------------------------------+ | GET_LOCK(repeat('x', 195), 1) | +-------------------------------+ | 1 | +-------------------------------+ 5.7: > select GET_LOCK(repeat('x', 195), 1); ERROR 1059 (42000): Identifier name 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' is too long Suggested fix: Remove the limitation.