H2 сбросить и создать псевдоним to_char не работает - PullRequest
0 голосов
/ 09 октября 2019

Я пытался запустить несколько модульных тестов, в которых используется функция to_char, которая работает для нашей базы данных Oracle, но для нашей базы данных h2 в памяти тестирование, похоже, не работает. Я пытаюсь отбросить псевдоним to_char и переопределить его для того, который работает, но когда я пытаюсь отбросить псевдоним to_char и создать его, он, похоже, не работает.

DROP alias if exists TO_CHAR;
CREATE alias TO_CHAR FOR "package.TEST.toChar";

Результат в: "org. h2.jdbc.JdbcSQLException: псевдоним функции "TO_CHAR" уже существует; оператор SQL: "

DROP alias TO_CHAR;
CREATE alias TO_CHAR FOR "package.TEST.toChar";

Результат:" org.h2.jdbc.JdbcSQLException: псевдоним функции "TO_CHAR" не найден; оператор SQL:".

Также пробовал с прямым сценарием sql следующим образом, но не работает:

DROP alias if exists TO_CHAR;
CREATE alias TO_CHAR as '
public static String toChar(String date, String pattern) throws Exception {
        pattern = pattern.replaceAll("YY","yy");
        pattern = pattern.replaceAll("DD","dd");
        pattern = pattern.replaceAll("HH24|hh24","HH");
        pattern = pattern.replaceAll("HH?!24|hh?!24","KK");
        pattern = pattern.replaceAll("MON|mon","MMM");
        pattern = pattern.replaceAll("MI|mi","mm");
        pattern = pattern.replaceAll("SS|ss","ss");
        pattern = pattern.replaceAll("AM|PM","aa");
        pattern = pattern.replaceAll("T","");
        SimpleDateFormat sm = new SimpleDateFormat(pattern);
        java.util.Date dt;
        if(date.length() > 10)dt = java.sql.Timestamp.valueOf(date);
        else
            dt = java.sql.Date.valueOf(date);
        return sm.format(dt);
    }';

Я думал, что это может быть отсутствие разрешений, но он не работает с пользователем =«sa» также посмотрел вверх, и они могут не разрешить переопределение функции to_char, поскольку кто-то заявил, что не позволяет переопределить некоторые функции: http://h2 -database.66688.n3.nabble.com / trunc-alias-is-read-only-and-избежать-эмуляции-Oracle-trunc-function-td4025947.html

Кто-нибудь знает, что мне здесь не хватает, или это невозможно переопределить?

1 Ответ

0 голосов
/ 10 октября 2019

Если вы действительно хотите переопределить эту функцию в своей собственной реализации, вам нужно добавить ;BUILTIN_ALIAS_OVERRIDE=1 к URL вашей базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...