Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for issue #1089 #1090

Merged
merged 1 commit into from Oct 3, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -33,6 +33,22 @@ public class DB2SqlStatementBuilder extends SqlStatementBuilder {
*/
private String statementStart = "";

@Override
protected String extractAlternateOpenQuote(String token) {
if (token.startsWith("X'")) {
return "X'";
}
return null;
}

@Override
protected String computeAlternateCloseQuote(String openQuote) {
if (openQuote.equals("X'")) {
return "'";
}
return openQuote;
}

@Override
protected Delimiter changeDelimiterIfNecessary(String line, Delimiter delimiter) {
if (StringUtils.countOccurrencesOf(statementStart, " ") < 4) {
Expand Down
Expand Up @@ -33,6 +33,22 @@ public class DB2zosSqlStatementBuilder extends SqlStatementBuilder {
*/
private String statementStart = "";

@Override
protected String extractAlternateOpenQuote(String token) {
if (token.startsWith("X'")) {
return "X'";
}
return null;
}

@Override
protected String computeAlternateCloseQuote(String openQuote) {
if (openQuote.equals("X'")) {
return "'";
}
return openQuote;
}

@Override
protected Delimiter changeDelimiterIfNecessary(String line, Delimiter delimiter) {
if (StringUtils.countOccurrencesOf(statementStart, " ") < 4) {
Expand Down
Expand Up @@ -26,6 +26,17 @@ protected String extractAlternateOpenQuote(String token) {
if (token.startsWith("$$")) {
return "$$";
}
if (token.startsWith("X'")) {
return "X'";
}
return null;
}

@Override
protected String computeAlternateCloseQuote(String openQuote) {
if (openQuote.equals("X'")) {
return "'";
}
return openQuote;
}
}
Expand Up @@ -15,6 +15,9 @@
*/
package org.flywaydb.core.internal.dbsupport;

import org.flywaydb.core.internal.dbsupport.db2.DB2SqlStatementBuilder;
import org.flywaydb.core.internal.dbsupport.db2zos.DB2zosSqlStatementBuilder;
import org.flywaydb.core.internal.dbsupport.derby.DerbySqlStatementBuilder;
import org.flywaydb.core.internal.dbsupport.h2.H2SqlStatementBuilder;
import org.flywaydb.core.internal.dbsupport.oracle.OracleSqlStatementBuilder;
import org.flywaydb.core.internal.dbsupport.postgresql.PostgreSQLSqlStatementBuilder;
Expand Down Expand Up @@ -128,6 +131,30 @@ public void oracleEndsWithOpenMultilineStringLiteralNoSpace() {
assertFalse(endsWithOpenMultilineStringLiteral(new OracleSqlStatementBuilder(), "SELECT' 'FROM DUAL;"));
}

@Test
public void db2EndsWithOpenMultilineStringLiteral() {
assertFalse(endsWithOpenMultilineStringLiteral(new DB2SqlStatementBuilder(), "SELECT' 'FROM DUAL;"));
assertFalse(endsWithOpenMultilineStringLiteral(new DB2SqlStatementBuilder(), "SELECT '123' FROM DUAL;"));
assertFalse(endsWithOpenMultilineStringLiteral(new DB2SqlStatementBuilder(), "SELECT X'0123' FROM DUAL;"));
assertFalse(endsWithOpenMultilineStringLiteral(new DB2SqlStatementBuilder(), "SELECT X'0123',X'0456' FROM DUAL;"));
}

@Test
public void db2zosEndsWithOpenMultilineStringLiteral() {
assertFalse(endsWithOpenMultilineStringLiteral(new DB2zosSqlStatementBuilder(), "SELECT' 'FROM DUAL;"));
assertFalse(endsWithOpenMultilineStringLiteral(new DB2zosSqlStatementBuilder(), "SELECT '123' FROM DUAL;"));
assertFalse(endsWithOpenMultilineStringLiteral(new DB2zosSqlStatementBuilder(), "SELECT X'0123' FROM DUAL;"));
assertFalse(endsWithOpenMultilineStringLiteral(new DB2zosSqlStatementBuilder(), "SELECT X'0123',X'0456' FROM DUAL;"));
}

@Test
public void derbyEndsWithOpenMultilineStringLiteral() {
assertFalse(endsWithOpenMultilineStringLiteral(new DerbySqlStatementBuilder(), "SELECT' 'FROM DUAL;"));
assertFalse(endsWithOpenMultilineStringLiteral(new DerbySqlStatementBuilder(), "SELECT '123' FROM DUAL;"));
assertFalse(endsWithOpenMultilineStringLiteral(new DerbySqlStatementBuilder(), "SELECT X'0123' FROM DUAL;"));
assertFalse(endsWithOpenMultilineStringLiteral(new DerbySqlStatementBuilder(), "SELECT X'0123',X'0456' FROM DUAL;"));
}

@Test
public void stripDelimiter() {
StringBuilder sql = new StringBuilder("SELECT * FROM t WHERE a = 'Straßenpaß';");
Expand Down