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 DB2 integration tests DAT-13113 #4293

Merged
merged 12 commits into from
Oct 20, 2023
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ jobs:
fail-fast: false
matrix:
testSystem:
- db2
- h2
#- h2:1.4
- hsqldb
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,10 @@ public DB2TestSystem(Definition definition) {
.withUsername(getUsername())
.withPassword(getPassword())
.withDatabaseName(getCatalog())
.acceptLicense()
.withUrlParam("retrieveMessagesFromServerOnGetMessage", "true"),
this
) {
@Override
public Runnable requireLicense() {
return ((Db2Container) this.getContainer())::acceptLicense;
}
};
);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import liquibase.configuration.LiquibaseConfiguration;
import liquibase.exception.UnexpectedLiquibaseException;
import liquibase.extension.testing.testsystem.TestSystem;
import liquibase.extension.testing.testsystem.core.DB2TestSystem;
import liquibase.util.CollectionUtil;
import liquibase.util.StringUtil;
import org.testcontainers.containers.JdbcDatabaseContainer;
Expand Down Expand Up @@ -58,7 +59,7 @@ public void start() throws Exception {

container.withReuse(testSystem.getKeepRunning());

if (testSystem.getKeepRunning()) {
if (testSystem.getKeepRunning() && !(testSystem instanceof DB2TestSystem)) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@abrackx in fact the entire fix is here.

mapPorts(container);
}

Expand Down
filipelautert marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,18 @@
<loadData tableName="csvdata" file="changelogs/sample.data1.csv.gz"/>
</changeSet>

<changeSet id="createTableNamedPKRef" author="nvoxland">
<changeSet id="createTableNamedPKRef" author="nvoxland" dbms="db2">
<createTable tableName="createtablenamedpkref">
<column name="id" type="int">
<constraints primaryKey="true"/>
</column>
<column name="referee" type="int">
<constraints foreignKeyName="FK_REFTEST" references="CREATETABLENAMEDPK(id)"/>
</column>
</createTable>
</changeSet>

<changeSet id="createTableNamedPKRef" author="nvoxland" dbms="!db2">
<createTable tableName="createtablenamedpkref">
<column name="id" type="int">
<constraints primaryKey="true"/>
Expand Down Expand Up @@ -634,7 +645,13 @@
</preConditions>
</changeSet>

<changeSet id="fkExistsPrecondition" author="nvoxland">
<changeSet id="fkExistsPrecondition" author="nvoxland" dbms="db2">
<preConditions>
<foreignKeyConstraintExists foreignKeyTableName="CREATETABLENAMEDPKREF" foreignKeyName="FK_REFTEST"/>
</preConditions>
</changeSet>

<changeSet id="fkExistsPrecondition" author="nvoxland" dbms="!db2">
<preConditions>
<foreignKeyConstraintExists foreignKeyTableName="createtablenamedpkref" foreignKeyName="fk_reftest"/>
</preConditions>
Expand Down Expand Up @@ -715,7 +732,13 @@
</addColumn>
</changeSet>

<changeSet id="addColWithFK-checkConstraint" author="nvoxland">
<changeSet id="addColWithFK-checkConstraint" author="nvoxland" dbms="db2">
<preConditions onFailMessage="I couldn't find the FK set in addColWithFK">
<foreignKeyConstraintExists foreignKeyName="FK_TEST_FK_ADDCOL" foreignKeyTableName="COMMATEST"/>
</preConditions>
</changeSet>

<changeSet id="addColWithFK-checkConstraint" author="nvoxland" dbms="!db2">
<preConditions onFailMessage="I couldn't find the FK set in addColWithFK">
<foreignKeyConstraintExists foreignKeyName="fk_test_fk_addCol" foreignKeyTableName="commatest"/>
</preConditions>
Expand Down Expand Up @@ -1138,10 +1161,10 @@
<output target="stderr">Message using stderr target</output>
</changeSet>

<changeSet id="fkexists-without-table-setup" author="example">
<changeSet id="fkexists-without-table-setup" author="example" dbms="db2">
<sql>
CREATE TABLE fkexists_table1 (
id INT PRIMARY KEY
id INT PRIMARY KEY NOT NULL
)
</sql>
<sql>
Expand All @@ -1162,7 +1185,44 @@
</sql>
</rollback>
</changeSet>
<changeSet author="example" id="fkexists-without-table-check">
<changeSet id="fkexists-without-table-setup" author="example" dbms="!db2">
<sql>
CREATE TABLE fkexists_table1 (
id INT PRIMARY KEY
)
</sql>
<sql>
CREATE TABLE fkexists_table2 (
id INT,
id2 INT,
CONSTRAINT fkexists_1
FOREIGN KEY (id)
REFERENCES fkexists_table1 (id)
)
</sql>
<rollback>
<sql>
DROP TABLE fkexists_table1
</sql>
<sql>
DROP TABLE fkexists_table2
</sql>
</rollback>
</changeSet>

<changeSet author="example" id="fkexists-without-table-check" dbms="db2">
<preConditions>
<foreignKeyConstraintExists foreignKeyName="FKEXISTS_1"/>
<not>
<foreignKeyConstraintExists foreignKeyName="FKEXISTS_2"/>
</not>
</preConditions>
<addForeignKeyConstraint baseColumnNames="id2" baseTableName="fkexists_table2"
constraintName="fkexists_2"
referencedColumnNames="id" referencedTableName="fkexists_table1"/>
</changeSet>

<changeSet author="example" id="fkexists-without-table-check" dbms="!db2">
<preConditions>
<foreignKeyConstraintExists foreignKeyName="fkexists_1"/>
<not>
Expand All @@ -1173,14 +1233,22 @@
constraintName="fkexists_2"
referencedColumnNames="id" referencedTableName="fkexists_table1"/>
</changeSet>
<changeSet author="example" id="fkexists-without-table-check2">

<changeSet author="example" id="fkexists-without-table-check2" dbms="db2">
<preConditions>
<foreignKeyConstraintExists foreignKeyName="FKEXISTS_1"/>
<foreignKeyConstraintExists foreignKeyName="FKEXISTS_2"/>
</preConditions>
</changeSet>

<changeSet author="example" id="fkexists-without-table-check2" dbms="!db2">
<preConditions>
<foreignKeyConstraintExists foreignKeyName="fkexists_1"/>
<foreignKeyConstraintExists foreignKeyName="fkexists_2"/>
</preConditions>
</changeSet>

<changeSet id="example" author="view-if-exists" dbms="!oracle,!firebird">
<changeSet id="example" author="view-if-exists" dbms="!oracle,!firebird,!db2">
<dropView viewName="does_not_exist" ifExists="true"/>
</changeSet>

Expand Down Expand Up @@ -1214,7 +1282,7 @@
<column name="other_col" type="varchar(100)"/>
</loadUpdateData>
</changeSet>
<changeSet id="addColumn" author="kiran" dbms="!oracle, !mssql, !firebird">
<changeSet id="addColumn" author="kiran" dbms="!oracle, !mssql, !firebird, !db2">
<addColumn tableName="my_table">
<column name="new_column" type="varchar(50)" afterColumn="test_col">
</column>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

<changeSet id="2" author="nvoxland">
<addColumn tableName="magazine">
<column name="sku" type="varchar(50)" defaultValue="UNKNOWN">
<column name="sku" type="varchar(50)">
<constraints nullable="true"/>
</column>
</addColumn>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package liquibase.sqlgenerator.core;

import liquibase.database.Database;
import liquibase.database.core.FirebirdDatabase;
import liquibase.database.core.HsqlDatabase;
import liquibase.database.core.MySQLDatabase;
import liquibase.database.core.OracleDatabase;
import liquibase.database.core.*;
import liquibase.exception.ValidationErrors;
import liquibase.sql.Sql;
import liquibase.sql.UnparsedSql;
Expand Down Expand Up @@ -38,6 +35,8 @@ protected String generateCountSql(TableIsEmptyStatement statement, Database data
return String.format("SELECT COUNT(1) FROM DUAL WHERE EXISTS (SELECT * FROM %s)", tableName);
} else if (database instanceof FirebirdDatabase) {
return String.format("SELECT COUNT(1) FROM RDB$DATABASE WHERE EXISTS (SELECT * FROM %s)", tableName);
} else if (database instanceof DB2Database) {
return String.format("SELECT COUNT(1) FROM sysibm.sysdummy1 WHERE EXISTS (SELECT * FROM %s)", tableName);
}
return String.format("SELECT COUNT(1) WHERE EXISTS (SELECT * FROM %s)", tableName);
}
Expand Down