GET_LOCK() в MySQL принимает отрицательное значение для тайм-аута и интерпретируется как бесконечный тайм-аут.
Документация MySQL: GET_LOCK()
Пытается получить блокировку с именем, заданным строкой str, используя тайм-аут тайм-аута секунд. Отрицательное значение тайм-аута означает бесконечный тайм-аут. Блокировка является эксклюзивной. В то время как в одном сеансе другие сеансы не могут получить блокировку с тем же именем.
Но в MariaDB я не могу найти способ воспроизвести этот бесконечный тайм-аут, потому что в документации ничего не указано.
Документация MariaDB: GET_LOCK()
GET_LOCK (str, timeout) [...] str нечувствителен к регистру для GET_LOCK() и связанных функций. Если str - пустая строка или NULL, GET_LOCK() возвращает NULL и ничего не делает. timeout округляется до ближайшего целого числа.
Я мог бы реплицировать GET_LOCK() с бесконечным временем ожидания MySQL в MariaDB?
MariaDB не принимает отрицательные значения для GET_LOCK
:
MariaDB [test]> do get_lock('test', -1);
Query OK, 0 rows affected, 1 warning (0.00 sec)
MariaDB [test]> show warnings;
+---------+------+-----------------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------------+
| Warning | 1411 | Incorrect timeout value: '-1' for function get_lock |
+---------+------+-----------------------------------------------------+
1 row in set (0.00 sec)
То, что вы можете сделать, это использовать 0xffffffff
для эмуляции такого же поведения в MariaDB:
MariaDB [test]> do get_lock('test', 0xffffff);
Query OK, 0 rows affected (1.85 sec)