Установить бесконечное время ожидания GET_LOCK () в MariaDB

0

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?

  • 0
    Попробуйте очень большой тайм-аут.
Теги:
mariadb

1 ответ

0

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)
  • 0
    Brilliant! где док этого "трюка"? довольно удивительно, что принимает шестнадцатеричное значение. Большое спасибо
  • 0
    нет необходимости документировать это. Всегда можно подражать «бесконечному» с «чрезвычайно большим». 2 ^ 32-1 секунды - это 136 лет, что достаточно для бесконечности. Вы можете использовать большие значения, второй параметр на самом деле является двойным, поэтому вы можете установить блокировку для ожидания до конца нашей галактики.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню