# Creating a function fails

**URL:** <https://forum.liquibase.org/t/creating-a-function-fails/4904>\
**Category:** General Discussion\
**Created:** [December 16, 2020, 6:28pm UTC](https://forum.liquibase.org/t/creating-a-function-fails/4904 "2020-12-16T18:28:20Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![datapro75](https://avatars.discourse-cdn.com/v4/letter/d/bc8723/32.png) [@datapro75](https://forum.liquibase.org/u/datapro75)\
**Post date:** [December 16, 2020, 6:28pm UTC](https://forum.liquibase.org/t/creating-a-function-fails/4904/1 "2020-12-16T18:28:20Z")

</div>

If I execute this code in postgresql:

```
    CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$
            BEGIN
                    RETURN i + 1;
            END;
    $$ LANGUAGE plpgsql;

```

It works fine from psql.  
If I apply a file named dbchangelog.postgresql.sql like this:  
–liquibase formatted sql  
–changeset giovanni.martinez:1.function-create\_corporation\_dashboard  
CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$  
BEGIN  
RETURN i + 1;  
END;  
$$ LANGUAGE plpgsql;  
it fails with the following error:  
` Expected terminating $$ [Failed SQL: (0) CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$`  
I have the open source version. Just need to execute the SQL.  
What did I do wrong?

---

<div class="post-metadata">

**Author:** ![ronak](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.liquibase.org/ronak/32/221_2.png) [@ronak](https://forum.liquibase.org/u/ronak)\
**Post date:** [January 6, 2021, 3:10pm UTC](https://forum.liquibase.org/t/creating-a-function-fails/4904/2 "2021-01-06T15:10:45Z")

</div>

Hi @datapro75

This worked for me, what version of liquibase are you using? I am using 4.2.0

ronak@Ronaks-MacBook-Pro postgres % liquibase --changeLogFile=4904.sql updateSQL  
Liquibase Pro 4.2.0 by Datical licensed to Liquibase Pro Customer until Mon May 17 19:00:00 CDT 2021

Starting Liquibase at 09:08:41 (version 4.2.0 #18 built at 2020-11-13 16:49+0000)  
– \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
– Update Database Script  
– \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
– Change Log: 4904.sql  
– Ran at: 1/6/21 9:08 AM  
– Against: postgres@jdbc:postgresql://localhost:5432/postgres  
– Liquibase version: 4.2.0  
– \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

SET SEARCH\_PATH TO public;

– Lock Database  
UPDATE public.databasechangeloglock SET LOCKED = TRUE, LOCKEDBY = ‘192.168.0.111 (192.168.0.111)’, LOCKGRANTED = ‘2021-01-06 09:08:42.211’ WHERE ID = 1 AND LOCKED = FALSE;

SET SEARCH\_PATH TO public;

SET SEARCH\_PATH TO public;

– Changeset 4904.sql::raw::includeAll  
SET SEARCH\_PATH TO public;

–changeset giovanni.martinez:1.function-create\_corporation\_dashboard  
CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$  
BEGIN  
RETURN i + 1;  
END;  
$$ LANGUAGE plpgsql;

INSERT INTO public.databasechangelog (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT\_ID) VALUES (‘raw’, ‘includeAll’, ‘4904.sql’, NOW(), 6, ‘8:b3bb2cd856694b39111221e62211c05b’, ‘sql’, ‘’, ‘EXECUTED’, NULL, NULL, ‘4.2.0’, ‘9945722399’);

– Release Database Lock  
SET SEARCH\_PATH TO public;

UPDATE public.databasechangeloglock SET LOCKED = FALSE, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;

SET SEARCH\_PATH TO public;

Liquibase command ‘updateSQL’ was executed successfully.  
ronak@Ronaks-MacBook-Pro postgres % liquibase --changeLogFile=4904.sql update

Starting Liquibase at 09:08:50 (version 4.2.0 #18 built at 2020-11-13 16:49+0000)  
Liquibase: Update has been successful.  
ronak@Ronaks-MacBook-Pro postgres %
