# Braces { in "sql" source not working

**URL:** <https://forum.liquibase.org/t/braces-in-sql-source-not-working/3071>\
**Category:** General Discussion\
**Created:** [July 29, 2014, 3:10pm UTC](https://forum.liquibase.org/t/braces-in-sql-source-not-working/3071 "2014-07-29T15:10:00Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![nvoxland](https://avatars.discourse-cdn.com/v4/letter/n/87869e/32.png) [@nvoxland](https://forum.liquibase.org/u/nvoxland)\
**Post date:** [July 29, 2014, 3:10pm UTC](https://forum.liquibase.org/t/braces-in-sql-source-not-working/3071/1 "2014-07-29T15:10:00Z")

</div>

It seems to be from Liquibase calling the Oracle driver’s connection.nativeSQL(sql) method. The braces get lost from that.

Do you know if there are any issues or work-arounds at the driver level with SQL with braces?

Nathan

---

<div class="post-metadata">

**Author:** ![nvoxland](https://avatars.discourse-cdn.com/v4/letter/n/87869e/32.png) [@nvoxland](https://forum.liquibase.org/u/nvoxland)\
**Post date:** [July 29, 2014, 3:10pm UTC](https://forum.liquibase.org/t/braces-in-sql-source-not-working/3071/2 "2014-07-29T15:10:00Z")

</div>

Stepping through, the braces seem to be lost in JdbcConnection with a call to connection.nativeSQL(sql). &nbsp;Perhaps it is confused with your brace and “\ ?” &nbsp;? If you add some newlines in there, perhaps it may help?

Nathan

---

<div class="post-metadata">

**Author:** ![AndrewHukin](https://avatars.discourse-cdn.com/v4/letter/a/f04885/32.png) [@AndrewHukin](https://forum.liquibase.org/u/AndrewHukin)\
**Post date:** [July 29, 2014, 3:10pm UTC](https://forum.liquibase.org/t/braces-in-sql-source-not-working/3071/3 "2014-07-29T15:10:00Z")

</div>

I want to use “create or replace java source …” in Oracle but the braces ‘{’

and the next nonblank in the Java code are being stripped. How can I overcome this?

I have seen a previous post about putting a question mark ‘?’ in the sql to disable JDBC Escape Processing but this doesn’t seem to work.&nbsp; I’ve looked at JDBCExecutor.java and that has some code to handle this but when I turn on debug logging, it seems tha the brace and following nonblank character have already been stripped before the sql is executed.

The following changeset:
 
1. &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 

Results in the following:

1. &nbsp;&nbsp;&nbsp;&nbsp; [exec] DEBUG 29/07/14 4:01 PM: liquibase: wcpu.msr.changelog.xml: wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin: Running Changeset:wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin &nbsp;&nbsp;&nbsp;&nbsp; [exec] DEBUG 29/07/14 4:01 PM: liquibase: wcpu.msr.changelog.xml: wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin: Changeset wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin &nbsp;&nbsp;&nbsp;&nbsp; [exec] DEBUG 29/07/14 4:01 PM: liquibase: wcpu.msr.changelog.xml: wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin: Reading ChangeSet: wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin &nbsp;&nbsp;&nbsp;&nbsp; [exec] DEBUG 29/07/14 4:01 PM: liquibase: wcpu.msr.changelog.xml: wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin: Executing Statement: liquibase.statement.core.RawSqlStatement &nbsp;&nbsp;&nbsp;&nbsp; [exec] DEBUG 29/07/14 4:01 PM: liquibase: wcpu.msr.changelog.xml: wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin: Executing EXECUTE database command: create or replace java source named "T" as &nbsp;&nbsp;&nbsp;&nbsp; [exec] public class T / :1 &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp; String x &nbsp;&nbsp;&nbsp;&nbsp; [exec] SEVERE 29/07/14 4:01 PM: liquibase: wcpu.msr.changelog.xml: wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin: Change Set wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin failed.&nbsp; Error: Error executing SQL create or replace java source named "T" as &nbsp;&nbsp;&nbsp;&nbsp; [exec] public class T / :1 &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp; String x: ORA-29536: badly formed source: Encountered "/" at line 1, column 16. &nbsp;&nbsp;&nbsp;&nbsp; [exec] Was expecting one of: &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp;&nbsp; "extends" ... &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp;&nbsp; "implements" ... &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp;&nbsp; "{" ... &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; [exec] &nbsp;&nbsp;&nbsp;&nbsp; [exec] liquibase.exception.DatabaseException: Error executing SQL create or replace java source named "T" as &nbsp;&nbsp;&nbsp;&nbsp; [exec] public class T / :1 &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp; String x: ORA-29536: badly formed source: Encountered "/" at line 1, column 16. &nbsp;&nbsp;&nbsp;&nbsp; [exec] Was expecting one of: &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp;&nbsp; "extends" ... &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp;&nbsp; "implements" ... &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp;&nbsp; "{" ... &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; [exec] &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:62) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:122) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1206) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1189) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.changelog.ChangeSet.execute(ChangeSet.java:528) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:43) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:70) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.Liquibase.update(Liquibase.java:195) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.Liquibase.update(Liquibase.java:174) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.integration.commandline.Main.doMigration(Main.java:997) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.integration.commandline.Main.run(Main.java:170) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.integration.commandline.Main.main(Main.java:89) &nbsp;&nbsp;&nbsp;&nbsp; [exec] Caused by: java.sql.SQLException: ORA-29536: badly formed source: Encountered "/" at line 1, column 16. &nbsp;&nbsp;&nbsp;&nbsp; [exec] Was expecting one of: &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp;&nbsp; "extends" ... &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp;&nbsp; "implements" ... &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp;&nbsp; "{" ... &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; [exec] &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:194) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1000) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1882) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1847) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:301) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:310) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55) &nbsp;&nbsp;&nbsp;&nbsp; [exec]&nbsp; ... 11 more &nbsp;&nbsp;&nbsp;&nbsp; [exec] DEBUG 29/07/14 4:01 PM: liquibase: wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin: Release Database Lock &nbsp;&nbsp;&nbsp;&nbsp; [exec] DEBUG 29/07/14 4:01 PM: liquibase: wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin: Executing UPDATE database command: UPDATE WCPU.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1 &nbsp;&nbsp;&nbsp;&nbsp; [exec] INFO 29/07/14 4:01 PM: liquibase: wcpu.java.changelog.xml::TQIMsgIDGenerator.java.sql::Andrew Hukin: Successfully released change log lock

 I've tried using SQLFILE but it's no better.

Any ideas?

Many thanks  
Andrew

---

<div class="post-metadata">

**Author:** ![un1406616545849r72id](https://avatars.discourse-cdn.com/v4/letter/u/d78d45/32.png) [@un1406616545849r72id](https://forum.liquibase.org/u/un1406616545849r72id)\
**Post date:** [July 29, 2014, 3:10pm UTC](https://forum.liquibase.org/t/braces-in-sql-source-not-working/3071/4 "2014-07-29T15:10:00Z")

</div>

Hmmm … it seemed to me that the {'s are being stripped before the SQL is executed but I could have that wrong as I’ve only just had a quick glnce at the Liquibase code.

I can’t find anything re the drivers and braces other than the standard JDBC escape processing.

Andrew
