Функция MySQL 'HEX' в H2 / Derby / HSQL

0

Я пытаюсь объединить тестовые sql-запросы, используя db-in-memory. В запросах используется встроенная функция MySQL "hex" и "unhex" (поскольку они записывают двоичные данные в БД). Оказывается, ни один из этих 3-мерных решений DB не поддерживает функцию hex, и я не могу их протестировать.

Мои вопросы - нет ли способа протестировать запросы без перемещения шестнадцатеричного преобразования в код вместо функции "hex" непосредственно в запросе?

пс. Я знаю, что БД в памяти не являются репрезентативными для реального поведения db, но запросы довольно просты - вставляются и выбираются.

  • 0
    Как насчет определения вашей собственной функции: therealdanvega.com/blog/2010/02/17/…
  • 0
    @BryanPendleton Я пытался использовать Derby согласно вашему предложению, но он не поддерживает ключевое слово limit . HSQLDB был гораздо ближе к тому, что я хотел сделать. Спасибо!
Теги:
in-memory-database
hsqldb
derby
h2db

1 ответ

1
Лучший ответ

HSQLDB позволяет вам определять свои собственные функции. Если вы не тестируете фактические значения значений шестнадцатеричного или строкового значения, вы можете создать макетные функции HEX и UNHEX для возврата ввода. Например:

CREATE FUNCTION UNHEX(S VARCHAR(1000)) RETURNS VARCHAR(1000) 
 BEGIN ATOMIC
   RETURN S;
 END;

Если вы хотите, чтобы функции возвращали фактические преобразованные значения, вы можете расширить функции для выполнения преобразований. В этом случае вы можете использовать встроенные функции для извлечения кодов ASCII, а также любого существующего статического метода Java:

Обновление: поддержка обеих функций была добавлена в HSQLDB для версии 2.4.1.

  • 0
    Спасибо! Мне понадобилось время, чтобы перевести схему в HSQLDB и создать функцию SQL из Java, но это сработало!

Ещё вопросы

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