Я пытаюсь объединить тестовые sql-запросы, используя db-in-memory. В запросах используется встроенная функция MySQL "hex" и "unhex" (поскольку они записывают двоичные данные в БД). Оказывается, ни один из этих 3-мерных решений DB не поддерживает функцию hex, и я не могу их протестировать.
Мои вопросы - нет ли способа протестировать запросы без перемещения шестнадцатеричного преобразования в код вместо функции "hex" непосредственно в запросе?
пс. Я знаю, что БД в памяти не являются репрезентативными для реального поведения db, но запросы довольно просты - вставляются и выбираются.
HSQLDB позволяет вам определять свои собственные функции. Если вы не тестируете фактические значения значений шестнадцатеричного или строкового значения, вы можете создать макетные функции HEX и UNHEX для возврата ввода. Например:
CREATE FUNCTION UNHEX(S VARCHAR(1000)) RETURNS VARCHAR(1000)
BEGIN ATOMIC
RETURN S;
END;
Если вы хотите, чтобы функции возвращали фактические преобразованные значения, вы можете расширить функции для выполнения преобразований. В этом случае вы можете использовать встроенные функции для извлечения кодов ASCII, а также любого существующего статического метода Java:
Обновление: поддержка обеих функций была добавлена в HSQLDB для версии 2.4.1.
limit
. HSQLDB был гораздо ближе к тому, что я хотел сделать. Спасибо!