Support for Vertica (or replace) Function #1111
Closed
Labels
Milestone
Comments
#1112 if you want to try it. |
Seems to be good to go, thanks. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Seems creating functions with flyway in vertica works fine if the statement starts with "CREATE FUNCTION" but if you use the support "CREATE OR REPLACE FUNCTION" then the script breaks on the firs ";" and fails to migrate.
Example of code :
CREATE OR REPLACE FUNCTION default_to_hello(x VARCHAR) RETURN VARCHAR
AS BEGIN
-- The body of a SQL function in Vertica must be in the form 'RETURN expression'
RETURN (CASE WHEN (x IS NOT NULL) THEN x ELSE 'Hello' END);
END;
Error Produced:
Current version of schema "public": 2
Migrating schema "public" to version 3 - test
ERROR: Migration of schema "public" to version 3 failed! Please restore backups and roll back database and code!
ERROR:
Migration V3__test.sql failed
SQL State : 42601
Error Code : 4856
Message : [Vertica]VJDBC ERROR: Syntax error at or near "EOL"
Location : /opt/flywaydb/sql/V3__test.sql (/opt/flywaydb/sql/V3__test.sql)
Line : 1
Statement : CREATE or replace FUNCTION default_to_hello(x VARCHAR) RETURN VARCHAR
AS BEGIN
-- The body of a SQL function in Vertica must be in the form 'RETURN expression'
RETURN (CASE WHEN (x IS NOT NULL) THEN x ELSE 'Hello' END)
Code run in vertica :
dbadmin=> CREATE or replace FUNCTION default_to_hello(x VARCHAR) RETURN VARCHAR
dbadmin-> AS BEGIN
dbadmin-> -- The body of a SQL function in Vertica must be in the form 'RETURN expression'
dbadmin-> RETURN (CASE WHEN (x IS NOT NULL) THEN x ELSE 'Hello' END);
dbadmin-> END;
CREATE FUNCTION
dbadmin=> select default_to_hello('Working');
default_to_hello
Working
(1 row)
dbadmin=> select default_to_hello(null);
default_to_hello
Hello
(1 row)
The text was updated successfully, but these errors were encountered: