Создать функцию расстояния Хемминга в MySQL без супер привилегий

Я хотел бы использовать расстояние Хемминга в моей базе данных MySQL (используется поверх phpMyAdmin), но мне не удалось создать функцию с приведенным здесь кодом.

Я ссылаюсь на этот код:

CREATE FUNCTION HAMMINGDISTANCE(
A0 BIGINT, A1 BIGINT, A2 BIGINT, A3 BIGINT,
B0 BIGINT, B1 BIGINT, B2 BIGINT, B3 BIGINT
)
RETURNS INT DETERMINISTIC
RETURN
  BIT_COUNT(A0 ^ B0) +
  BIT_COUNT(A1 ^ B1) +
  BIT_COUNT(A2 ^ B2) +
  BIT_COUNT(A3 ^ B3);

Проблема в том, что у меня нет "супер привилегии". Я также пытался поместить этот код между DELIMITER // (который работал для функции расстояния Левенштейна, см. ниже), но также это не решило проблему - я получил время:

Максимальное время выполнения 300 секунд превышено в /usr/share/phpmyadmin/libraries/import/sql.php по линии 132

В любом случае, я совсем новичок в MySQL, поэтому мне интересно, может ли кто-нибудь помочь мне с созданием функции Хемминга в MySQL другим способом.

Кстати, я также использую функцию расстояния Левенштейна, и создание этой функции работало нормально. Тем не менее, я увидел, что расстояние Левенштейна лучше использовать для вычисления расстояния между двумя строками и расстояния Хэмминга для числовых данных.

Благодарю.

1 ответ

Вам нужно CREATE ROUTINE разрешение.

Другие вопросы по тегам