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

fhir-persistence-schema CLI drop schema gives an error #2758 #2775

Merged
merged 6 commits into from
Sep 20, 2021
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
2 changes: 1 addition & 1 deletion build/docker/minio/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# SPDX-License-Identifier: Apache-2.0
# ----------------------------------------------------------------------------

FROM minio/minio
FROM minio/minio:RELEASE.2021-08-31T05-46-54Z

# Indicate that we expect to connect to the minio service on port 9000
EXPOSE 9000
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -480,11 +480,21 @@ protected void dropSchema() {
// which is apparently related to max_locks_per_transaction. It may not be possible
// to increase this value (e.g. in cloud databases) and so to work around this, before
// dropping the schema objects, we knock out all the FOREIGN KEY constraints first.
if (dropFhirSchema || dropOauthSchema || dropJavaBatchSchema) {
if (dropFhirSchema) {
logger.info("Dropping FK constraints in the data schema: " + this.schema.getSchemaName());
dropForeignKeyConstraints(pdm, FhirSchemaGenerator.SCHEMA_GROUP_TAG, FhirSchemaGenerator.FHIRDATA_GROUP);
}

if (dropOauthSchema) {
logger.info("Dropping FK constraints in the OAuth schema: " + this.schema.getOauthSchemaName());
dropForeignKeyConstraints(pdm, FhirSchemaGenerator.SCHEMA_GROUP_TAG, OAuthSchemaGenerator.OAUTH_GROUP);
}

if (dropJavaBatchSchema) {
logger.info("Dropping FK constraints in the Batch schema: " + this.schema.getJavaBatchSchemaName());
dropForeignKeyConstraints(pdm, FhirSchemaGenerator.SCHEMA_GROUP_TAG, JavaBatchSchemaGenerator.BATCH_GROUP);
}

if (dropAdmin) {
// Also drop the FK constraints within the administration schema
logger.info("Dropping FK constraints in the admin schema: " + this.schema.getAdminSchemaName());
Expand All @@ -502,6 +512,16 @@ protected void dropSchema() {
pdm.drop(adapter, FhirSchemaGenerator.SCHEMA_GROUP_TAG, FhirSchemaGenerator.FHIRDATA_GROUP);
}

if (dropOauthSchema) {
// Just drop the objects associated with the OAUTH schema group
pdm.drop(adapter, FhirSchemaGenerator.SCHEMA_GROUP_TAG, OAuthSchemaGenerator.OAUTH_GROUP);
}

if (dropJavaBatchSchema) {
// Just drop the objects associated with the BATCH schema group
pdm.drop(adapter, FhirSchemaGenerator.SCHEMA_GROUP_TAG, JavaBatchSchemaGenerator.BATCH_GROUP);
}

if (dropAdmin) {
// Just drop the objects associated with the ADMIN schema group
pdm.drop(adapter, FhirSchemaGenerator.SCHEMA_GROUP_TAG, FhirSchemaGenerator.ADMIN_GROUP);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,8 @@ public void addResources(List<IDatabaseObject> group, String prefix) {
})
.build(model);

tbl.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, FhirSchemaGenerator.FHIRDATA_GROUP);

group.add(tbl);
model.addTable(tbl);

Expand All @@ -366,6 +368,9 @@ public void addResources(List<IDatabaseObject> group, String prefix) {
.addColumn(LAST_UPDATED)
.build();
idxLastUpdated.addDependency(tbl); // dependency to the table on which the index applies

idxLastUpdated.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, FhirSchemaGenerator.FHIRDATA_GROUP);

group.add(idxLastUpdated);

}
Expand Down Expand Up @@ -538,6 +543,8 @@ public Table addResourceTokenRefs(List<IDatabaseObject> group, String prefix) {
})
.build(model);

tbl.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, FhirSchemaGenerator.FHIRDATA_GROUP);

group.add(tbl);
model.addTable(tbl);

