Диалект Postgresql 9.4.5 jOOQ 3.7.2 установлен на POSTGRES_9_4
Я пытаюсь использовать jOOQ для замены этого собственного совокупного выражения postgresql:
array_agg(row_to_json(foo) order by "foo"."name" asc) filter (where "attribute".name is not null)
jOOQ DSL выглядит так, как будто он должен работать, используя этот код:
arrayAgg(rowToJson(FOO)).orderBy(FOO.NAME).filterWhere(FOO.NAME.isNotNull()))
Где rowToJson — это оболочка для функции postgres. SQL, который это отображает, таков:
array_agg(row_to_json(foo) order by "foo"."name" asc)
В настоящее время я работаю над этим:
public static <T> Field<T[]> arrayAgg(Field<T> field, final SortField<?> sort, final Condition filter) {
return field("array_agg({0} order by {1}) filter (where {2})", field.getDataType().getArrayDataType(), field, sort, filter);
}
Вопрос в том, должен ли работать первый код? Если нет, то как правильно создать эту агрегатную функцию в jOOQ?