I am using alembic with Snowflake.
In terms of DDL migrations I need to cater for SECURED VIEWS, it is pretty trivial to extend ReplaceableObject to deal with this.
The other thing I am finding is that Snowflake insists that DROP FUNCTION be provided with a list of the argument types along with the function name, so with a function:
CREATE FUNCTION myfunc(TABLENAME VARCHAR)
RETURNS VARCHAR
....
this does not work:
DROP FUNCTION myfunc
I need to go
DROP FUNCTION myfunc(VARCHAR)
But I cannot go
DROP FUNCTION myfunc(TABLENAME VARCHAR)
So in terms of using ReplaceableObject, to CREATE I need:
ReplaceableObject(
"myfunc(TABLENAME VARCHAR)",
"""
RETURNS VARCHAR
LANGUAGE javascript
...
But to DROP I need:
ReplaceableObject(
"myfunc(VARCHAR)",
"""
RETURNS VARCHAR
LANGUAGE javascript
...
I can hack something together with a superclass, but though I would mention here in case someone has a cleaner solution.
Cheers, Scott