Expand Down Expand Up @@ -580,6 +587,8 @@ public Table addProfiles(List<IDatabaseObject> group, String prefix) {
})
.build(model);

tbl.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, FhirSchemaGenerator.FHIRDATA_GROUP);

group.add(tbl);
model.addTable(tbl);

Expand Down Expand Up @@ -621,6 +630,8 @@ public Table addTags(List<IDatabaseObject> group, String prefix) {
})
.build(model);

tbl.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, FhirSchemaGenerator.FHIRDATA_GROUP);

group.add(tbl);
model.addTable(tbl);

Expand Down Expand Up @@ -659,6 +670,8 @@ public Table addSecurity(List<IDatabaseObject> group, String prefix) {
})
.build(model);

tbl.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, FhirSchemaGenerator.FHIRDATA_GROUP);

group.add(tbl);
model.addTable(tbl);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,9 @@ public Table addLogicalResourceTags(PhysicalDataModel pdm) {
})
.build(pdm);

tbl.addTag(SCHEMA_GROUP_TAG, FHIRDATA_GROUP);
this.procedureDependencies.add(tbl);

pdm.addTable(tbl);
pdm.addObject(tbl);
prb112 marked this conversation as resolved.
Show resolved Hide resolved

Expand Down Expand Up @@ -754,6 +757,9 @@ public Table addLogicalResourceSecurity(PhysicalDataModel pdm) {
})
.build(pdm);

tbl.addTag(SCHEMA_GROUP_TAG, FHIRDATA_GROUP);
this.procedureDependencies.add(tbl);

pdm.addTable(tbl);
pdm.addObject(tbl);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* (C) Copyright IBM Corp. 2020
* (C) Copyright IBM Corp. 2020,2021
*
* SPDX-License-Identifier: Apache-2.0
*/
Expand All @@ -23,6 +23,7 @@
* <code>wlp/bin/ddlGen generate fhir-server</code>
*/
public class JavaBatchSchemaGenerator {
public static final String BATCH_GROUP = "OAUTH_GROUP";
public static final String BATCH_SCHEMANAME = "FHIR_JBATCH";
public static final Boolean NOT_NULL = Boolean.FALSE;
public static final Boolean NULL = Boolean.TRUE;
Expand Down Expand Up @@ -131,7 +132,7 @@ protected List<GroupPrivilege> generateGroupPrivilege(){
* Adds the job table with the following values:
<code>
CREATE TABLE FHIR_BATCH.JOBPARAMETER (
NAME VARCHAR(255),
NAME VARCHAR(255),
VALUE VARCHAR(255),
FK_JOBEXECID BIGINT)
CREATE INDEX FHIR_BATCH.JP_FKJOBEXECID_IX ON FHIR_BATCH.JOBPARAMETER (FK_JOBEXECID)
Expand All @@ -142,23 +143,26 @@ ALTER TABLE FHIR_BATCH.JOBPARAMETER ADD CONSTRAINT JBPRMETERFKJBXECID FOREIGN KE
*/
public void addJobParameterTable(PhysicalDataModel model) {
// The default for the value is 255, and chosen to update to 4096
Table parameter = Table.builder(schemaName, JOBPARAMETER_TABLE)
Table table = Table.builder(schemaName, JOBPARAMETER_TABLE)
.addVarcharColumn(NAME, 255, NULL) // NAME VARCHAR(255)
.addVarcharColumn(VALUE, 4096, NULL) // VALUE VARCHAR(255) (updated to 4096)
.addBigIntColumn(FK_JOBEXECID, NOT_NULL) // FK_JOBEXECID BIGINT
.addForeignKeyConstraintAltTarget("JBPRMETERFKJBXECID", schemaName, JOBEXECUTION_TABLE, JOBEXECID, FK_JOBEXECID)
.addIndex("JP_FKJOBEXECID_IX", FK_JOBEXECID)
.addPrivileges(generateGroupPrivilege())
.build(model);
model.addTable(parameter);
model.addObject(parameter);

table.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, BATCH_GROUP);

model.addTable(table);
model.addObject(table);
}

/**
* Adds the group association table with the following values:
<code>
CREATE TABLE FHIR_BATCH.GROUPASSOCIATION (
FK_JOBINSTANCEID BIGINT,
FK_JOBINSTANCEID BIGINT,
GROUPNAMES VARCHAR(255))
CREATE INDEX FHIR_BATCH.GA_FKINSTANCEID_IX ON FHIR_BATCH.GROUPASSOCIATION (FK_JOBINSTANCEID)
ALTER TABLE FHIR_BATCH.GROUPASSOCIATION ADD CONSTRAINT GRPSSCTNFKJBNSTNCD FOREIGN KEY (FK_JOBINSTANCEID)
Expand All @@ -167,15 +171,18 @@ ALTER TABLE FHIR_BATCH.GROUPASSOCIATION ADD CONSTRAINT GRPSSCTNFKJBNSTNCD FOREIG
* @param model
*/
public void addGroupAssociationTable(PhysicalDataModel model) {
Table parameter = Table.builder(schemaName, GROUPASSOCIATION_TABLE)
Table table = Table.builder(schemaName, GROUPASSOCIATION_TABLE)
.addBigIntColumn(FK_JOBINSTANCEID, NULL) // FK_JOBINSTANCEID BIGINT
.addVarcharColumn( GROUPNAMES, 255, NULL) // GROUPNAMES VARCHAR(255)
.addIndex("GA_FKINSTANCEID_IX", FK_JOBINSTANCEID)
.addForeignKeyConstraintAltTarget("GRPSSCTNFKJBNSTNCD", schemaName, JOBINSTANCE_TABLE, JOBINSTANCEID, FK_JOBINSTANCEID)
.addPrivileges(generateGroupPrivilege())
.build(model);
model.addTable(parameter);
model.addObject(parameter);

table.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, BATCH_GROUP);

model.addTable(table);
model.addObject(table);
}

