honeysql 2025-07-15

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 no

haven'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.