Защо псевдонимът ми не се показва в INFORMATION_SCHEMA.FUNCTION_ALIASES?

Използвам H2 DB v1.4.182 за моята тестова среда. Той действа като заместител на Oracle, който е производственият доставчик. Имам няколко псевдонима, които създавам с помощта на скрипт в моята тестова среда:

CREATE ALIAS IF NOT EXISTS REGEXP_LIKE as $$ boolean regexpLike(String s, String p) { return java.util.regex.Pattern.compile(p).matcher(s).find(); } $$;

CREATE ALIAS IF NOT EXISTS TO_NUMBER as $$ long toNumber(String s) { return Long.valueOf(s); } $$;

CREATE ALIAS if NOT EXISTS fn_val_check3 for "fakedata.testutil.TestUtil.fn_val_check";

Първите два псевдонима се показват в таблицата INFORMATION_SCHEMA.FUNCTION_ALIASES, последният (fn_val_check3) не.

SELECT ALIAS_NAME FROM INFORMATION_SCHEMA.FUNCTION_ALIASES;

Дава ми два реда

ALIAS_NAME  
TO_NUMBER
REGEXP_LIKE

Проверих, че H2 има другия псевдоним някъде, като стартирах CREATE ALIAS ... директно в конзолата и той казва

CREATE ALIAS fn_val_check3 for "fakedata.testutil.TestUtil.fn_val_check";
Function alias "FN_VAL_CHECK3" already exists; SQL statement: CREATE ALIAS fn_val_check3 for "fakedata.testutil.TestUtil.fn_val_check" [90076-182] 90076/90076 (Help)

Използвам компонент за валидиране, за да проверя дали функцията съществува в базата данни, поради което се чудя. Пропускам ли нещо или това е известно?


h2
person MadConan    schedule 09.03.2015    source източник
comment
Работи ли, ако извикате fn_val_check3 (класът в classpath ли е и е включен)?   -  person Thomas Mueller    schedule 10.03.2015
comment
Ако имате предвид дали функцията се извиква, когато кодът се изпълнява, тогава да. Всичко работи отлично. Просто не мога да видя името на псевдонима в таблицата FUNCTION_ALIASES.   -  person MadConan    schedule 10.03.2015
comment
@ThomasMueller Текущата ми работа е да използвам select 1 from dual за моя тестов sql, за да проверя съществуването на функцията и това ми помага.   -  person MadConan    schedule 11.03.2015
comment
Не мога да възпроизведа проблема. Опитах това и методът (всъщност 2 метода) се появи. Бихте ли опитали това? CREATE ALIAS IF NOT EXISTS test_2 for "java.lang.Long.parseLong";   -  person Thomas Mueller    schedule 13.03.2015
comment
Да, това също се вижда. Единственото нещо, за което се сещам, е, че класът, към който се отнася псевдонимът, не е наличен в конзолата. Опитвам се да стартирам конзолата с правилния класов път, но не мога да направя класа достъпен (винаги получавам CNF). Запитването за името РАБОТИ по време на изпълнение.   -  person MadConan    schedule 13.03.2015