/**
Expand Down Expand Up @@ -208,15 +215,15 @@ CONSTRAINT PK_STEPTHREADEXECUTION PRIMARY KEY (STEPEXECID))
CREATE INDEX FHIR_BATCH.STE_FKJOBEXECID_IX ON FHIR_BATCH.STEPTHREADEXECUTION (FK_JOBEXECID)
CREATE INDEX FHIR_BATCH.STE_FKTLSTEPEID_IX ON FHIR_BATCH.STEPTHREADEXECUTION (FK_TOPLVL_STEPEXECID)
ALTER TABLE FHIR_BATCH.STEPTHREADEXECUTION ADD CONSTRAINT STPTHRADEXECUTION0 UNIQUE (FK_JOBEXECID, STEPNAME, PARTNUM)
ALTER TABLE FHIR_BATCH.STEPTHREADEXECUTION ADD CONSTRAINT STPTHFKTPLVLSTPXCD FOREIGN KEY (FK_TOPLVL_STEPEXECID)
ALTER TABLE FHIR_BATCH.STEPTHREADEXECUTION ADD CONSTRAINT STPTHFKTPLVLSTPXCD FOREIGN KEY (FK_TOPLVL_STEPEXECID)
REFERENCES FHIR_BATCH.STEPTHREADEXECUTION (STEPEXECID)
ALTER TABLE FHIR_BATCH.STEPTHREADEXECUTION ADD CONSTRAINT STPTHRDXCTNFKJBXCD FOREIGN KEY (FK_JOBEXECID)
REFERENCES FHIR_BATCH.JOBEXECUTION (JOBEXECID)
</code>
* @param model
*/
public void addStepThreadExecutionTable(PhysicalDataModel model) {
Table stepThreadExecutionTable = Table.builder(schemaName, STEPTHREADEXECUTION_TABLE)
Table table = Table.builder(schemaName, STEPTHREADEXECUTION_TABLE)
.addBigIntColumn(STEPEXECID, NOT_NULL) // STEPEXECID BIGINT
.setIdentityColumn(STEPEXECID, Generated.BY_DEFAULT) // GENERATED BY DEFAULT AS IDENTITY NOT NULL
.addVarcharColumn(THREADTYPE, 31, NULL) // THREADTYPE VARCHAR(31)
Expand Down Expand Up @@ -249,8 +256,10 @@ public void addStepThreadExecutionTable(PhysicalDataModel model) {
// STPTHRDXCTNFKJBXCD FOREIGN KEY (FK_JOBEXECID) (FK_JOBEXECID)
.addPrivileges(generateGroupPrivilege())
.build(model);
model.addTable(stepThreadExecutionTable);
model.addObject(stepThreadExecutionTable);
table.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, BATCH_GROUP);

model.addTable(table);
model.addObject(table);
}

