group_concat関数をhsqldbに追加して、クエリをユニット/統合テストとして適切にテストできるようにしようとしています。クエリはmysqlで正常に機能するため、hsqldbで機能する必要があります(うまくいけば)。
// GROUP_CONCAT
jdbcTemplate.update("DROP FUNCTION GROUP_CONCAT IF EXISTS;");
jdbcTemplate.update(
"create aggregate function group_concat(in val varchar(100), in flag boolean, inout buffer varchar(1000), inout counter int) " +
" returns varchar(1000) " +
" contains sql " +
"begin atomic " +
" if flag then" +
" return buffer;" +
" else" +
" if val is null then return null; end if;" +
" if buffer is null then set buffer = ''; end if;" +
" if counter is null then set counter = 0; end if;" +
" if counter > 0 then set buffer = buffer || ','; end if;" +
" set buffer = buffer + val;" +
" set counter = counter + 1;" +
" return null;" +
" end if;" +
"end;"
);
この集計関数を追加すると、ほとんどの問題が解決します。mysqlのgroup_concatのように正しく動作します。ただし、それが行わないのは、次のような個別のキーワードを使用できるようにすることです。
group_concat(distinct column)
個別のキーワードを考慮に入れる方法はありますか?または、個別のキーワードを完全に回避するようにクエリを書き直しますか?