Let's imagine I have a schema, e.g. :test_env and a function name :get_some_data , both keywords. How can I compose a function call like this?
select "test_env"."get_some_data"(some_arg) as data
The only option I found was
(honey.sql/format {:select [[[:'test_env.get_some_data :arg] :data]]})
["SELECT test_env.get_some_data(arg) AS data"]
but this means, I should compose a full function name with a dot which involves concatenating strings, and it also doesn't have double quotes. Any ideas?
UPD: I thought the :. syntax would help, something like
{:select [[[:. :test_env :get_some_data] :arg] :data]}
but nohaven't tried, but maybe :test_env/get_some_data ?
I tried it as well but honeysql takes only the name and drops the namespace. It becomes GET_SOME_DATA(...)
I think technically it should be
{:select [[[[:. :test_env :get_some_data] :some-arg] :data]]}
But then it becomes
SELECT (test_env.get_some_data, some_arg) AS data
Seems that a vector in place of a keyword prevents HoneySQL from recognizing the parent vector as a function call.Right now, the "quoted keyword" approach is the only way to get a schema-qualified function name -- the README gives specific examples of that -- and there's no way to have an expression in the fn position . Feel free to create an issue and I'll have a think about it.