/**
Expand All @@ -276,7 +285,7 @@ ALTER TABLE FHIR_BATCH.REMOTABLEPARTITION ADD CONSTRAINT RMTBLPRTTFKJBXCTND FORE
* @param model
*/
public void addRemotablePartitionTable(PhysicalDataModel model) {
Table remotablePartition = Table.builder(schemaName, REMOTABLEPARTITION_TABLE)
Table table = Table.builder(schemaName, REMOTABLEPARTITION_TABLE)
.addIntColumn(PARTNUM, NOT_NULL) // PARTNUM INTEGER NOT NULL
.addVarcharColumn(STEPNAME, 255, NOT_NULL) // STEPNAME VARCHAR(255) NOT NULL
.addIntColumn(INTERNALSTATE, NULL) // NTERNALSTATE INTEGER
Expand All @@ -293,8 +302,10 @@ public void addRemotablePartitionTable(PhysicalDataModel model) {
.addUniqueConstraint("RMOTABLEPARTITION0", FK_JOBEXECUTIONID, STEPNAME, PARTNUM)
.addPrivileges(generateGroupPrivilege())
.build(model);
model.addTable(remotablePartition);
model.addObject(remotablePartition);
table.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, BATCH_GROUP);

model.addTable(table);
model.addObject(table);
}

/**
Expand Down Expand Up @@ -322,7 +333,7 @@ ALTER TABLE FHIR_BATCH.JOBEXECUTION ADD CONSTRAINT JBXCTNFKJBNSTNCEID FOREIGN KE
* @param model
*/
public void addJobExecutionTable(PhysicalDataModel model) {
Table jobInstance = Table.builder(schemaName, JOBEXECUTION_TABLE)
Table table = Table.builder(schemaName, JOBEXECUTION_TABLE)
.addBigIntColumn(JOBEXECID, NOT_NULL) // JOBEXECID BIGINT
.setIdentityColumn(JOBEXECID, Generated.BY_DEFAULT) // GENERATED BY DEFAULT AS IDENTITY NOT NULL
.addIntColumn(BATCHSTATUS, NOT_NULL) // BATCHSTATUS INTEGER NOT NULL
Expand All @@ -343,8 +354,10 @@ public void addJobExecutionTable(PhysicalDataModel model) {
// JBXCTNFKJBNSTNCEID (FK_JOBINSTANCEID)
.addPrivileges(generateGroupPrivilege())
.build(model);
model.addTable(jobInstance);
model.addObject(jobInstance);
table.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, BATCH_GROUP);

model.addTable(table);
model.addObject(table);
}

