Correct index init issue (#2662)
* Correct index init issue * Add changelog
This commit is contained in:
parent
926bf393d3
commit
7a50454350
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
type: add
|
||||
issue: 2662
|
||||
title: "It is now possible to declare database migrations as being mandatory even
|
||||
when running in schema initialization mode."
|
|
@ -89,7 +89,7 @@ public class FlywayMigrationTask implements JavaMigration {
|
|||
}
|
||||
|
||||
private void executeTask() throws SQLException {
|
||||
if (myFlywayMigrator.isSchemaWasInitialized() && !(myTask instanceof InitializeSchemaTask)) {
|
||||
if (myFlywayMigrator.isSchemaWasInitialized() && !myTask.isRunDuringSchemaInitialization()) {
|
||||
// Empty schema was initialized, stub out this non-schema-init task since we're starting with a fully migrated schema
|
||||
myTask.setDoNothing(true);
|
||||
}
|
||||
|
|
|
@ -58,11 +58,26 @@ public abstract class BaseTask {
|
|||
private Set<DriverTypeEnum> myOnlyAppliesToPlatforms = new HashSet<>();
|
||||
private boolean myNoColumnShrink;
|
||||
private boolean myFailureAllowed;
|
||||
private boolean myRunDuringSchemaInitialization;
|
||||
|
||||
protected BaseTask(String theProductVersion, String theSchemaVersion) {
|
||||
myProductVersion = theProductVersion;
|
||||
mySchemaVersion = theSchemaVersion;
|
||||
}
|
||||
|
||||
public boolean isRunDuringSchemaInitialization() {
|
||||
return myRunDuringSchemaInitialization;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should this task run even if we're doing the very first initialization of an empty schema. By
|
||||
* default we skip most tasks during that pass, since they just take up time and the
|
||||
* schema should be fully initialized by the {@link InitializeSchemaTask}
|
||||
*/
|
||||
public void setRunDuringSchemaInitialization(boolean theRunDuringSchemaInitialization) {
|
||||
myRunDuringSchemaInitialization = theRunDuringSchemaInitialization;
|
||||
}
|
||||
|
||||
public void setOnlyAppliesToPlatforms(Set<DriverTypeEnum> theOnlyAppliesToPlatforms) {
|
||||
Validate.notNull(theOnlyAppliesToPlatforms);
|
||||
myOnlyAppliesToPlatforms = theOnlyAppliesToPlatforms;
|
||||
|
|
|
@ -33,9 +33,8 @@ import java.util.List;
|
|||
import java.util.Set;
|
||||
|
||||
public class InitializeSchemaTask extends BaseTask {
|
||||
private static final Logger ourLog = LoggerFactory.getLogger(InitializeSchemaTask.class);
|
||||
public static final String DESCRIPTION_PREFIX = "Initialize schema for ";
|
||||
|
||||
private static final Logger ourLog = LoggerFactory.getLogger(InitializeSchemaTask.class);
|
||||
private final ISchemaInitializationProvider mySchemaInitializationProvider;
|
||||
private boolean myInitializedSchema;
|
||||
|
||||
|
@ -45,6 +44,11 @@ public class InitializeSchemaTask extends BaseTask {
|
|||
setDescription(DESCRIPTION_PREFIX + mySchemaInitializationProvider.getSchemaDescription());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRunDuringSchemaInitialization() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void validate() {
|
||||
// nothing
|
||||
|
|
|
@ -83,8 +83,8 @@ public class HapiFhirJpaMigrationTasks extends BaseMigrationTasks<VersionEnum> {
|
|||
|
||||
// For MSSQL only - Replace ForcedId index with a version that has an INCLUDE clause
|
||||
Builder.BuilderWithTableName forcedId = version.onTable("HFJ_FORCED_ID");
|
||||
forcedId.dropIndex("20210516.1", "IDX_FORCEDID_TYPE_FID").onlyAppliesToPlatforms(DriverTypeEnum.MSSQL_2012);
|
||||
forcedId.addIndex("20210516.2", "IDX_FORCEDID_TYPE_FID").unique(true).includeColumns("RESOURCE_PID").withColumns("RESOURCE_TYPE", "FORCED_ID").onlyAppliesToPlatforms(DriverTypeEnum.MSSQL_2012);
|
||||
forcedId.dropIndex("20210516.1", "IDX_FORCEDID_TYPE_FID").onlyAppliesToPlatforms(DriverTypeEnum.MSSQL_2012).runEvenDuringSchemaInitialization();
|
||||
forcedId.addIndex("20210516.2", "IDX_FORCEDID_TYPE_FID").unique(true).includeColumns("RESOURCE_PID").withColumns("RESOURCE_TYPE", "FORCED_ID").onlyAppliesToPlatforms(DriverTypeEnum.MSSQL_2012).runEvenDuringSchemaInitialization();
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -504,6 +504,10 @@ public class Builder {
|
|||
return this;
|
||||
}
|
||||
|
||||
public BuilderCompleteTask runEvenDuringSchemaInitialization() {
|
||||
myTask.setRunDuringSchemaInitialization(true);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue