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

Templating for PostgresDDLGenerator #187

Merged
merged 2 commits into from
Jul 6, 2023
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions ddl/src/main/resources/templates/postgres/column/add.sqlt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[# th:if="${schemaName} == null or ${schemaName} == ''"]
ALTER TABLE "[(${tableName})]" ADD COLUMN [(${columnDefinition})];
[/]
[# th:if="${schemaName} != null and ${schemaName} != ''"]
ALTER TABLE "[(${schemaName})]"."[(${tableName})]" ADD COLUMN [(${columnDefinition})];
[/]
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[# th:if="${schemaName} == null or ${schemaName} == ''"]
ALTER TABLE "[(${tableName})]" ALTER COLUMN "[(${columnName})]" [(${nullDefinition})];
[/]
[# th:if="${schemaName} != null and ${schemaName} != ''"]
ALTER TABLE "[(${schemaName})]"."[(${tableName})]" ALTER COLUMN "[(${columnName})]" [(${nullDefinition})];
[/]
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[# th:if="${schemaName} == null or ${schemaName} == ''"]
ALTER TABLE "[(${tableName})]" ALTER COLUMN "[(${columnName})]" SET DATA TYPE [(${dataType})];
[/]
[# th:if="${schemaName} != null and ${schemaName} != ''"]
ALTER TABLE "[(${schemaName})]"."[(${tableName})]" ALTER COLUMN "[(${columnName})]" SET DATA TYPE [(${dataType})];
[/]
6 changes: 6 additions & 0 deletions ddl/src/main/resources/templates/postgres/column/drop.sqlt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[# th:if="${schemaName} == null or ${schemaName} == ''"]
ALTER TABLE "[(${tableName})]" DROP COLUMN "[(${columnName})]";
[/]
[# th:if="${schemaName} != null and ${schemaName} != ''"]
ALTER TABLE "[(${schemaName})]"."[(${tableName})]" DROP COLUMN "[(${columnName})]";
[/]
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[# th:if="${schemaName} != null and ${schemaName} != ''"]
ALTER TABLE "[(${schemaName})]"."[(${tableName})]" ADD CONSTRAINT [(${foreignkeyName})] FOREIGN KEY ("[(${foreignkeyColumn})]") REFERENCES "[(${schemaName})]"."[(${primaryTableName})]"("[(${foreignKeyPrimaryColumnName})]") [(${deleteRule})];
[/]
[# th:if="${schemaName} == null or ${schemaName} == ''"]
ALTER TABLE "[(${tableName})]" ADD CONSTRAINT [(${foreignkeyName})] FOREIGN KEY ("[(${foreignkeyColumn})]") REFERENCES "[(${primaryTableName})]"("[(${foreignKeyPrimaryColumnName})]") [(${deleteRule})];
[/]
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[# th:if="${schemaName} != null and ${schemaName} != ''"]
ALTER TABLE "[(${schemaName})]"."[(${tableName})]" DROP CONSTRAINT "[(${foreignkeyName})]";
[/]
[# th:if="${schemaName} == null or ${schemaName} == ''"]
ALTER TABLE "[(${tableName})]" DROP CONSTRAINT "[(${foreignkeyName})]";
[/]
3 changes: 3 additions & 0 deletions ddl/src/main/resources/templates/postgres/schema/create.sqlt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[# th:if="${schemaName} != null and ${schemaName} != ''"]
CREATE SCHEMA IF NOT EXISTS "[[(${schemaName})]]";
[/]
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[# th:if="${schemaName} == null or ${schemaName} == ''"]
ALTER TABLE "[(${tableName})]" ADD [(${primaryKeyDefinition})];
[/]
[# th:if="${schemaName} != null and ${schemaName} != ''"]
ALTER TABLE "[(${schemaName})]"."[(${tableName})]" ADD [(${primaryKeyDefinition})];
[/]
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[# th:if="${schemaName} == null or ${schemaName} == ''"]
ALTER TABLE "[(${tableName})]" DROP CONSTRAINT "[(${tableName})]_pkey";
[/]
[# th:if="${schemaName} != null and ${schemaName} != ''"]
ALTER TABLE "[(${schemaName})]"."[(${tableName})]" DROP CONSTRAINT "[(${tableName})]_pkey";
[/]
6 changes: 6 additions & 0 deletions ddl/src/main/resources/templates/postgres/table/create.sqlt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[# th:if="${schemaName} == null or ${schemaName} == ''"]
CREATE TABLE "[(${tableName})]"([(${tableCode})]);
[/]
[# th:if="${schemaName} != null and ${schemaName} != ''"]
CREATE TABLE "[(${schemaName})]"."[(${tableName})]"([(${tableCode})]);
[/]
6 changes: 6 additions & 0 deletions ddl/src/main/resources/templates/postgres/table/drop.sqlt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[# th:if="${schemaName} == null or ${schemaName} == ''"]
DROP TABLE IF EXISTS "[(${tableName})]";
[/]
[# th:if="${schemaName} != null and ${schemaName} != ''"]
DROP TABLE IF EXISTS "[(${schemaName})]"."[(${tableName})]";
[/]
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@

import com.adaptivescale.rosetta.common.models.Database;
import com.adaptivescale.rosetta.ddl.change.*;
import com.adaptivescale.rosetta.ddl.change.comparator.MysqlForeignKeyChangeComparator;
import com.adaptivescale.rosetta.ddl.change.comparator.PostgresForeignKeyChangeComparator;
import com.adaptivescale.rosetta.ddl.change.model.Change;
import com.adaptivescale.rosetta.ddl.targets.mysql.MySqlDDLGenerator;
import com.adaptivescale.rosetta.ddl.targets.postgres.PostgresDDLGenerator;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
Expand All @@ -22,163 +20,161 @@ public class PostgresDDLTest {
@Test
public void createDB() throws IOException {
String ddl = generateDDL("clean_database");
Assertions.assertEquals("CREATE SCHEMA IF NOT EXISTS \"ROSETTA\";\r" +
"CREATE TABLE \"ROSETTA\".\"PLAYER\"(\"Name\" VARCHAR(100), \"Position\" VARCHAR(100), \"Number\" NUMBER NOT NULL );\r" +
Assertions.assertEquals("CREATE SCHEMA IF NOT EXISTS \"ROSETTA\";\n" +
"CREATE TABLE \"ROSETTA\".\"PLAYER\"(\"Name\" VARCHAR(100), \"Position\" VARCHAR(100), \"Number\" NUMBER NOT NULL );\n" +
"\r" +
"CREATE TABLE \"ROSETTA\".\"USER\"(\"USER_ID\" NUMBER NOT NULL , PRIMARY KEY (\"USER_ID\"));", ddl);
"CREATE TABLE \"ROSETTA\".\"USER\"(\"USER_ID\" NUMBER NOT NULL , PRIMARY KEY (\"USER_ID\"));\n" +
"\r", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void addTable() throws IOException {
String ddl = generateDDL("add_table");
Assertions.assertEquals("\rCREATE TABLE \"Position\"(\"ID\" DECIMAL(10) NOT NULL , \"DESCRIPTION\" VARCHAR, \"Name\" VARCHAR, \"TEAMID\" DECIMAL(10), PRIMARY KEY (\"ID\"));\r" +
"\rCREATE TABLE \"Position2\"(\"ID\" DECIMAL(10) NOT NULL , \"DESCRIPTION\" VARCHAR, \"Name\" VARCHAR, \"TEAMID\" DECIMAL(10), PRIMARY KEY (\"ID\"));\r" +
"ALTER TABLE \"Position\" ADD CONSTRAINT Position_FK_TEAM FOREIGN KEY (\"TEAMID\") REFERENCES \"TEAM\"(\"ID\");\r" +
"\r" +
"ALTER TABLE \"Position2\" ADD CONSTRAINT Position2_FK_TEAM FOREIGN KEY (\"TEAMID\") REFERENCES \"TEAM\"(\"ID\");\r", ddl);
Assertions.assertEquals("CREATE TABLE \"Position\"(\"ID\" DECIMAL(10) NOT NULL , \"DESCRIPTION\" VARCHAR, \"Name\" VARCHAR, \"TEAMID\" DECIMAL(10), PRIMARY KEY (\"ID\"));\n" +
"\rCREATE TABLE \"Position2\"(\"ID\" DECIMAL(10) NOT NULL , \"DESCRIPTION\" VARCHAR, \"Name\" VARCHAR, \"TEAMID\" DECIMAL(10), PRIMARY KEY (\"ID\"));\n" +
"ALTER TABLE \"Position\" ADD CONSTRAINT Position_FK_TEAM FOREIGN KEY (\"TEAMID\") REFERENCES \"TEAM\"(\"ID\") ;\n" +
"ALTER TABLE \"Position2\" ADD CONSTRAINT Position2_FK_TEAM FOREIGN KEY (\"TEAMID\") REFERENCES \"TEAM\"(\"ID\") ;\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void addTable2() throws IOException {
String ddl = generateDDL("add_table2");
Assertions.assertEquals("CREATE SCHEMA IF NOT EXISTS \"new\";\r" +
"CREATE TABLE \"new\".\"Position\"(\"ID\" DECIMAL(10) NOT NULL , \"DESCRIPTION\" VARCHAR," +
" \"Name\" VARCHAR, PRIMARY KEY (\"ID\"));", ddl);
Assertions.assertEquals("CREATE SCHEMA IF NOT EXISTS \"new\";\n" +
"CREATE TABLE \"new\".\"Position\"(\"ID\" DECIMAL(10) NOT NULL , \"DESCRIPTION\" VARCHAR, \"Name\" VARCHAR, PRIMARY KEY (\"ID\"));\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void dropTable() throws IOException {
String ddl = generateDDL("drop_table");
Assertions.assertEquals("DROP TABLE \"TEAMPLAYERS\";", ddl);
Assertions.assertEquals("DROP TABLE IF EXISTS \"TEAMPLAYERS\";\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void addColumn() throws IOException {
String ddl = generateDDL("add_column");
Assertions.assertEquals("ALTER TABLE \"Position\" ADD COLUMN \"DESCRIPTION\" varchar(100);", ddl);
Assertions.assertEquals("ALTER TABLE \"Position\" ADD COLUMN \"DESCRIPTION\" varchar(100);\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void addColumnWithForeignKey() throws IOException {
String ddl = generateDDL("add_column_with_foreign_key");
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ADD COLUMN \"POSITION_ID\" numeric;\r" +
"ALTER TABLE \"FBAL\".\"PLAYER\" ADD CONSTRAINT PLAYER_FK FOREIGN KEY (\"POSITION_ID\") REFERENCES \"FBAL\".\"Position\"(\"ID\") ON DELETE NO ACTION ;\r", ddl);
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ADD COLUMN \"POSITION_ID\" numeric;\n" +
"ALTER TABLE \"FBAL\".\"PLAYER\" ADD CONSTRAINT PLAYER_FK FOREIGN KEY (\"POSITION_ID\") REFERENCES \"FBAL\".\"Position\"(\"ID\") ON DELETE NO ACTION;\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void addColumnAsPrimaryKey() throws IOException {
String ddl = generateDDL("add_column_as_primary_key");
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ADD COLUMN \"ID\" numeric NOT NULL ;\r" +
"ALTER TABLE \"PLAYER\" ADD PRIMARY KEY (\"ID\");", ddl);
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ADD COLUMN \"ID\" numeric NOT NULL ;\n" +
"ALTER TABLE \"PLAYER\" ADD PRIMARY KEY (\"ID\");\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void dropColumn() throws IOException {
String ddl = generateDDL("drop_column");
Assertions.assertEquals("ALTER TABLE \"Position\" DROP COLUMN \"DESCRIPTION\";", ddl);
Assertions.assertEquals("ALTER TABLE \"Position\" DROP COLUMN \"DESCRIPTION\";\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void alterColumnDataType() throws IOException {
String ddl = generateDDL("alter_column_data_type");
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ALTER COLUMN \"name\" TYPE INTEGER, ALTER COLUMN name DROP NOT NULL;", ddl);
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ALTER COLUMN \"name\" SET DATA TYPE INTEGER;\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void alterColumnToNullable() throws IOException {
String ddl = generateDDL("alter_column_to_nullable");
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ALTER COLUMN \"ID\" TYPE numeric, ALTER COLUMN ID DROP NOT NULL;", ddl);
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ALTER COLUMN \"ID\" DROP NOT NULL;\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void alterColumnToNotNullable() throws IOException {
String ddl = generateDDL("alter_column_to_not_nullable");
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ALTER COLUMN \"ID\" TYPE numeric;", ddl);
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ALTER COLUMN \"ID\" SET NOT NULL;\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void dropColumnWithForeignKey() throws IOException {
String ddl = generateDDL("drop_column_with_foreign_key");
Assertions.assertEquals("ALTER TABLE \"FBAL\".\"PLAYER\" DROP CONSTRAINT \"PLAYER_FK\";\r" +
"ALTER TABLE \"FBAL\".\"PLAYER\" DROP COLUMN \"POSITION_ID\";", ddl);
Assertions.assertEquals("ALTER TABLE \"FBAL\".\"PLAYER\" DROP CONSTRAINT \"PLAYER_FK\";\n" +
"ALTER TABLE \"FBAL\".\"PLAYER\" DROP COLUMN \"POSITION_ID\";\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void dropColumnWithPrimaryKeyReferenced() throws IOException {
String ddl = generateDDL("drop_column_with_primary_key_referenced");
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\r" +
"ALTER TABLE \"PLAYER\" DROP COLUMN \"ID\";", ddl);
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\n" +
"ALTER TABLE \"PLAYER\" DROP COLUMN \"ID\";\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void dropTableWhereColumnIsReferenced() throws IOException {
String ddl = generateDDL("drop_table_where_column_is_referenced");
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK_TEAM\";\r" +
"DROP TABLE \"TEAM\";", ddl);
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK_TEAM\";\n" +
"DROP TABLE IF EXISTS \"TEAM\";\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void addForeignKey() throws IOException {
String ddl = generateDDL("add_foreign_key");
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ADD CONSTRAINT PLAYER_FK FOREIGN KEY (\"POSITION_ID\") " +
"REFERENCES \"Position\"(\"ID\") ON DELETE NO ACTION ;\r", ddl);
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ADD CONSTRAINT PLAYER_FK FOREIGN KEY (\"POSITION_ID\") REFERENCES \"Position\"(\"ID\") ON DELETE NO ACTION;\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void dropForeignKey() throws IOException {
String ddl = generateDDL("drop_foreign_key");
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";", ddl);
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void dropPrimaryKey() throws IOException {
String ddl = generateDDL("drop_primary_key");
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\r" +
"ALTER TABLE \"PLAYER\" DROP PRIMARY KEY;", ddl);
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\n" +
"ALTER TABLE \"PLAYER\" DROP CONSTRAINT \"PLAYER_pkey\";\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void addPrimaryKey() throws IOException {
String ddl = generateDDL("add_primary_key");
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ADD PRIMARY KEY (\"ID\");", ddl);
Assertions.assertEquals("ALTER TABLE \"PLAYER\" ADD PRIMARY KEY (\"ID\");\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void alterPrimaryKey() throws IOException {
String ddl = generateDDL("alter_primary_key");
Assertions.assertEquals("\r" +
"ALTER TABLE \"PLAYER\" DROP PRIMARY KEY, ADD PRIMARY KEY (\"ID\", \"POSITION_ID\");\r", ddl);
Assertions.assertEquals("ALTER TABLE \"PLAYER\" DROP CONSTRAINT \"PLAYER_pkey\";\n" +
"ALTER TABLE \"PLAYER\" ADD PRIMARY KEY (\"ID\", \"POSITION_ID\");\n" +
"\r", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void alterForeignKeyName() throws IOException {
String ddl = generateDDL("alter_foreign_key_name");
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\r" +
"ALTER TABLE \"TEAMPLAYERS\" ADD CONSTRAINT TEAMPLAYERS_CHANGED_FK FOREIGN KEY (\"PLAYERID\") REFERENCES " +
"\"PLAYER\"(\"ID\") ON DELETE NO ACTION ;\r", ddl);
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\n" +
"ALTER TABLE \"TEAMPLAYERS\" ADD CONSTRAINT TEAMPLAYERS_CHANGED_FK FOREIGN KEY (\"PLAYERID\") REFERENCES \"PLAYER\"(\"ID\") ON DELETE NO ACTION;\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void alterForeignKey() throws IOException {
String ddl = generateDDL("alter_foreign_key");
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\r" +
"ALTER TABLE \"TEAMPLAYERS\" ADD CONSTRAINT TEAMPLAYERS_FK FOREIGN KEY (\"PLAYERID\") REFERENCES \"PLAYER\"(\"ID\") ON DELETE SET NULL ;\r", ddl);
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\n" +
"ALTER TABLE \"TEAMPLAYERS\" ADD CONSTRAINT TEAMPLAYERS_FK FOREIGN KEY (\"PLAYERID\") REFERENCES \"PLAYER\"(\"ID\") ON DELETE SET NULL;\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void dropPrimaryKeyColumnAndAlterForeignKey() throws IOException {
String ddl = generateDDL("drop_pk_column_and_alter_fk");
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\r" +
"ALTER TABLE \"PLAYER\" DROP COLUMN \"ID\";\r" +
"ALTER TABLE \"TEAMPLAYERS\" ADD CONSTRAINT TEAMPLAYERS_FK FOREIGN KEY (\"PLAYERID\") REFERENCES \"POSITION\"(\"ID\");\r", ddl);
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\n" +
"ALTER TABLE \"PLAYER\" DROP COLUMN \"ID\";\n" +
"ALTER TABLE \"TEAMPLAYERS\" ADD CONSTRAINT TEAMPLAYERS_FK FOREIGN KEY (\"PLAYERID\") REFERENCES \"POSITION\"(\"ID\") ;\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

@Test
public void dropTableWithPrimaryKeyColumnAndAlterForeignKey() throws IOException {
String ddl = generateDDL("drop_table_with_pk_column_and_alter_fk");
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\r" +
"DROP TABLE \"PLAYER\";\r" +
"ALTER TABLE \"TEAMPLAYERS\" ADD CONSTRAINT TEAMPLAYERS_FK FOREIGN KEY (\"PLAYERID\") REFERENCES \"POSITION\"(\"ID\");\r", ddl);
Assertions.assertEquals("ALTER TABLE \"TEAMPLAYERS\" DROP CONSTRAINT \"TEAMPLAYERS_FK\";\n" +
"DROP TABLE IF EXISTS \"PLAYER\";\n" +
"ALTER TABLE \"TEAMPLAYERS\" ADD CONSTRAINT TEAMPLAYERS_FK FOREIGN KEY (\"PLAYERID\") REFERENCES \"POSITION\"(\"ID\") ;\n", ddl.replaceAll("(?m)^[ \t]*\r?\n", ""));
}

private String generateDDL(String testType) throws IOException {
Expand Down