diff --git a/src/main/java/com/tacitknowledge/util/migration/jdbc/SqlScriptMigrationTask.java b/src/main/java/com/tacitknowledge/util/migration/jdbc/SqlScriptMigrationTask.java index e778235..262e066 100644 --- a/src/main/java/com/tacitknowledge/util/migration/jdbc/SqlScriptMigrationTask.java +++ b/src/main/java/com/tacitknowledge/util/migration/jdbc/SqlScriptMigrationTask.java @@ -265,7 +265,9 @@ public List getSqlStatements(JdbcMigrationContext context, String sqlStatements) case '-': case '/': if (!inQuotedString && i + 1 < sqlChars.length - && sqlChars[i + 1] == sqlChars[i]) + && sqlChars[i + 1] == sqlChars[i] + && !isStoredProcedure(context.getDatabaseType().getDatabaseType(), + currentStatement.toString())) { inComment = true; } diff --git a/src/test/java/com/tacitknowledge/util/migration/jdbc/SqlScriptMigrationTaskTest.java b/src/test/java/com/tacitknowledge/util/migration/jdbc/SqlScriptMigrationTaskTest.java index 9dc83b8..d58be53 100644 --- a/src/test/java/com/tacitknowledge/util/migration/jdbc/SqlScriptMigrationTaskTest.java +++ b/src/test/java/com/tacitknowledge/util/migration/jdbc/SqlScriptMigrationTaskTest.java @@ -327,4 +327,23 @@ public void testSybasePatchesCommitsOnEveryStatement() throws IOException, connectionControl.verify(); } + /** + * Tests that comments in stored procedures aren't stripped + * + * @throws IOException + * if an unexpected error occurs. + */ + public void testCommentsPreservedInStoredProcedures() throws IOException + { + InputStream is = getClass().getResourceAsStream("test/stored_procedure.sql"); + assertNotNull(is); + task = new SqlScriptMigrationTask("stored_procedure.sql", 1, is); + + MockDatabaseType dbType = new MockDatabaseType("mysql"); + dbType.setMultipleStatementsSupported(false); + context.setDatabaseType(dbType); + List statements = task.getSqlStatements(context); + assertEquals(1, statements.size()); + assertTrue(statements.get(0).toString().contains("-- test comment")); + } } diff --git a/src/test/resources/com/tacitknowledge/util/migration/jdbc/test/stored_procedure.sql b/src/test/resources/com/tacitknowledge/util/migration/jdbc/test/stored_procedure.sql new file mode 100644 index 0000000..88f910d --- /dev/null +++ b/src/test/resources/com/tacitknowledge/util/migration/jdbc/test/stored_procedure.sql @@ -0,0 +1,6 @@ +CREATE PROCEDURE TEST_PROC() +BEGIN + DECLARE V_TEST INTEGER; + -- test comment + SELECT C1 INTO V_TEST FROM(VALUES(0)); +END