Skip to content

Commit 3470c6a

Browse files
committed
issue 2979 use explicit list of tables when dropping
Signed-off-by: Robin Arnold <robin.arnold@ibm.com>
1 parent f7d50cc commit 3470c6a

2 files changed

Lines changed: 22 additions & 6 deletions

File tree

fhir-persistence-schema/src/main/java/com/ibm/fhir/schema/control/MigrateV0021AbstractTypeRemoval.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public class MigrateV0021AbstractTypeRemoval implements IDatabaseStatement {
3636
private static final Logger LOG = Logger.getLogger(MigrateV0021AbstractTypeRemoval.class.getName());
3737

3838
private static final List<String> VALUE_TYPES = Arrays.asList(
39+
"COMPOSITES",
40+
"TOKEN_VALUES",
3941
"RESOURCE_TOKEN_REFS",
4042
"DATE_VALUES",
4143
"LATLNG_VALUES",
@@ -116,16 +118,25 @@ private void checkShouldThrowException() {
116118
*/
117119
private void cleanupHistory(IDatabaseTranslator translator, Connection c) {
118120
// Clean up the Tables and Views and Index for the DomainResource and Resource Table Group.
121+
StringBuilder objectNameInList = new StringBuilder();
122+
123+
// It's OK to use literals here because the DEPRECATED_TABLES list is fixed in code
124+
for (String objectName: UnusedTableRemovalNeedsV0021Migration.DEPRECATED_TABLES) {
125+
if (objectNameInList.length() > 0) {
126+
objectNameInList.append(", ");
127+
}
128+
objectNameInList.append("'");
129+
objectNameInList.append(objectName);
130+
objectNameInList.append("'");
131+
}
119132
final String sql =
120133
"DELETE FROM FHIR_ADMIN.VERSION_HISTORY"
121-
+ " WHERE (OBJECT_NAME LIKE 'DOMAINRESOURCE_%'"
122-
+ " OR OBJECT_NAME LIKE 'RESOURCE_%')"
123-
+ " AND SCHEMA_NAME = ? "
124-
+ " AND OBJECT_NAME NOT IN ('RESOURCE_TYPES', 'RESOURCE_CHANGE_LOG', 'RESOURCE_TOKEN_REFS')";
134+
+ " WHERE SCHEMA_NAME = ? "
135+
+ " AND OBJECT_NAME IN (" + objectNameInList.toString() + ")";
125136
try (PreparedStatement ps = c.prepareStatement(sql)) {
126137
ps.setString(1, schemaName);
127138
int vhsChanged = ps.executeUpdate();
128-
LOG.info("VersionHistoryServce: removed =[" + vhsChanged + "]");
139+
LOG.info("VersionHistoryService: removed =[" + vhsChanged + "]");
129140
} catch (SQLException x) {
130141
throw translator.translate(x);
131142
}

fhir-persistence-schema/src/main/java/com/ibm/fhir/schema/control/UnusedTableRemovalNeedsV0021Migration.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class UnusedTableRemovalNeedsV0021Migration implements IDatabaseSupplier<
2626
public static final List<String> DEPRECATED_TABLES =
2727
Arrays.asList(
2828
// DOMAINRESOURCE
29+
"DOMAINRESOURCE_COMPOSITES",
2930
"DOMAINRESOURCE_DATE_VALUES",
3031
"DOMAINRESOURCE_LATLNG_VALUES",
3132
"DOMAINRESOURCE_LOGICAL_RESOURCES",
@@ -37,7 +38,9 @@ public class UnusedTableRemovalNeedsV0021Migration implements IDatabaseSupplier<
3738
"DOMAINRESOURCE_SECURITY",
3839
"DOMAINRESOURCE_STR_VALUES",
3940
"DOMAINRESOURCE_TAGS",
41+
"DOMAINRESOURCE_TOKEN_VALUES",
4042
// RESOURCE
43+
"RESOURCE_COMPOSITES",
4144
"RESOURCE_DATE_VALUES",
4245
"RESOURCE_LATLNG_VALUES",
4346
"RESOURCE_LOGICAL_RESOURCES",
@@ -48,7 +51,9 @@ public class UnusedTableRemovalNeedsV0021Migration implements IDatabaseSupplier<
4851
"RESOURCE_RESOURCES",
4952
"RESOURCE_SECURITY",
5053
"RESOURCE_STR_VALUES",
51-
"RESOURCE_TAGS");
54+
"RESOURCE_TAGS",
55+
"RESOURCE_TOKEN_VALUES"
56+
);
5257

5358
// Table Count
5459
public static final int TABLE_COUNT = DEPRECATED_TABLES.size();

0 commit comments

Comments
 (0)