Я пробовал использовать базу данных H2 для выполнения указанных файлов DDL, а затем получать информацию через мета / информационную схему, но некоторые из этих файлов DDL используют неподдерживаемый синтаксис для H2.
В настоящее время я использую такой синтаксический анализатор:
Код: Выделить всё
String sql = """
create function fn_1(
param1 text,
param2 text
) returns boolean as $$
select true
$$ language sql immutable;
create table if not exists example (
id bigint not null
);
create or replace function fn_2(
param1 numeric,
param2 numeric
) returns boolean as $$
select true
$$ language sql immutable;
"""
Settings settings = new Settings();
settings.setParseIgnoreCommercialOnlyFeatures(true);
settings.setParseUnsupportedSyntax(ParseUnsupportedSyntax.IGNORE);
Parser parser = DSL.using(dialect, settings).parser();
parser.parse(sql);
Код: Выделить всё
org.jooq.impl.ParserException: ALIAS, FUNCTION, GENERATOR, GLOBAL TEMPORARY TABLE, INDEX, OR ALTER, OR REPLACE, PRIVATE SYNONYM, PROCEDURE, PUBLIC ALIAS, PUBLIC SYNONYM, SCHEMA, SEQUENCE, SYNONYM, TABLE, TEMPORARY TABLE, TRIGGER, TYPE, UNIQUE INDEX, or VIEW expected: [1:8] create [*]function fn_1(
param1 text,
param2 text
) returns boolean as $$
select tru...
Заранее спасибо
Подробнее здесь: https://stackoverflow.com/questions/797 ... ooq-parser
Мобильная версия