/**
Expand All @@ -371,7 +384,7 @@ ALTER TABLE FHIR_BATCH.STEPTHREADINSTANCE ADD CONSTRAINT STPTHRDNFKJBNSTNCD FORE
* @param model
*/
public void addStepThreadInstanceTable(PhysicalDataModel model) {
Table jobInstance = Table.builder(schemaName, STEPTHREADINSTANCE_TABLE)
Table table = Table.builder(schemaName, STEPTHREADINSTANCE_TABLE)
.addIntColumn(PARTNUM, NOT_NULL) // PARTNUM INTEGER NOT NULL
.addVarcharColumn(STEPNAME, 128, NOT_NULL) // STEPNAME VARCHAR(128) NOT NULL
.addVarcharColumn(THREADTYPE, 31, NULL) // THREADTYPE VARCHAR(31)
Expand All @@ -391,8 +404,10 @@ public void addStepThreadInstanceTable(PhysicalDataModel model) {
// PRIMARY KEY (PARTNUM, STEPNAME, FK_JOBINSTANCEID))
.addPrivileges(generateGroupPrivilege())
.build(model);
model.addTable(jobInstance);
model.addObject(jobInstance);
table.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, BATCH_GROUP);

model.addTable(table);
model.addObject(table);
}

/**
Expand All @@ -417,7 +432,7 @@ CONSTRAINT PK_JOBINSTANCEID PRIMARY KEY (JOBINSTANCEID)
* @param model
*/
public void addJobInstanceTable(PhysicalDataModel model) {
Table jobInstance = Table.builder(schemaName, JOBINSTANCE_TABLE)
Table table = Table.builder(schemaName, JOBINSTANCE_TABLE)
.addBigIntColumn(JOBINSTANCEID, NOT_NULL) // JOBINSTANCEID BIGINT
.setIdentityColumn(JOBINSTANCEID, Generated.BY_DEFAULT) // GENERATED BY DEFAULT AS IDENTITY NOT NULL
.addVarcharColumn(AMCNAME, 512, NULL) // AMCNAME VARCHAR(512)
Expand All @@ -436,7 +451,9 @@ public void addJobInstanceTable(PhysicalDataModel model) {
.addPrimaryKey(PK + JOBINSTANCEID, JOBINSTANCEID) // PRIMARY KEY (JOBINSTANCEID)
.addPrivileges(generateGroupPrivilege())
.build(model);
model.addTable(jobInstance);
model.addObject(jobInstance);
table.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, BATCH_GROUP);

model.addTable(table);
model.addObject(table);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* (C) Copyright IBM Corp. 2019, 2020
* (C) Copyright IBM Corp. 2019,2021
*
* SPDX-License-Identifier: Apache-2.0
*/
Expand All @@ -22,6 +22,7 @@
* https://www.ibm.com/support/knowledgecenter/SSD28V_liberty/com.ibm.websphere.wlp.core.doc/ae/twlp_oauth_dbs.html</a>
*/
public class OAuthSchemaGenerator {
public static final String OAUTH_GROUP = "OAUTH_GROUP";
public static final String OAUTH_SCHEMANAME = "FHIR_OAUTH";

// The schema holding all the oauth client data
Expand Down Expand Up @@ -102,6 +103,7 @@ protected void addCacheTable(PhysicalDataModel model) {
.addUniqueIndex(OAUTH20CACHE + "_" + EXPIRES, EXPIRES) // ASC is the default
.addPrivileges(generateGroupPrivilege())
.build(model);
cache.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, OAUTH_GROUP);

model.addTable(cache);
model.addObject(cache);
Expand All @@ -119,6 +121,9 @@ protected void addClientConfigTable(PhysicalDataModel model) {
.addPrimaryKey(PK + "COMPIDCLIENTID", COMPONENTID, CLIENTID)
.addPrivileges(generateGroupPrivilege())
.build(model);

clientConfig.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, OAUTH_GROUP);

model.addTable(clientConfig);
model.addObject(clientConfig);
}
Expand All @@ -133,6 +138,9 @@ protected void addConsentCacheTable(PhysicalDataModel model) {
.addClobColumn( EXTENDEDFIELDS, false, "{}")
.addPrivileges(generateGroupPrivilege())
.build(model);

consentCache.addTag(FhirSchemaGenerator.SCHEMA_GROUP_TAG, OAUTH_GROUP);

model.addTable(consentCache);
model.addObject(consentCache);
}
Expand Down
Loading