From cc35aa0798792f3d89ba9214ad3ae6018164fcd8 Mon Sep 17 00:00:00 2001 From: Anastasiia Klochkova Date: Thu, 25 Apr 2019 14:37:48 +0300 Subject: [PATCH 1/7] added error processing added unique constraint for postgres --- .../webapi/util/GenericExceptionMapper.java | 8 ++- src/main/resources/application.properties | 1 + ...add-unique-name-constraint-to-entities.sql | 66 +++++++++++++++++++ 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql diff --git a/src/main/java/org/ohdsi/webapi/util/GenericExceptionMapper.java b/src/main/java/org/ohdsi/webapi/util/GenericExceptionMapper.java index 050bd3f724..1e38f40089 100644 --- a/src/main/java/org/ohdsi/webapi/util/GenericExceptionMapper.java +++ b/src/main/java/org/ohdsi/webapi/util/GenericExceptionMapper.java @@ -34,21 +34,25 @@ @Provider public class GenericExceptionMapper implements ExceptionMapper { + + private final String DETAIL = "Detail: "; @Override public Response toResponse(Throwable ex) { - ErrorMessage errorMessage = new ErrorMessage(ex); StringWriter errorStackTrace = new StringWriter(); ex.printStackTrace(new PrintWriter(errorStackTrace)); Status responseStatus; if(ex instanceof DataIntegrityViolationException) { responseStatus = Status.CONFLICT; + String cause = ex.getCause().getCause().getMessage(); + cause = cause.substring(cause.indexOf(DETAIL) + DETAIL.length()); + ex = new RuntimeException(cause); } else if (ex instanceof NotFoundException) { responseStatus = Status.NOT_FOUND; } else { responseStatus = Status.INTERNAL_SERVER_ERROR; } - + ErrorMessage errorMessage = new ErrorMessage(ex); return Response.status(responseStatus) .entity(errorMessage) .type(MediaType.APPLICATION_JSON) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 3935deb8e9..a3e3f86369 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -46,6 +46,7 @@ flyway.validateOnMigrate=${flyway.validateOnMigrate} flyway.outOfOrder=true # Flyway Placeholders: flyway.placeholders.ohdsiSchema=${flyway.placeholders.ohdsiSchema} +flyway.placeholders.ohdsiSchemaQuotes='${flyway.placeholders.ohdsiSchema}' #Disable any auto init #http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html diff --git a/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql new file mode 100644 index 0000000000..64550c47e4 --- /dev/null +++ b/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -0,0 +1,66 @@ +CREATE OR REPLACE FUNCTION ${ohdsiSchema}.rename_duplicate_names(name_title VARCHAR(20), id_title VARCHAR(15), + table_title VARCHAR(30)) RETURNS VOID + LANGUAGE 'plpgsql' +AS +$$ +DECLARE + duplicate_names VARCHAR(100)[]; + name_repeats INT[]; + amount_of_duplicate_names INT; + amount_of_constraints INT; + constraint_name VARCHAR(100); + +BEGIN + EXECUTE format('SELECT ARRAY(SELECT %I + FROM %I.%I + GROUP BY %I + HAVING COUNT(*) > 1)', name_title, ${ohdsiSchemaQuotes}, table_title, + name_title) INTO duplicate_names; + + EXECUTE format('SELECT ARRAY(SELECT COUNT(*) + FROM %I.%I + GROUP BY %I + HAVING COUNT(*) > 1);', ${ohdsiSchemaQuotes}, table_title, name_title) INTO name_repeats; + + + amount_of_duplicate_names := (SELECT array_length(duplicate_names, 1)); + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + LOOP + FOR j IN 1 .. coalesce(name_repeats[i], 0) + LOOP + EXECUTE format('UPDATE %I.%I + SET %I = concat(%I, '' ('', $1, '')'') + WHERE %I = (SELECT %I + FROM %I.%I + WHERE %I = $2 + ORDER BY %I + LIMIT 1);', ${ohdsiSchemaQuotes}, table_title, name_title, name_title, id_title, id_title, + ${ohdsiSchemaQuotes}, table_title, + name_title, id_title) USING j, duplicate_names[i]; + END LOOP; + END LOOP; + + constraint_name := concat('unique_name_', ${ohdsiSchemaQuotes}, '_', table_title); + + EXECUTE format('SELECT COUNT(*) + FROM information_schema.table_constraints + WHERE constraint_schema = ''%I'' + AND constraint_name = ''%I'' + AND table_name = ''%I''', ${ohdsiSchemaQuotes}, constraint_name, table_title) INTO amount_of_constraints; + + IF amount_of_constraints = 0 THEN + EXECUTE format('ALTER TABLE %I.%I + ADD CONSTRAINT %I UNIQUE (%I);', ${ohdsiSchemaQuotes}, table_title, constraint_name, name_title); + END IF; +END; +$$; + +SELECT rename_duplicate_names('concept_set_name', 'concept_set_id', 'concept_set'); +SELECT rename_duplicate_names('name', 'id', 'cohort_definition'); +SELECT rename_duplicate_names('name', 'id', 'cohort_characterization'); +SELECT rename_duplicate_names('name', 'id', 'fe_analysis'); +SELECT rename_duplicate_names('name', 'id', 'pathway_analysis'); +SELECT rename_duplicate_names('name', 'id', 'ir_analysis'); +SELECT rename_duplicate_names('name', 'estimation_id', 'estimation'); +SELECT rename_duplicate_names('name', 'prediction_id', 'prediction'); \ No newline at end of file From 474f489d1d8600b473872c2c378f39fb8b119f51 Mon Sep 17 00:00:00 2001 From: Anastasiia Klochkova Date: Mon, 29 Apr 2019 13:33:34 +0300 Subject: [PATCH 2/7] added unique constraints for oracle --- ...add-unique-name-constraint-to-entities.sql | 482 ++++++++++++++++++ ...add-unique-name-constraint-to-entities.sql | 4 +- 2 files changed, 485 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql diff --git a/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql new file mode 100644 index 0000000000..5258e17b52 --- /dev/null +++ b/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -0,0 +1,482 @@ +-- Alter Concept Set table + +CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_cs_names AS + TYPE NumberArray IS TABLE OF NUMBER; + TYPE CharArray IS TABLE OF VARCHAR(100); + duplicate_names CharArray; + name_repeats NumberArray; + amount_of_duplicate_names INT; + amount_of_constraints INT; + constraint_title VARCHAR(100); + schema_title VARCHAR(100); + +BEGIN + SELECT concept_set_name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.concept_set + GROUP BY concept_set_name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.concept_set + GROUP BY concept_set_name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + LOOP + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.concept_set + SET concept_set_name = concept_set_name || ' (' || j || ')' + WHERE concept_set_id = (SELECT concept_set_id + FROM ${ohdsiSchema}.concept_set + WHERE concept_set_name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + + constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'CS_NAME'; + + schema_title := ${ohdsiSchemaQuotes}; + + SELECT COUNT(*) INTO amount_of_constraints + FROM ALL_CONSTRAINTS + WHERE OWNER = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = constraint_title + AND TABLE_NAME = 'CONCEPT_SET'; + + IF amount_of_constraints = 0 THEN + EXECUTE IMMEDIATE ('ALTER TABLE ' || schema_title || '.CONCEPT_SET ADD CONSTRAINT ' || constraint_title ||' UNIQUE (concept_set_name)'); + END IF; +END; +/ + +begin + rename_cs_names; +end; +/ + + +-- Alter Cohort Definition table + +CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_cd_names AS + TYPE NumberArray IS TABLE OF NUMBER; + TYPE CharArray IS TABLE OF VARCHAR(100); + duplicate_names CharArray; + name_repeats NumberArray; + amount_of_duplicate_names INT; + amount_of_constraints INT; + constraint_title VARCHAR(100); + schema_title VARCHAR(100); + +BEGIN + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.cohort_definition + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.cohort_definition + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + LOOP + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.cohort_definition + SET name = name || ' (' || j || ')' + WHERE id = (SELECT id + FROM ${ohdsiSchema}.cohort_definition + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + + constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'CD_NAME'; + + schema_title := ${ohdsiSchemaQuotes}; + + SELECT COUNT(*) INTO amount_of_constraints + FROM ALL_CONSTRAINTS + WHERE OWNER = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = constraint_title + AND TABLE_NAME = 'COHORT_DEFINITION'; + + IF amount_of_constraints = 0 THEN + EXECUTE IMMEDIATE ('ALTER TABLE ' || schema_title || '.COHORT_DEFINITION ADD CONSTRAINT ' || constraint_title ||' UNIQUE (name)'); + END IF; +END; +/ + +begin + rename_cd_names; +end; +/ + + +-- Alter Cohort Characterization table + +CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_cc_names AS + TYPE NumberArray IS TABLE OF NUMBER; + TYPE CharArray IS TABLE OF VARCHAR(100); + duplicate_names CharArray; + name_repeats NumberArray; + amount_of_duplicate_names INT; + amount_of_constraints INT; + constraint_title VARCHAR(100); + schema_title VARCHAR(100); + +BEGIN + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.cohort_characterization + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.cohort_characterization + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + LOOP + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.cohort_characterization + SET name = name || ' (' || j || ')' + WHERE id = (SELECT id + FROM ${ohdsiSchema}.cohort_characterization + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + + constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'CC_NAME'; + + schema_title := ${ohdsiSchemaQuotes}; + + SELECT COUNT(*) INTO amount_of_constraints + FROM ALL_CONSTRAINTS + WHERE OWNER = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = constraint_title + AND TABLE_NAME = 'COHORT_CHARACTERIZATION'; + + IF amount_of_constraints = 0 THEN + EXECUTE IMMEDIATE ('ALTER TABLE ' || schema_title || '.COHORT_CHARACTERIZATION ADD CONSTRAINT ' || constraint_title ||' UNIQUE (name)'); + END IF; +END; +/ + +begin + rename_cc_names; +end; +/ + +-- Alter FeAnalysis table + +CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_fe_names AS + TYPE NumberArray IS TABLE OF NUMBER; + TYPE CharArray IS TABLE OF VARCHAR(100); + duplicate_names CharArray; + name_repeats NumberArray; + amount_of_duplicate_names INT; + amount_of_constraints INT; + constraint_title VARCHAR(100); + schema_title VARCHAR(100); + +BEGIN + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.fe_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.fe_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + LOOP + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.fe_analysis + SET name = name || ' (' || j || ')' + WHERE id = (SELECT id + FROM ${ohdsiSchema}.fe_analysis + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + + constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'FE_NAME'; + + schema_title := ${ohdsiSchemaQuotes}; + + SELECT COUNT(*) INTO amount_of_constraints + FROM ALL_CONSTRAINTS + WHERE OWNER = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = constraint_title + AND TABLE_NAME = 'FE_ANALYSIS'; + + IF amount_of_constraints = 0 THEN + EXECUTE IMMEDIATE ('ALTER TABLE ' || schema_title || '.FE_ANALYSIS ADD CONSTRAINT ' || constraint_title ||' UNIQUE (name)'); + END IF; +END; +/ + +begin + rename_fe_names; +end; +/ + +-- Alter Pathway Analysis table + +CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_pathway_names AS + TYPE NumberArray IS TABLE OF NUMBER; + TYPE CharArray IS TABLE OF VARCHAR(100); + duplicate_names CharArray; + name_repeats NumberArray; + amount_of_duplicate_names INT; + amount_of_constraints INT; + constraint_title VARCHAR(100); + schema_title VARCHAR(100); + +BEGIN + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.pathway_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.pathway_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + LOOP + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.pathway_analysis + SET name = name || ' (' || j || ')' + WHERE id = (SELECT id + FROM ${ohdsiSchema}.pathway_analysis + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + + constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'PW_NAME'; + + schema_title := ${ohdsiSchemaQuotes}; + + SELECT COUNT(*) INTO amount_of_constraints + FROM ALL_CONSTRAINTS + WHERE OWNER = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = constraint_title + AND TABLE_NAME = 'PATHWAY_ANALYSIS'; + + IF amount_of_constraints = 0 THEN + EXECUTE IMMEDIATE ('ALTER TABLE ' || schema_title || '.PATHWAY_ANALYSIS ADD CONSTRAINT ' || constraint_title ||' UNIQUE (name)'); + END IF; +END; +/ + +begin + rename_pathway_names; +end; +/ + +-- Alter IR Analysis table + +CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_ir_names AS + TYPE NumberArray IS TABLE OF NUMBER; + TYPE CharArray IS TABLE OF VARCHAR(100); + duplicate_names CharArray; + name_repeats NumberArray; + amount_of_duplicate_names INT; + amount_of_constraints INT; + constraint_title VARCHAR(100); + schema_title VARCHAR(100); + +BEGIN + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.ir_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.ir_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + LOOP + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.ir_analysis + SET name = name || ' (' || j || ')' + WHERE id = (SELECT id + FROM ${ohdsiSchema}.ir_analysis + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + + constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'IR_NAME'; + + schema_title := ${ohdsiSchemaQuotes}; + + SELECT COUNT(*) INTO amount_of_constraints + FROM ALL_CONSTRAINTS + WHERE OWNER = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = constraint_title + AND TABLE_NAME = 'IR_ANALYSIS'; + + IF amount_of_constraints = 0 THEN + EXECUTE IMMEDIATE ('ALTER TABLE ' || schema_title || '.IR_ANALYSIS ADD CONSTRAINT ' || constraint_title ||' UNIQUE (name)'); + END IF; +END; +/ + +begin + rename_ir_names; +end; +/ + +-- Alter Estimation table + +CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_estimation_names AS + TYPE NumberArray IS TABLE OF NUMBER; + TYPE CharArray IS TABLE OF VARCHAR(100); + duplicate_names CharArray; + name_repeats NumberArray; + amount_of_duplicate_names INT; + amount_of_constraints INT; + constraint_title VARCHAR(100); + schema_title VARCHAR(100); + +BEGIN + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.estimation + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.estimation + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + LOOP + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.estimation + SET name = name || ' (' || j || ')' + WHERE estimation_id = (SELECT estimation_id + FROM ${ohdsiSchema}.estimation + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + + constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'ES_NAME'; + + schema_title := ${ohdsiSchemaQuotes}; + + SELECT COUNT(*) INTO amount_of_constraints + FROM ALL_CONSTRAINTS + WHERE OWNER = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = constraint_title + AND TABLE_NAME = 'ESTIMATION'; + + IF amount_of_constraints = 0 THEN + EXECUTE IMMEDIATE ('ALTER TABLE ' || schema_title || '.ESTIMATION ADD CONSTRAINT ' || constraint_title ||' UNIQUE (name)'); + END IF; +END; +/ + +begin + rename_estimation_names; +end; +/ + +-- Alter Prediction table + +CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_prediction_names AS + TYPE NumberArray IS TABLE OF NUMBER; + TYPE CharArray IS TABLE OF VARCHAR(100); + duplicate_names CharArray; + name_repeats NumberArray; + amount_of_duplicate_names INT; + amount_of_constraints INT; + constraint_title VARCHAR(100); + schema_title VARCHAR(100); + +BEGIN + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.prediction + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.prediction + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + LOOP + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.prediction + SET name = name || ' (' || j || ')' + WHERE prediction_id = (SELECT prediction_id + FROM ${ohdsiSchema}.prediction + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + + constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'PD_NAME'; + + schema_title := ${ohdsiSchemaQuotes}; + + SELECT COUNT(*) INTO amount_of_constraints + FROM ALL_CONSTRAINTS + WHERE OWNER = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = constraint_title + AND TABLE_NAME = 'PREDICTION'; + + IF amount_of_constraints = 0 THEN + EXECUTE IMMEDIATE ('ALTER TABLE ' || schema_title || '.PREDICTION ADD CONSTRAINT ' || constraint_title ||' UNIQUE (name)'); + END IF; +END; +/ + +begin + rename_prediction_names; +end; +/ + +DROP PROCEDURE ${ohdsiSchema}.rename_cs_names; +DROP PROCEDURE ${ohdsiSchema}.rename_cd_names; +DROP PROCEDURE ${ohdsiSchema}.rename_cc_names; +DROP PROCEDURE ${ohdsiSchema}.rename_fe_names; +DROP PROCEDURE ${ohdsiSchema}.rename_pathway_names; +DROP PROCEDURE ${ohdsiSchema}.rename_ir_names; +DROP PROCEDURE ${ohdsiSchema}.rename_estimation_names; +DROP PROCEDURE ${ohdsiSchema}.rename_prediction_names; \ No newline at end of file diff --git a/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index 64550c47e4..3a27fda328 100644 --- a/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -63,4 +63,6 @@ SELECT rename_duplicate_names('name', 'id', 'fe_analysis'); SELECT rename_duplicate_names('name', 'id', 'pathway_analysis'); SELECT rename_duplicate_names('name', 'id', 'ir_analysis'); SELECT rename_duplicate_names('name', 'estimation_id', 'estimation'); -SELECT rename_duplicate_names('name', 'prediction_id', 'prediction'); \ No newline at end of file +SELECT rename_duplicate_names('name', 'prediction_id', 'prediction'); + +DROP FUNCTION ${ohdsiSchema}.rename_duplicate_names(name_title VARCHAR(20), id_title VARCHAR(15), table_title VARCHAR(30)); \ No newline at end of file From 5962c348ab7ff6c1a59c58e0784d78eeee5ffa5c Mon Sep 17 00:00:00 2001 From: Anastasiia Klochkova Date: Mon, 29 Apr 2019 20:22:04 +0300 Subject: [PATCH 3/7] added unique constraints for sql server --- ...add-unique-name-constraint-to-entities.sql | 480 ++++++++++++++++++ 1 file changed, 480 insertions(+) create mode 100644 src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql diff --git a/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql new file mode 100644 index 0000000000..99be04f019 --- /dev/null +++ b/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -0,0 +1,480 @@ +-- Alter Concept Set table + +CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_cs_names AS +BEGIN + DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); + DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); + DECLARE @amount_of_duplicate_names int; + DECLARE @amount_of_constraints int; + DECLARE @constraint_title varchar(100); + DECLARE @schema_title varchar(100); + + INSERT INTO @duplicate_names + SELECT concept_set_name FROM ${ohdsiSchema}.concept_set + GROUP BY concept_set_name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.concept_set + GROUP BY concept_set_name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.concept_set + SET concept_set_name = concept_set_name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE concept_set_id = + (SELECT TOP (1) concept_set_id FROM ${ohdsiSchema}.concept_set + WHERE concept_set_name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'CS_NAME'; + SET @schema_title = ${ohdsiSchemaQuotes}; + SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS + WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'concept_set'); + IF @amount_of_constraints = 0 + BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.concept_set ADD CONSTRAINT ' + @constraint_title +' UNIQUE (concept_set_name)'); END; +END; +GO + +EXEC ${ohdsiSchema}.rename_cs_names; +GO + +-- Alter Cohort Definition table + +CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_cd_names AS +BEGIN + DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); + DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); + DECLARE @amount_of_duplicate_names int; + DECLARE @amount_of_constraints int; + DECLARE @constraint_title varchar(100); + DECLARE @schema_title varchar(100); + + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.cohort_definition + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.cohort_definition + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.cohort_definition + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE id = + (SELECT TOP (1) id FROM ${ohdsiSchema}.cohort_definition + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'CD_NAME'; + SET @schema_title = ${ohdsiSchemaQuotes}; + SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS + WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'cohort_definition'); + IF @amount_of_constraints = 0 + BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.cohort_definition ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; +END; +GO + +EXEC ${ohdsiSchema}.rename_cd_names; +GO + +-- Alter Cohort Characterization table + +CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_cc_names AS +BEGIN + DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); + DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); + DECLARE @amount_of_duplicate_names int; + DECLARE @amount_of_constraints int; + DECLARE @constraint_title varchar(100); + DECLARE @schema_title varchar(100); + + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.cohort_characterization + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.cohort_characterization + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.cohort_characterization + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE id = + (SELECT TOP (1) id FROM ${ohdsiSchema}.cohort_characterization + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'CC_NAME'; + SET @schema_title = ${ohdsiSchemaQuotes}; + SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS + WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'cohort_characterization'); + IF @amount_of_constraints = 0 + BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.cohort_characterization ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; +END; +GO + +EXEC ${ohdsiSchema}.rename_cc_names; +GO + +-- Alter Fe Analysis Table + +CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_fe_names AS +BEGIN + DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); + DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); + DECLARE @amount_of_duplicate_names int; + DECLARE @amount_of_constraints int; + DECLARE @constraint_title varchar(100); + DECLARE @schema_title varchar(100); + + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.fe_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.fe_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.fe_analysis + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE id = + (SELECT TOP (1) id FROM ${ohdsiSchema}.fe_analysis + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'FE_NAME'; + SET @schema_title = ${ohdsiSchemaQuotes}; + SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS + WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'fe_analysis'); + IF @amount_of_constraints = 0 + BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.fe_analysis ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; +END; +GO + +EXEC ${ohdsiSchema}.rename_fe_names; +GO + +-- Alter Pathway Analysis Table + +CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_pw_names AS +BEGIN + DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); + DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); + DECLARE @amount_of_duplicate_names int; + DECLARE @amount_of_constraints int; + DECLARE @constraint_title varchar(100); + DECLARE @schema_title varchar(100); + + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.pathway_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.pathway_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.pathway_analysis + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE id = + (SELECT TOP (1) id FROM ${ohdsiSchema}.pathway_analysis + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'PW_NAME'; + SET @schema_title = ${ohdsiSchemaQuotes}; + SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS + WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'pathway_analysis'); + IF @amount_of_constraints = 0 + BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.pathway_analysis ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; +END; +GO + +EXEC ${ohdsiSchema}.rename_pw_names; +GO + +-- Alter IR Analysis Table + +CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_ir_names AS +BEGIN + DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); + DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); + DECLARE @amount_of_duplicate_names int; + DECLARE @amount_of_constraints int; + DECLARE @constraint_title varchar(100); + DECLARE @schema_title varchar(100); + + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.ir_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.ir_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.ir_analysis + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE id = + (SELECT TOP (1) id FROM ${ohdsiSchema}.ir_analysis + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'IR_NAME'; + SET @schema_title = ${ohdsiSchemaQuotes}; + SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS + WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'ir_analysis'); + IF @amount_of_constraints = 0 + BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.ir_analysis ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; +END; +GO + +EXEC ${ohdsiSchema}.rename_ir_names; +GO + +-- Alter Estimation table + +CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_estimation_names AS +BEGIN + DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); + DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); + DECLARE @amount_of_duplicate_names int; + DECLARE @amount_of_constraints int; + DECLARE @constraint_title varchar(100); + DECLARE @schema_title varchar(100); + + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.estimation + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.estimation + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.estimation + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE estimation_id = + (SELECT TOP (1) estimation_id FROM ${ohdsiSchema}.estimation + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'ESTIMATION_NAME'; + SET @schema_title = ${ohdsiSchemaQuotes}; + SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS + WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'estimation'); + IF @amount_of_constraints = 0 + BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.estimation ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; +END; +GO + +EXEC ${ohdsiSchema}.rename_estimation_names; +GO + +-- Alter Prediction table + +CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_prediction_names AS +BEGIN + DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); + DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); + DECLARE @amount_of_duplicate_names int; + DECLARE @amount_of_constraints int; + DECLARE @constraint_title varchar(100); + DECLARE @schema_title varchar(100); + + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.prediction + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.prediction + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.prediction + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE prediction_id = + (SELECT TOP (1) prediction_id FROM ${ohdsiSchema}.prediction + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'PREDICTION_NAME'; + SET @schema_title = ${ohdsiSchemaQuotes}; + SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS + WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'prediction'); + IF @amount_of_constraints = 0 + BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.prediction ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; +END; +GO + +EXEC ${ohdsiSchema}.rename_prediction_names; +GO + +DROP PROCEDURE ${ohdsiSchema}.rename_cs_names; +DROP PROCEDURE ${ohdsiSchema}.rename_cd_names; +DROP PROCEDURE ${ohdsiSchema}.rename_cc_names; +DROP PROCEDURE ${ohdsiSchema}.rename_fe_names; +DROP PROCEDURE ${ohdsiSchema}.rename_pw_names; +DROP PROCEDURE ${ohdsiSchema}.rename_ir_names; +DROP PROCEDURE ${ohdsiSchema}.rename_estimation_names; +DROP PROCEDURE ${ohdsiSchema}.rename_prediction_names; \ No newline at end of file From 765d9e51415cc10dd1d303d01c8c9b466412ff76 Mon Sep 17 00:00:00 2001 From: Anastasiia Klochkova Date: Tue, 30 Apr 2019 15:40:59 +0300 Subject: [PATCH 4/7] added check for already existing names with postfixes --- ...add-unique-name-constraint-to-entities.sql | 417 ++++++----- ...add-unique-name-constraint-to-entities.sql | 56 +- ...add-unique-name-constraint-to-entities.sql | 650 +++++++++++------- 3 files changed, 666 insertions(+), 457 deletions(-) diff --git a/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index 5258e17b52..9c24bd0d3e 100644 --- a/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -9,35 +9,45 @@ CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_cs_names AS amount_of_constraints INT; constraint_title VARCHAR(100); schema_title VARCHAR(100); + all_duplicates INT; BEGIN - SELECT concept_set_name BULK COLLECT INTO duplicate_names - FROM ${ohdsiSchema}.concept_set - GROUP BY concept_set_name - HAVING COUNT(*) > 1; + SELECT COUNT(*) INTO all_duplicates FROM (SELECT concept_set_name FROM ${ohdsiSchema}.concept_set + GROUP BY concept_set_name + HAVING COUNT(*) > 1); - SELECT COUNT(*) BULK COLLECT INTO name_repeats - FROM ${ohdsiSchema}.concept_set - GROUP BY concept_set_name - HAVING COUNT(*) > 1; - - amount_of_duplicate_names := duplicate_names.COUNT; - - FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + FOR k IN 0 .. coalesce(all_duplicates, 0) LOOP - FOR j IN 1 .. coalesce(name_repeats(i), 0) + SELECT concept_set_name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.concept_set + GROUP BY concept_set_name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.concept_set + GROUP BY concept_set_name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) LOOP - UPDATE ${ohdsiSchema}.concept_set - SET concept_set_name = concept_set_name || ' (' || j || ')' - WHERE concept_set_id = (SELECT concept_set_id - FROM ${ohdsiSchema}.concept_set - WHERE concept_set_name = duplicate_names(i) - AND ROWNUM = 1); + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.concept_set + SET concept_set_name = concept_set_name || ' (' || j || ')' + WHERE concept_set_id = (SELECT concept_set_id + FROM ${ohdsiSchema}.concept_set + WHERE concept_set_name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; END LOOP; + duplicate_names.DELETE(); + name_repeats.DELETE(); END LOOP; + constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'CS_NAME'; - schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -69,35 +79,44 @@ CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_cd_names AS amount_of_constraints INT; constraint_title VARCHAR(100); schema_title VARCHAR(100); + all_duplicates INT; BEGIN - SELECT name BULK COLLECT INTO duplicate_names - FROM ${ohdsiSchema}.cohort_definition - GROUP BY name - HAVING COUNT(*) > 1; - - SELECT COUNT(*) BULK COLLECT INTO name_repeats - FROM ${ohdsiSchema}.cohort_definition - GROUP BY name - HAVING COUNT(*) > 1; - - amount_of_duplicate_names := duplicate_names.COUNT; + SELECT COUNT(*) INTO all_duplicates FROM (SELECT name FROM ${ohdsiSchema}.cohort_definition + GROUP BY name + HAVING COUNT(*) > 1); - FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + FOR k IN 0 .. coalesce(all_duplicates, 0) LOOP - FOR j IN 1 .. coalesce(name_repeats(i), 0) + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.cohort_definition + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.cohort_definition + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) LOOP - UPDATE ${ohdsiSchema}.cohort_definition - SET name = name || ' (' || j || ')' - WHERE id = (SELECT id - FROM ${ohdsiSchema}.cohort_definition - WHERE name = duplicate_names(i) - AND ROWNUM = 1); + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.cohort_definition + SET name = name || ' (' || j || ')' + WHERE id = (SELECT id + FROM ${ohdsiSchema}.cohort_definition + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; END LOOP; - END LOOP; + duplicate_names.DELETE(); + name_repeats.DELETE(); + END LOOP; constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'CD_NAME'; - schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -129,35 +148,44 @@ CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_cc_names AS amount_of_constraints INT; constraint_title VARCHAR(100); schema_title VARCHAR(100); + all_duplicates INT; BEGIN - SELECT name BULK COLLECT INTO duplicate_names - FROM ${ohdsiSchema}.cohort_characterization - GROUP BY name - HAVING COUNT(*) > 1; - - SELECT COUNT(*) BULK COLLECT INTO name_repeats - FROM ${ohdsiSchema}.cohort_characterization - GROUP BY name - HAVING COUNT(*) > 1; - - amount_of_duplicate_names := duplicate_names.COUNT; + SELECT COUNT(*) INTO all_duplicates FROM (SELECT name FROM ${ohdsiSchema}.cohort_characterization + GROUP BY name + HAVING COUNT(*) > 1); - FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + FOR k IN 0 .. coalesce(all_duplicates, 0) LOOP - FOR j IN 1 .. coalesce(name_repeats(i), 0) + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.cohort_characterization + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.cohort_characterization + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) LOOP - UPDATE ${ohdsiSchema}.cohort_characterization - SET name = name || ' (' || j || ')' - WHERE id = (SELECT id - FROM ${ohdsiSchema}.cohort_characterization - WHERE name = duplicate_names(i) - AND ROWNUM = 1); - END LOOP; - END LOOP; + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.cohort_characterization + SET name = name || ' (' || j || ')' + WHERE id = (SELECT id + FROM ${ohdsiSchema}.cohort_characterization + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + duplicate_names.DELETE(); + name_repeats.DELETE(); + END LOOP; constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'CC_NAME'; - schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -188,35 +216,44 @@ CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_fe_names AS amount_of_constraints INT; constraint_title VARCHAR(100); schema_title VARCHAR(100); + all_duplicates INT; BEGIN - SELECT name BULK COLLECT INTO duplicate_names - FROM ${ohdsiSchema}.fe_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - SELECT COUNT(*) BULK COLLECT INTO name_repeats - FROM ${ohdsiSchema}.fe_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - amount_of_duplicate_names := duplicate_names.COUNT; + SELECT COUNT(*) INTO all_duplicates FROM (SELECT name FROM ${ohdsiSchema}.fe_analysis + GROUP BY name + HAVING COUNT(*) > 1); - FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + FOR k IN 0 .. coalesce(all_duplicates, 0) LOOP - FOR j IN 1 .. coalesce(name_repeats(i), 0) + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.fe_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.fe_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) LOOP - UPDATE ${ohdsiSchema}.fe_analysis - SET name = name || ' (' || j || ')' - WHERE id = (SELECT id - FROM ${ohdsiSchema}.fe_analysis - WHERE name = duplicate_names(i) - AND ROWNUM = 1); - END LOOP; - END LOOP; + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.fe_analysis + SET name = name || ' (' || j || ')' + WHERE id = (SELECT id + FROM ${ohdsiSchema}.fe_analysis + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + duplicate_names.DELETE(); + name_repeats.DELETE(); + END LOOP; constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'FE_NAME'; - schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -247,35 +284,44 @@ CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_pathway_names AS amount_of_constraints INT; constraint_title VARCHAR(100); schema_title VARCHAR(100); + all_duplicates INT; BEGIN - SELECT name BULK COLLECT INTO duplicate_names - FROM ${ohdsiSchema}.pathway_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - SELECT COUNT(*) BULK COLLECT INTO name_repeats - FROM ${ohdsiSchema}.pathway_analysis - GROUP BY name - HAVING COUNT(*) > 1; + SELECT COUNT(*) INTO all_duplicates FROM (SELECT name FROM ${ohdsiSchema}.pathway_analysis + GROUP BY name + HAVING COUNT(*) > 1); - amount_of_duplicate_names := duplicate_names.COUNT; - - FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + FOR k IN 0 .. coalesce(all_duplicates, 0) LOOP - FOR j IN 1 .. coalesce(name_repeats(i), 0) + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.pathway_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.pathway_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) LOOP - UPDATE ${ohdsiSchema}.pathway_analysis - SET name = name || ' (' || j || ')' - WHERE id = (SELECT id - FROM ${ohdsiSchema}.pathway_analysis - WHERE name = duplicate_names(i) - AND ROWNUM = 1); - END LOOP; - END LOOP; + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.pathway_analysis + SET name = name || ' (' || j || ')' + WHERE id = (SELECT id + FROM ${ohdsiSchema}.pathway_analysis + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + duplicate_names.DELETE(); + name_repeats.DELETE(); + END LOOP; constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'PW_NAME'; - schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -306,35 +352,44 @@ CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_ir_names AS amount_of_constraints INT; constraint_title VARCHAR(100); schema_title VARCHAR(100); + all_duplicates INT; BEGIN - SELECT name BULK COLLECT INTO duplicate_names - FROM ${ohdsiSchema}.ir_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - SELECT COUNT(*) BULK COLLECT INTO name_repeats - FROM ${ohdsiSchema}.ir_analysis - GROUP BY name - HAVING COUNT(*) > 1; + SELECT COUNT(*) INTO all_duplicates FROM (SELECT name FROM ${ohdsiSchema}.ir_analysis + GROUP BY name + HAVING COUNT(*) > 1); - amount_of_duplicate_names := duplicate_names.COUNT; - - FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + FOR k IN 0 .. coalesce(all_duplicates, 0) LOOP - FOR j IN 1 .. coalesce(name_repeats(i), 0) + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.ir_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.ir_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) LOOP - UPDATE ${ohdsiSchema}.ir_analysis - SET name = name || ' (' || j || ')' - WHERE id = (SELECT id - FROM ${ohdsiSchema}.ir_analysis - WHERE name = duplicate_names(i) - AND ROWNUM = 1); - END LOOP; - END LOOP; + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.ir_analysis + SET name = name || ' (' || j || ')' + WHERE id = (SELECT id + FROM ${ohdsiSchema}.ir_analysis + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + duplicate_names.DELETE(); + name_repeats.DELETE(); + END LOOP; constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'IR_NAME'; - schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -365,35 +420,44 @@ CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_estimation_names AS amount_of_constraints INT; constraint_title VARCHAR(100); schema_title VARCHAR(100); + all_duplicates INT; BEGIN - SELECT name BULK COLLECT INTO duplicate_names - FROM ${ohdsiSchema}.estimation - GROUP BY name - HAVING COUNT(*) > 1; + SELECT COUNT(*) INTO all_duplicates FROM (SELECT name FROM ${ohdsiSchema}.estimation + GROUP BY name + HAVING COUNT(*) > 1); - SELECT COUNT(*) BULK COLLECT INTO name_repeats - FROM ${ohdsiSchema}.estimation - GROUP BY name - HAVING COUNT(*) > 1; - - amount_of_duplicate_names := duplicate_names.COUNT; - - FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + FOR k IN 0 .. coalesce(all_duplicates, 0) LOOP - FOR j IN 1 .. coalesce(name_repeats(i), 0) + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.estimation + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.estimation + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) LOOP - UPDATE ${ohdsiSchema}.estimation - SET name = name || ' (' || j || ')' - WHERE estimation_id = (SELECT estimation_id - FROM ${ohdsiSchema}.estimation - WHERE name = duplicate_names(i) - AND ROWNUM = 1); + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.estimation + SET name = name || ' (' || j || ')' + WHERE estimation_id = (SELECT estimation_id + FROM ${ohdsiSchema}.estimation + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; END LOOP; - END LOOP; + duplicate_names.DELETE(); + name_repeats.DELETE(); + END LOOP; constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'ES_NAME'; - schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -424,35 +488,44 @@ CREATE OR REPLACE PROCEDURE ${ohdsiSchema}.rename_prediction_names AS amount_of_constraints INT; constraint_title VARCHAR(100); schema_title VARCHAR(100); + all_duplicates INT; BEGIN - SELECT name BULK COLLECT INTO duplicate_names - FROM ${ohdsiSchema}.prediction - GROUP BY name - HAVING COUNT(*) > 1; - - SELECT COUNT(*) BULK COLLECT INTO name_repeats - FROM ${ohdsiSchema}.prediction - GROUP BY name - HAVING COUNT(*) > 1; + SELECT COUNT(*) INTO all_duplicates FROM (SELECT name FROM ${ohdsiSchema}.prediction + GROUP BY name + HAVING COUNT(*) > 1); - amount_of_duplicate_names := duplicate_names.COUNT; - - FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) + FOR k IN 0 .. coalesce(all_duplicates, 0) LOOP - FOR j IN 1 .. coalesce(name_repeats(i), 0) + SELECT name BULK COLLECT INTO duplicate_names + FROM ${ohdsiSchema}.prediction + GROUP BY name + HAVING COUNT(*) > 1; + + SELECT COUNT(*) BULK COLLECT INTO name_repeats + FROM ${ohdsiSchema}.prediction + GROUP BY name + HAVING COUNT(*) > 1; + + amount_of_duplicate_names := duplicate_names.COUNT; + + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) LOOP - UPDATE ${ohdsiSchema}.prediction - SET name = name || ' (' || j || ')' - WHERE prediction_id = (SELECT prediction_id - FROM ${ohdsiSchema}.prediction - WHERE name = duplicate_names(i) - AND ROWNUM = 1); - END LOOP; - END LOOP; + FOR j IN 1 .. coalesce(name_repeats(i), 0) + LOOP + UPDATE ${ohdsiSchema}.prediction + SET name = name || ' (' || j || ')' + WHERE prediction_id = (SELECT prediction_id + FROM ${ohdsiSchema}.prediction + WHERE name = duplicate_names(i) + AND ROWNUM = 1); + END LOOP; + END LOOP; + duplicate_names.DELETE(); + name_repeats.DELETE(); + END LOOP; constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'PD_NAME'; - schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints diff --git a/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index 3a27fda328..1fe07bac6e 100644 --- a/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -1,5 +1,5 @@ CREATE OR REPLACE FUNCTION ${ohdsiSchema}.rename_duplicate_names(name_title VARCHAR(20), id_title VARCHAR(15), - table_title VARCHAR(30)) RETURNS VOID + table_title VARCHAR(30)) RETURNS VOID LANGUAGE 'plpgsql' AS $$ @@ -9,35 +9,47 @@ DECLARE amount_of_duplicate_names INT; amount_of_constraints INT; constraint_name VARCHAR(100); + all_duplicates INT; BEGIN - EXECUTE format('SELECT ARRAY(SELECT %I + EXECUTE format('SELECT COUNT(*) + FROM (SELECT %I + FROM %I.%I + GROUP BY %I + HAVING COUNT(*) > 1) as temp;', name_title, ${ohdsiSchemaQuotes}, table_title, + name_title) INTO all_duplicates; + FOR k IN 0 .. coalesce(all_duplicates, 0) + LOOP + EXECUTE format('SELECT ARRAY(SELECT %I FROM %I.%I GROUP BY %I HAVING COUNT(*) > 1)', name_title, ${ohdsiSchemaQuotes}, table_title, name_title) INTO duplicate_names; - EXECUTE format('SELECT ARRAY(SELECT COUNT(*) - FROM %I.%I - GROUP BY %I - HAVING COUNT(*) > 1);', ${ohdsiSchemaQuotes}, table_title, name_title) INTO name_repeats; + EXECUTE format('SELECT ARRAY(SELECT COUNT(*) + FROM %I.%I + GROUP BY %I + HAVING COUNT(*) > 1);', ${ohdsiSchemaQuotes}, table_title, + name_title) INTO name_repeats; - amount_of_duplicate_names := (SELECT array_length(duplicate_names, 1)); + amount_of_duplicate_names := (SELECT array_length(duplicate_names, 1)); - FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) - LOOP - FOR j IN 1 .. coalesce(name_repeats[i], 0) + FOR i IN 1 .. coalesce(amount_of_duplicate_names, 0) LOOP - EXECUTE format('UPDATE %I.%I - SET %I = concat(%I, '' ('', $1, '')'') - WHERE %I = (SELECT %I - FROM %I.%I - WHERE %I = $2 - ORDER BY %I - LIMIT 1);', ${ohdsiSchemaQuotes}, table_title, name_title, name_title, id_title, id_title, - ${ohdsiSchemaQuotes}, table_title, - name_title, id_title) USING j, duplicate_names[i]; + FOR j IN 1 .. coalesce(name_repeats[i], 0) + LOOP + EXECUTE format('UPDATE %I.%I + SET %I = concat(%I, '' ('', $1, '')'') + WHERE %I = (SELECT %I + FROM %I.%I + WHERE %I = $2 + ORDER BY %I + LIMIT 1);', ${ohdsiSchemaQuotes}, table_title, name_title, name_title, id_title, + id_title, + ${ohdsiSchemaQuotes}, table_title, + name_title, id_title) USING j, duplicate_names[i]; + END LOOP; END LOOP; END LOOP; @@ -47,11 +59,13 @@ BEGIN FROM information_schema.table_constraints WHERE constraint_schema = ''%I'' AND constraint_name = ''%I'' - AND table_name = ''%I''', ${ohdsiSchemaQuotes}, constraint_name, table_title) INTO amount_of_constraints; + AND table_name = ''%I''', ${ohdsiSchemaQuotes}, constraint_name, + table_title) INTO amount_of_constraints; IF amount_of_constraints = 0 THEN EXECUTE format('ALTER TABLE %I.%I - ADD CONSTRAINT %I UNIQUE (%I);', ${ohdsiSchemaQuotes}, table_title, constraint_name, name_title); + ADD CONSTRAINT %I UNIQUE (%I);', ${ohdsiSchemaQuotes}, table_title, constraint_name, + name_title); END IF; END; $$; diff --git a/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index 99be04f019..7a802d15ae 100644 --- a/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -8,42 +8,57 @@ BEGIN DECLARE @amount_of_constraints int; DECLARE @constraint_title varchar(100); DECLARE @schema_title varchar(100); + DECLARE @k int; + + SET @k = (SELECT COUNT(*) FROM (SELECT concept_set_name FROM ${ohdsiSchema}.concept_set + GROUP BY concept_set_name + HAVING COUNT(*) > 1) AS temp); - INSERT INTO @duplicate_names - SELECT concept_set_name FROM ${ohdsiSchema}.concept_set - GROUP BY concept_set_name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.concept_set - GROUP BY concept_set_name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) + WHILE @k > 0 BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.concept_set - SET concept_set_name = concept_set_name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE concept_set_id = - (SELECT TOP (1) concept_set_id FROM ${ohdsiSchema}.concept_set - WHERE concept_set_name = @dupl_name - ); - SET @j = @j + 1; + INSERT INTO @duplicate_names + SELECT concept_set_name FROM ${ohdsiSchema}.concept_set + GROUP BY concept_set_name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.concept_set + GROUP BY concept_set_name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.concept_set + SET concept_set_name = concept_set_name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE concept_set_id = + (SELECT TOP (1) concept_set_id FROM ${ohdsiSchema}.concept_set + WHERE concept_set_name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + + DELETE FROM @duplicate_names WHERE id = id; + DELETE FROM @name_repeats WHERE id = id; + SET @k = (SELECT COUNT(*) FROM (SELECT concept_set_name FROM ${ohdsiSchema}.concept_set + GROUP BY concept_set_name + HAVING COUNT(*) > 1) AS temp); END; - SET @i = @i + 1; - SET @j = 1; - END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'CS_NAME'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS @@ -67,42 +82,57 @@ BEGIN DECLARE @amount_of_constraints int; DECLARE @constraint_title varchar(100); DECLARE @schema_title varchar(100); + DECLARE @k int; - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.cohort_definition - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.cohort_definition - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.cohort_definition + GROUP BY name + HAVING COUNT(*) > 1) AS temp); + + WHILE @k > 0 BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.cohort_definition - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE id = - (SELECT TOP (1) id FROM ${ohdsiSchema}.cohort_definition - WHERE name = @dupl_name - ); - SET @j = @j + 1; + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.cohort_definition + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.cohort_definition + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.cohort_definition + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE id = + (SELECT TOP (1) id FROM ${ohdsiSchema}.cohort_definition + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + + DELETE FROM @duplicate_names WHERE id = id; + DELETE FROM @name_repeats WHERE id = id; + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.cohort_definition + GROUP BY name + HAVING COUNT(*) > 1) AS temp); END; - SET @i = @i + 1; - SET @j = 1; - END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'CD_NAME'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS @@ -126,42 +156,57 @@ BEGIN DECLARE @amount_of_constraints int; DECLARE @constraint_title varchar(100); DECLARE @schema_title varchar(100); - - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.cohort_characterization - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.cohort_characterization - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) + DECLARE @k int; + + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.cohort_characterization + GROUP BY name + HAVING COUNT(*) > 1) AS temp); + + WHILE @k > 0 BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.cohort_characterization - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE id = - (SELECT TOP (1) id FROM ${ohdsiSchema}.cohort_characterization - WHERE name = @dupl_name - ); - SET @j = @j + 1; + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.cohort_characterization + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.cohort_characterization + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.cohort_characterization + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE id = + (SELECT TOP (1) id FROM ${ohdsiSchema}.cohort_characterization + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + + DELETE FROM @duplicate_names WHERE id = id; + DELETE FROM @name_repeats WHERE id = id; + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.cohort_characterization + GROUP BY name + HAVING COUNT(*) > 1) AS temp); END; - SET @i = @i + 1; - SET @j = 1; - END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'CC_NAME'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS @@ -185,42 +230,58 @@ BEGIN DECLARE @amount_of_constraints int; DECLARE @constraint_title varchar(100); DECLARE @schema_title varchar(100); + DECLARE @k int; - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.fe_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.fe_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.fe_analysis + GROUP BY name + HAVING COUNT(*) > 1) AS temp); + + WHILE @k > 0 BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.fe_analysis - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE id = - (SELECT TOP (1) id FROM ${ohdsiSchema}.fe_analysis - WHERE name = @dupl_name - ); - SET @j = @j + 1; + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.fe_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.fe_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.fe_analysis + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE id = + (SELECT TOP (1) id FROM ${ohdsiSchema}.fe_analysis + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + + DELETE FROM @duplicate_names WHERE id = id; + DELETE FROM @name_repeats WHERE id = id; + + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.fe_analysis + GROUP BY name + HAVING COUNT(*) > 1) AS temp); END; - SET @i = @i + 1; - SET @j = 1; - END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'FE_NAME'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS @@ -244,42 +305,57 @@ BEGIN DECLARE @amount_of_constraints int; DECLARE @constraint_title varchar(100); DECLARE @schema_title varchar(100); + DECLARE @k int; - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.pathway_analysis - GROUP BY name - HAVING COUNT(*) > 1; + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.pathway_analysis + GROUP BY name + HAVING COUNT(*) > 1) AS temp); - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.pathway_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) + WHILE @k > 0 BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.pathway_analysis - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE id = - (SELECT TOP (1) id FROM ${ohdsiSchema}.pathway_analysis - WHERE name = @dupl_name - ); - SET @j = @j + 1; + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.pathway_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.pathway_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.pathway_analysis + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE id = + (SELECT TOP (1) id FROM ${ohdsiSchema}.pathway_analysis + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + + DELETE FROM @duplicate_names WHERE id = id; + DELETE FROM @name_repeats WHERE id = id; + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.pathway_analysis + GROUP BY name + HAVING COUNT(*) > 1) AS temp); END; - SET @i = @i + 1; - SET @j = 1; - END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'PW_NAME'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS @@ -303,42 +379,57 @@ BEGIN DECLARE @amount_of_constraints int; DECLARE @constraint_title varchar(100); DECLARE @schema_title varchar(100); + DECLARE @k int; - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.ir_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.ir_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.ir_analysis + GROUP BY name + HAVING COUNT(*) > 1) AS temp); + + WHILE @k > 0 BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.ir_analysis - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE id = - (SELECT TOP (1) id FROM ${ohdsiSchema}.ir_analysis - WHERE name = @dupl_name - ); - SET @j = @j + 1; + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.ir_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.ir_analysis + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.ir_analysis + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE id = + (SELECT TOP (1) id FROM ${ohdsiSchema}.ir_analysis + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + + DELETE FROM @duplicate_names WHERE id = id; + DELETE FROM @name_repeats WHERE id = id; + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.ir_analysis + GROUP BY name + HAVING COUNT(*) > 1) AS temp); END; - SET @i = @i + 1; - SET @j = 1; - END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'IR_NAME'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS @@ -362,42 +453,58 @@ BEGIN DECLARE @amount_of_constraints int; DECLARE @constraint_title varchar(100); DECLARE @schema_title varchar(100); + DECLARE @k int; - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.estimation - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.estimation - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.estimation + GROUP BY name + HAVING COUNT(*) > 1) AS temp); + + WHILE @k > 0 BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.estimation - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE estimation_id = - (SELECT TOP (1) estimation_id FROM ${ohdsiSchema}.estimation - WHERE name = @dupl_name - ); - SET @j = @j + 1; + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.estimation + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.estimation + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.estimation + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE estimation_id = + (SELECT TOP (1) estimation_id FROM ${ohdsiSchema}.estimation + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.estimation + GROUP BY name + HAVING COUNT(*) > 1) AS temp); + DELETE FROM @duplicate_names WHERE id = id; + DELETE FROM @name_repeats WHERE id = id; END; - SET @i = @i + 1; - SET @j = 1; - END; + + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'ESTIMATION_NAME'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS @@ -421,42 +528,57 @@ BEGIN DECLARE @amount_of_constraints int; DECLARE @constraint_title varchar(100); DECLARE @schema_title varchar(100); + DECLARE @k int; - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.prediction - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.prediction - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.prediction + GROUP BY name + HAVING COUNT(*) > 1) AS temp); + + WHILE @k > 0 BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.prediction - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE prediction_id = - (SELECT TOP (1) prediction_id FROM ${ohdsiSchema}.prediction - WHERE name = @dupl_name - ); - SET @j = @j + 1; + INSERT INTO @duplicate_names + SELECT name FROM ${ohdsiSchema}.prediction + GROUP BY name + HAVING COUNT(*) > 1; + + INSERT INTO @name_repeats + SELECT COUNT(*) FROM ${ohdsiSchema}.prediction + GROUP BY name + HAVING COUNT(*) > 1; + + SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); + + DECLARE @i int = 1; + DECLARE @j int = 1; + DECLARE @name_repeat int = 0; + DECLARE @dupl_name varchar(100); + + WHILE @i <= coalesce(@amount_of_duplicate_names, 0) + BEGIN + SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); + WHILE @j <= coalesce(@name_repeat, 0) + BEGIN + SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); + + UPDATE ${ohdsiSchema}.prediction + SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' + WHERE prediction_id = + (SELECT TOP (1) prediction_id FROM ${ohdsiSchema}.prediction + WHERE name = @dupl_name + ); + SET @j = @j + 1; + END; + SET @i = @i + 1; + SET @j = 1; + END; + + SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.prediction + GROUP BY name + HAVING COUNT(*) > 1) AS temp); + DELETE FROM @duplicate_names WHERE id = id; + DELETE FROM @name_repeats WHERE id = id; END; - SET @i = @i + 1; - SET @j = 1; - END; + SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'PREDICTION_NAME'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS From ac74e90a27aa3df78f58ecda4bb38060bd22331d Mon Sep 17 00:00:00 2001 From: Anastasiia Klochkova Date: Thu, 16 May 2019 19:53:19 +0300 Subject: [PATCH 5/7] renamed constraint name --- ...add-unique-name-constraint-to-entities.sql | 16 +++++++------- ...add-unique-name-constraint-to-entities.sql | 22 +++++++++---------- ...add-unique-name-constraint-to-entities.sql | 16 +++++++------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index 9c24bd0d3e..4c5ec76af6 100644 --- a/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -47,7 +47,7 @@ BEGIN END LOOP; - constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'CS_NAME'; + constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'cs_name'; schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -116,7 +116,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'CD_NAME'; + constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'cd_name'; schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -185,7 +185,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'CC_NAME'; + constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'cc_name'; schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -253,7 +253,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'FE_NAME'; + constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'fe_name'; schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -321,7 +321,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'PW_NAME'; + constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'pw_name'; schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -389,7 +389,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'IR_NAME'; + constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'ir_name'; schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -457,7 +457,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'ES_NAME'; + constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'es_name'; schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints @@ -525,7 +525,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'U_' || ${ohdsiSchemaQuotes} || '_' || 'PD_NAME'; + constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'pd_name'; schema_title := ${ohdsiSchemaQuotes}; SELECT COUNT(*) INTO amount_of_constraints diff --git a/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index 1fe07bac6e..6f2d8a5c50 100644 --- a/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -1,5 +1,5 @@ CREATE OR REPLACE FUNCTION ${ohdsiSchema}.rename_duplicate_names(name_title VARCHAR(20), id_title VARCHAR(15), - table_title VARCHAR(30)) RETURNS VOID + table_title VARCHAR(30), constraint_title VARCHAR(2)) RETURNS VOID LANGUAGE 'plpgsql' AS $$ @@ -53,7 +53,7 @@ BEGIN END LOOP; END LOOP; - constraint_name := concat('unique_name_', ${ohdsiSchemaQuotes}, '_', table_title); + constraint_name := concat('uq_', ${ohdsiSchemaQuotes}, '_', constraint_title, '_name'); EXECUTE format('SELECT COUNT(*) FROM information_schema.table_constraints @@ -70,13 +70,13 @@ BEGIN END; $$; -SELECT rename_duplicate_names('concept_set_name', 'concept_set_id', 'concept_set'); -SELECT rename_duplicate_names('name', 'id', 'cohort_definition'); -SELECT rename_duplicate_names('name', 'id', 'cohort_characterization'); -SELECT rename_duplicate_names('name', 'id', 'fe_analysis'); -SELECT rename_duplicate_names('name', 'id', 'pathway_analysis'); -SELECT rename_duplicate_names('name', 'id', 'ir_analysis'); -SELECT rename_duplicate_names('name', 'estimation_id', 'estimation'); -SELECT rename_duplicate_names('name', 'prediction_id', 'prediction'); +SELECT rename_duplicate_names('concept_set_name', 'concept_set_id', 'concept_set', 'cs'); +SELECT rename_duplicate_names('name', 'id', 'cohort_definition', 'cd'); +SELECT rename_duplicate_names('name', 'id', 'cohort_characterization', 'cc'); +SELECT rename_duplicate_names('name', 'id', 'fe_analysis', 'fe'); +SELECT rename_duplicate_names('name', 'id', 'pathway_analysis', 'pw'); +SELECT rename_duplicate_names('name', 'id', 'ir_analysis', 'ir'); +SELECT rename_duplicate_names('name', 'estimation_id', 'estimation', 'es'); +SELECT rename_duplicate_names('name', 'prediction_id', 'prediction', 'pd'); -DROP FUNCTION ${ohdsiSchema}.rename_duplicate_names(name_title VARCHAR(20), id_title VARCHAR(15), table_title VARCHAR(30)); \ No newline at end of file +DROP FUNCTION ${ohdsiSchema}.rename_duplicate_names(name_title VARCHAR(20), id_title VARCHAR(15), table_title VARCHAR(30), constraint_title VARCHAR(2)); \ No newline at end of file diff --git a/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index 7a802d15ae..4dc680465e 100644 --- a/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -59,7 +59,7 @@ BEGIN HAVING COUNT(*) > 1) AS temp); END; - SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'CS_NAME'; + SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'cs_name'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} @@ -133,7 +133,7 @@ BEGIN HAVING COUNT(*) > 1) AS temp); END; - SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'CD_NAME'; + SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'cd_name'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} @@ -207,7 +207,7 @@ BEGIN HAVING COUNT(*) > 1) AS temp); END; - SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'CC_NAME'; + SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'cc_name'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} @@ -282,7 +282,7 @@ BEGIN HAVING COUNT(*) > 1) AS temp); END; - SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'FE_NAME'; + SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'fe_name'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} @@ -356,7 +356,7 @@ BEGIN HAVING COUNT(*) > 1) AS temp); END; - SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'PW_NAME'; + SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'pw_name'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} @@ -430,7 +430,7 @@ BEGIN HAVING COUNT(*) > 1) AS temp); END; - SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'IR_NAME'; + SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'ir_name'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} @@ -505,7 +505,7 @@ BEGIN END; - SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'ESTIMATION_NAME'; + SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'es_name'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} @@ -579,7 +579,7 @@ BEGIN DELETE FROM @name_repeats WHERE id = id; END; - SET @constraint_title = 'UNIQUE_' + ${ohdsiSchemaQuotes} + '_' + 'PREDICTION_NAME'; + SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'pd_name'; SET @schema_title = ${ohdsiSchemaQuotes}; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} From 44f46b24a5187a0aee502ea1f87180f09349342a Mon Sep 17 00:00:00 2001 From: Pavel Grafkin Date: Fri, 17 May 2019 11:47:44 -0400 Subject: [PATCH 6/7] Simplified replacements --- src/main/resources/application.properties | 1 - ...add-unique-name-constraint-to-entities.sql | 48 +++++++++---------- ...add-unique-name-constraint-to-entities.sql | 16 +++---- ...add-unique-name-constraint-to-entities.sql | 48 +++++++++---------- 4 files changed, 56 insertions(+), 57 deletions(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 339f504d81..82c2e9d87c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -46,7 +46,6 @@ flyway.validateOnMigrate=${flyway.validateOnMigrate} flyway.outOfOrder=true # Flyway Placeholders: flyway.placeholders.ohdsiSchema=${flyway.placeholders.ohdsiSchema} -flyway.placeholders.ohdsiSchemaQuotes='${flyway.placeholders.ohdsiSchema}' #Disable any auto init #http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html diff --git a/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index 4c5ec76af6..b43d4976e4 100644 --- a/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -47,12 +47,12 @@ BEGIN END LOOP; - constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'cs_name'; - schema_title := ${ohdsiSchemaQuotes}; + constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'cs_name'; + schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints FROM ALL_CONSTRAINTS - WHERE OWNER = ${ohdsiSchemaQuotes} + WHERE OWNER = '${ohdsiSchema}' AND CONSTRAINT_NAME = constraint_title AND TABLE_NAME = 'CONCEPT_SET'; @@ -116,12 +116,12 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'cd_name'; - schema_title := ${ohdsiSchemaQuotes}; + constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'cd_name'; + schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints FROM ALL_CONSTRAINTS - WHERE OWNER = ${ohdsiSchemaQuotes} + WHERE OWNER = '${ohdsiSchema}' AND CONSTRAINT_NAME = constraint_title AND TABLE_NAME = 'COHORT_DEFINITION'; @@ -185,12 +185,12 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'cc_name'; - schema_title := ${ohdsiSchemaQuotes}; + constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'cc_name'; + schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints FROM ALL_CONSTRAINTS - WHERE OWNER = ${ohdsiSchemaQuotes} + WHERE OWNER = '${ohdsiSchema}' AND CONSTRAINT_NAME = constraint_title AND TABLE_NAME = 'COHORT_CHARACTERIZATION'; @@ -253,12 +253,12 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'fe_name'; - schema_title := ${ohdsiSchemaQuotes}; + constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'fe_name'; + schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints FROM ALL_CONSTRAINTS - WHERE OWNER = ${ohdsiSchemaQuotes} + WHERE OWNER = '${ohdsiSchema}' AND CONSTRAINT_NAME = constraint_title AND TABLE_NAME = 'FE_ANALYSIS'; @@ -321,12 +321,12 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'pw_name'; - schema_title := ${ohdsiSchemaQuotes}; + constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'pw_name'; + schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints FROM ALL_CONSTRAINTS - WHERE OWNER = ${ohdsiSchemaQuotes} + WHERE OWNER = '${ohdsiSchema}' AND CONSTRAINT_NAME = constraint_title AND TABLE_NAME = 'PATHWAY_ANALYSIS'; @@ -389,12 +389,12 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'ir_name'; - schema_title := ${ohdsiSchemaQuotes}; + constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'ir_name'; + schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints FROM ALL_CONSTRAINTS - WHERE OWNER = ${ohdsiSchemaQuotes} + WHERE OWNER = '${ohdsiSchema}' AND CONSTRAINT_NAME = constraint_title AND TABLE_NAME = 'IR_ANALYSIS'; @@ -457,12 +457,12 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'es_name'; - schema_title := ${ohdsiSchemaQuotes}; + constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'es_name'; + schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints FROM ALL_CONSTRAINTS - WHERE OWNER = ${ohdsiSchemaQuotes} + WHERE OWNER = '${ohdsiSchema}' AND CONSTRAINT_NAME = constraint_title AND TABLE_NAME = 'ESTIMATION'; @@ -525,12 +525,12 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || ${ohdsiSchemaQuotes} || '_' || 'pd_name'; - schema_title := ${ohdsiSchemaQuotes}; + constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'pd_name'; + schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints FROM ALL_CONSTRAINTS - WHERE OWNER = ${ohdsiSchemaQuotes} + WHERE OWNER = '${ohdsiSchema}' AND CONSTRAINT_NAME = constraint_title AND TABLE_NAME = 'PREDICTION'; diff --git a/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index 6f2d8a5c50..342738c623 100644 --- a/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -16,20 +16,20 @@ BEGIN FROM (SELECT %I FROM %I.%I GROUP BY %I - HAVING COUNT(*) > 1) as temp;', name_title, ${ohdsiSchemaQuotes}, table_title, + HAVING COUNT(*) > 1) as temp;', name_title, '${ohdsiSchema}', table_title, name_title) INTO all_duplicates; FOR k IN 0 .. coalesce(all_duplicates, 0) LOOP EXECUTE format('SELECT ARRAY(SELECT %I FROM %I.%I GROUP BY %I - HAVING COUNT(*) > 1)', name_title, ${ohdsiSchemaQuotes}, table_title, + HAVING COUNT(*) > 1)', name_title, '${ohdsiSchema}', table_title, name_title) INTO duplicate_names; EXECUTE format('SELECT ARRAY(SELECT COUNT(*) FROM %I.%I GROUP BY %I - HAVING COUNT(*) > 1);', ${ohdsiSchemaQuotes}, table_title, + HAVING COUNT(*) > 1);', '${ohdsiSchema}', table_title, name_title) INTO name_repeats; @@ -45,26 +45,26 @@ BEGIN FROM %I.%I WHERE %I = $2 ORDER BY %I - LIMIT 1);', ${ohdsiSchemaQuotes}, table_title, name_title, name_title, id_title, + LIMIT 1);', '${ohdsiSchema}', table_title, name_title, name_title, id_title, id_title, - ${ohdsiSchemaQuotes}, table_title, + '${ohdsiSchema}', table_title, name_title, id_title) USING j, duplicate_names[i]; END LOOP; END LOOP; END LOOP; - constraint_name := concat('uq_', ${ohdsiSchemaQuotes}, '_', constraint_title, '_name'); + constraint_name := concat('uq_', '${ohdsiSchema}', '_', constraint_title, '_name'); EXECUTE format('SELECT COUNT(*) FROM information_schema.table_constraints WHERE constraint_schema = ''%I'' AND constraint_name = ''%I'' - AND table_name = ''%I''', ${ohdsiSchemaQuotes}, constraint_name, + AND table_name = ''%I''', '${ohdsiSchema}', constraint_name, table_title) INTO amount_of_constraints; IF amount_of_constraints = 0 THEN EXECUTE format('ALTER TABLE %I.%I - ADD CONSTRAINT %I UNIQUE (%I);', ${ohdsiSchemaQuotes}, table_title, constraint_name, + ADD CONSTRAINT %I UNIQUE (%I);', '${ohdsiSchema}', table_title, constraint_name, name_title); END IF; END; diff --git a/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index 4dc680465e..d0fe48b31f 100644 --- a/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -59,10 +59,10 @@ BEGIN HAVING COUNT(*) > 1) AS temp); END; - SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'cs_name'; - SET @schema_title = ${ohdsiSchemaQuotes}; + SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'cs_name'; + SET @schema_title = '${ohdsiSchema}'; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + WHERE TABLE_SCHEMA = '${ohdsiSchema}' AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'concept_set'); IF @amount_of_constraints = 0 BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.concept_set ADD CONSTRAINT ' + @constraint_title +' UNIQUE (concept_set_name)'); END; @@ -133,10 +133,10 @@ BEGIN HAVING COUNT(*) > 1) AS temp); END; - SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'cd_name'; - SET @schema_title = ${ohdsiSchemaQuotes}; + SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'cd_name'; + SET @schema_title = '${ohdsiSchema}'; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + WHERE TABLE_SCHEMA = '${ohdsiSchema}' AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'cohort_definition'); IF @amount_of_constraints = 0 BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.cohort_definition ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; @@ -207,10 +207,10 @@ BEGIN HAVING COUNT(*) > 1) AS temp); END; - SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'cc_name'; - SET @schema_title = ${ohdsiSchemaQuotes}; + SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'cc_name'; + SET @schema_title = '${ohdsiSchema}'; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + WHERE TABLE_SCHEMA = '${ohdsiSchema}' AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'cohort_characterization'); IF @amount_of_constraints = 0 BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.cohort_characterization ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; @@ -282,10 +282,10 @@ BEGIN HAVING COUNT(*) > 1) AS temp); END; - SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'fe_name'; - SET @schema_title = ${ohdsiSchemaQuotes}; + SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'fe_name'; + SET @schema_title = '${ohdsiSchema}'; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + WHERE TABLE_SCHEMA = '${ohdsiSchema}' AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'fe_analysis'); IF @amount_of_constraints = 0 BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.fe_analysis ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; @@ -356,10 +356,10 @@ BEGIN HAVING COUNT(*) > 1) AS temp); END; - SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'pw_name'; - SET @schema_title = ${ohdsiSchemaQuotes}; + SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'pw_name'; + SET @schema_title = '${ohdsiSchema}'; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + WHERE TABLE_SCHEMA = '${ohdsiSchema}' AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'pathway_analysis'); IF @amount_of_constraints = 0 BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.pathway_analysis ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; @@ -430,10 +430,10 @@ BEGIN HAVING COUNT(*) > 1) AS temp); END; - SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'ir_name'; - SET @schema_title = ${ohdsiSchemaQuotes}; + SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'ir_name'; + SET @schema_title = '${ohdsiSchema}'; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + WHERE TABLE_SCHEMA = '${ohdsiSchema}' AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'ir_analysis'); IF @amount_of_constraints = 0 BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.ir_analysis ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; @@ -505,10 +505,10 @@ BEGIN END; - SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'es_name'; - SET @schema_title = ${ohdsiSchemaQuotes}; + SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'es_name'; + SET @schema_title = '${ohdsiSchema}'; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + WHERE TABLE_SCHEMA = '${ohdsiSchema}' AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'estimation'); IF @amount_of_constraints = 0 BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.estimation ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; @@ -579,10 +579,10 @@ BEGIN DELETE FROM @name_repeats WHERE id = id; END; - SET @constraint_title = 'uq_' + ${ohdsiSchemaQuotes} + '_' + 'pd_name'; - SET @schema_title = ${ohdsiSchemaQuotes}; + SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'pd_name'; + SET @schema_title = '${ohdsiSchema}'; SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = ${ohdsiSchemaQuotes} + WHERE TABLE_SCHEMA = '${ohdsiSchema}' AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'prediction'); IF @amount_of_constraints = 0 BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.prediction ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; From 526fc19953c71527e477c41ea147c444aafad72c Mon Sep 17 00:00:00 2001 From: Anthony Sena Date: Fri, 17 May 2019 17:47:50 -0400 Subject: [PATCH 7/7] Revised SQL/PostgreSQL migration, removed schema from constraint name --- ...add-unique-name-constraint-to-entities.sql | 16 +- ...add-unique-name-constraint-to-entities.sql | 20 +- ...add-unique-name-constraint-to-entities.sql | 756 ++++-------------- 3 files changed, 194 insertions(+), 598 deletions(-) diff --git a/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index b43d4976e4..dd67dd238b 100644 --- a/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/oracle/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -47,7 +47,7 @@ BEGIN END LOOP; - constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'cs_name'; + constraint_title := 'uq_cs_name'; schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints @@ -116,7 +116,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'cd_name'; + constraint_title := 'uq_cd_name'; schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints @@ -185,7 +185,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'cc_name'; + constraint_title := 'uq_cc_name'; schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints @@ -253,7 +253,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'fe_name'; + constraint_title := 'uq_fe_name'; schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints @@ -321,7 +321,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'pw_name'; + constraint_title := 'uq_pw_name'; schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints @@ -389,7 +389,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'ir_name'; + constraint_title := 'uq_ir_name'; schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints @@ -457,7 +457,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'es_name'; + constraint_title := 'uq_es_name'; schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints @@ -525,7 +525,7 @@ BEGIN name_repeats.DELETE(); END LOOP; - constraint_title := 'uq_' || '${ohdsiSchema}' || '_' || 'pd_name'; + constraint_title := 'uq_pd_name'; schema_title := '${ohdsiSchema}'; SELECT COUNT(*) INTO amount_of_constraints diff --git a/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index 342738c623..01ed236296 100644 --- a/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/postgresql/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -4,7 +4,7 @@ CREATE OR REPLACE FUNCTION ${ohdsiSchema}.rename_duplicate_names(name_title VARC AS $$ DECLARE - duplicate_names VARCHAR(100)[]; + duplicate_names VARCHAR(400)[]; name_repeats INT[]; amount_of_duplicate_names INT; amount_of_constraints INT; @@ -53,7 +53,7 @@ BEGIN END LOOP; END LOOP; - constraint_name := concat('uq_', '${ohdsiSchema}', '_', constraint_title, '_name'); + constraint_name := concat('uq_', constraint_title, '_name'); EXECUTE format('SELECT COUNT(*) FROM information_schema.table_constraints @@ -70,13 +70,13 @@ BEGIN END; $$; -SELECT rename_duplicate_names('concept_set_name', 'concept_set_id', 'concept_set', 'cs'); -SELECT rename_duplicate_names('name', 'id', 'cohort_definition', 'cd'); -SELECT rename_duplicate_names('name', 'id', 'cohort_characterization', 'cc'); -SELECT rename_duplicate_names('name', 'id', 'fe_analysis', 'fe'); -SELECT rename_duplicate_names('name', 'id', 'pathway_analysis', 'pw'); -SELECT rename_duplicate_names('name', 'id', 'ir_analysis', 'ir'); -SELECT rename_duplicate_names('name', 'estimation_id', 'estimation', 'es'); -SELECT rename_duplicate_names('name', 'prediction_id', 'prediction', 'pd'); +SELECT ${ohdsiSchema}.rename_duplicate_names('concept_set_name', 'concept_set_id', 'concept_set', 'cs'); +SELECT ${ohdsiSchema}.rename_duplicate_names('name', 'id', 'cohort_definition', 'cd'); +SELECT ${ohdsiSchema}.rename_duplicate_names('name', 'id', 'cohort_characterization', 'cc'); +SELECT ${ohdsiSchema}.rename_duplicate_names('name', 'id', 'fe_analysis', 'fe'); +SELECT ${ohdsiSchema}.rename_duplicate_names('name', 'id', 'pathway_analysis', 'pw'); +SELECT ${ohdsiSchema}.rename_duplicate_names('name', 'id', 'ir_analysis', 'ir'); +SELECT ${ohdsiSchema}.rename_duplicate_names('name', 'estimation_id', 'estimation', 'es'); +SELECT ${ohdsiSchema}.rename_duplicate_names('name', 'prediction_id', 'prediction', 'pd'); DROP FUNCTION ${ohdsiSchema}.rename_duplicate_names(name_title VARCHAR(20), id_title VARCHAR(15), table_title VARCHAR(30), constraint_title VARCHAR(2)); \ No newline at end of file diff --git a/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql b/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql index d0fe48b31f..9c2fc3276e 100644 --- a/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql +++ b/src/main/resources/db/migration/sqlserver/V2.8.0.20190424150601__add-unique-name-constraint-to-entities.sql @@ -1,602 +1,198 @@ -- Alter Concept Set table -CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_cs_names AS -BEGIN - DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); - DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); - DECLARE @amount_of_duplicate_names int; - DECLARE @amount_of_constraints int; - DECLARE @constraint_title varchar(100); - DECLARE @schema_title varchar(100); - DECLARE @k int; - - SET @k = (SELECT COUNT(*) FROM (SELECT concept_set_name FROM ${ohdsiSchema}.concept_set - GROUP BY concept_set_name - HAVING COUNT(*) > 1) AS temp); - - WHILE @k > 0 - BEGIN - INSERT INTO @duplicate_names - SELECT concept_set_name FROM ${ohdsiSchema}.concept_set - GROUP BY concept_set_name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.concept_set - GROUP BY concept_set_name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) - BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.concept_set - SET concept_set_name = concept_set_name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE concept_set_id = - (SELECT TOP (1) concept_set_id FROM ${ohdsiSchema}.concept_set - WHERE concept_set_name = @dupl_name - ); - SET @j = @j + 1; - END; - SET @i = @i + 1; - SET @j = 1; - END; - - DELETE FROM @duplicate_names WHERE id = id; - DELETE FROM @name_repeats WHERE id = id; - SET @k = (SELECT COUNT(*) FROM (SELECT concept_set_name FROM ${ohdsiSchema}.concept_set - GROUP BY concept_set_name - HAVING COUNT(*) > 1) AS temp); - END; - - SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'cs_name'; - SET @schema_title = '${ohdsiSchema}'; - SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = '${ohdsiSchema}' - AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'concept_set'); - IF @amount_of_constraints = 0 - BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.concept_set ADD CONSTRAINT ' + @constraint_title +' UNIQUE (concept_set_name)'); END; -END; -GO - -EXEC ${ohdsiSchema}.rename_cs_names; -GO +UPDATE ${ohdsiSchema}.concept_set +SET concept_set_name = u.concept_set_name + ' (' + CAST(u.rn AS varchar(15)) + ')' +FROM + ${ohdsiSchema}.concept_set, + ( + SELECT d.concept_set_id, d.concept_set_name, d.rn + FROM + ( + select a.concept_set_name, cd.concept_set_id, ROW_NUMBER() OVER(PARTITION BY a.concept_set_name ORDER BY cd.concept_set_id ASC) rn + FROM + ( + select concept_set_name, COUNT(*) cnt + FROM ${ohdsiSchema}.concept_set + group by concept_set_name having COUNT(*) > 1 + ) a + INNER JOIN ${ohdsiSchema}.concept_set cd ON a.concept_set_name = cd.concept_set_name + ) d + ) u + WHERE u.concept_set_id = ${ohdsiSchema}.concept_set.concept_set_id +; + +ALTER TABLE ${ohdsiSchema}.concept_set ADD CONSTRAINT uq_cs_name UNIQUE (concept_set_name); -- Alter Cohort Definition table -CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_cd_names AS -BEGIN - DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); - DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); - DECLARE @amount_of_duplicate_names int; - DECLARE @amount_of_constraints int; - DECLARE @constraint_title varchar(100); - DECLARE @schema_title varchar(100); - DECLARE @k int; - - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.cohort_definition - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - - WHILE @k > 0 - BEGIN - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.cohort_definition - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.cohort_definition - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) - BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.cohort_definition - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE id = - (SELECT TOP (1) id FROM ${ohdsiSchema}.cohort_definition - WHERE name = @dupl_name - ); - SET @j = @j + 1; - END; - SET @i = @i + 1; - SET @j = 1; - END; - - DELETE FROM @duplicate_names WHERE id = id; - DELETE FROM @name_repeats WHERE id = id; - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.cohort_definition - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - END; - - SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'cd_name'; - SET @schema_title = '${ohdsiSchema}'; - SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = '${ohdsiSchema}' - AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'cohort_definition'); - IF @amount_of_constraints = 0 - BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.cohort_definition ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; -END; -GO - -EXEC ${ohdsiSchema}.rename_cd_names; -GO +UPDATE ${ohdsiSchema}.cohort_definition +SET name = u.name + ' (' + CAST(u.rn AS varchar(15)) + ')' +FROM + ${ohdsiSchema}.cohort_definition, + ( + SELECT d.id, d.name, d.rn + FROM + ( + select a.name, cd.id, ROW_NUMBER() OVER(PARTITION BY a.name ORDER BY cd.id ASC) rn + FROM + ( + select name, COUNT(*) cnt + FROM ${ohdsiSchema}.cohort_definition + group by name having COUNT(*) > 1 + ) a + INNER JOIN ${ohdsiSchema}.cohort_definition cd ON a.name = cd.name + ) d + ) u + WHERE u.id = ${ohdsiSchema}.cohort_definition.id +; + +ALTER TABLE ${ohdsiSchema}.cohort_definition ADD CONSTRAINT uq_cd_name UNIQUE (name); -- Alter Cohort Characterization table - -CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_cc_names AS -BEGIN - DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); - DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); - DECLARE @amount_of_duplicate_names int; - DECLARE @amount_of_constraints int; - DECLARE @constraint_title varchar(100); - DECLARE @schema_title varchar(100); - DECLARE @k int; - - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.cohort_characterization - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - - WHILE @k > 0 - BEGIN - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.cohort_characterization - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.cohort_characterization - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) - BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.cohort_characterization - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE id = - (SELECT TOP (1) id FROM ${ohdsiSchema}.cohort_characterization - WHERE name = @dupl_name - ); - SET @j = @j + 1; - END; - SET @i = @i + 1; - SET @j = 1; - END; - - DELETE FROM @duplicate_names WHERE id = id; - DELETE FROM @name_repeats WHERE id = id; - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.cohort_characterization - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - END; - - SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'cc_name'; - SET @schema_title = '${ohdsiSchema}'; - SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = '${ohdsiSchema}' - AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'cohort_characterization'); - IF @amount_of_constraints = 0 - BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.cohort_characterization ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; -END; -GO - -EXEC ${ohdsiSchema}.rename_cc_names; -GO +UPDATE ${ohdsiSchema}.cohort_characterization +SET name = u.name + ' (' + CAST(u.rn AS varchar(15)) + ')' +FROM + ${ohdsiSchema}.cohort_characterization, + ( + SELECT d.id, d.name, d.rn + FROM + ( + select a.name, cd.id, ROW_NUMBER() OVER(PARTITION BY a.name ORDER BY cd.id ASC) rn + FROM + ( + select name, COUNT(*) cnt + FROM ${ohdsiSchema}.cohort_characterization + group by name having COUNT(*) > 1 + ) a + INNER JOIN ${ohdsiSchema}.cohort_characterization cd ON a.name = cd.name + ) d + ) u + WHERE u.id = ${ohdsiSchema}.cohort_characterization.id +; + +ALTER TABLE ${ohdsiSchema}.cohort_characterization ADD CONSTRAINT uq_cc_name UNIQUE (name); -- Alter Fe Analysis Table -CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_fe_names AS -BEGIN - DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); - DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); - DECLARE @amount_of_duplicate_names int; - DECLARE @amount_of_constraints int; - DECLARE @constraint_title varchar(100); - DECLARE @schema_title varchar(100); - DECLARE @k int; - - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.fe_analysis - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - - WHILE @k > 0 - BEGIN - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.fe_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.fe_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) - BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.fe_analysis - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE id = - (SELECT TOP (1) id FROM ${ohdsiSchema}.fe_analysis - WHERE name = @dupl_name - ); - SET @j = @j + 1; - END; - SET @i = @i + 1; - SET @j = 1; - END; - - DELETE FROM @duplicate_names WHERE id = id; - DELETE FROM @name_repeats WHERE id = id; - - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.fe_analysis - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - END; - - SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'fe_name'; - SET @schema_title = '${ohdsiSchema}'; - SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = '${ohdsiSchema}' - AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'fe_analysis'); - IF @amount_of_constraints = 0 - BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.fe_analysis ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; -END; -GO - -EXEC ${ohdsiSchema}.rename_fe_names; -GO +UPDATE ${ohdsiSchema}.fe_analysis +SET name = u.name + ' (' + CAST(u.rn AS varchar(15)) + ')' +FROM + ${ohdsiSchema}.fe_analysis, + ( + SELECT d.id, d.name, d.rn + FROM + ( + select a.name, cd.id, ROW_NUMBER() OVER(PARTITION BY a.name ORDER BY cd.id ASC) rn + FROM + ( + select name, COUNT(*) cnt + FROM ${ohdsiSchema}.fe_analysis + group by name having COUNT(*) > 1 + ) a + INNER JOIN ${ohdsiSchema}.fe_analysis cd ON a.name = cd.name + ) d + ) u + WHERE u.id = ${ohdsiSchema}.fe_analysis.id +; + +ALTER TABLE ${ohdsiSchema}.fe_analysis ADD CONSTRAINT uq_fe_name UNIQUE (name); -- Alter Pathway Analysis Table -CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_pw_names AS -BEGIN - DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); - DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); - DECLARE @amount_of_duplicate_names int; - DECLARE @amount_of_constraints int; - DECLARE @constraint_title varchar(100); - DECLARE @schema_title varchar(100); - DECLARE @k int; - - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.pathway_analysis - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - - WHILE @k > 0 - BEGIN - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.pathway_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.pathway_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) - BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.pathway_analysis - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE id = - (SELECT TOP (1) id FROM ${ohdsiSchema}.pathway_analysis - WHERE name = @dupl_name - ); - SET @j = @j + 1; - END; - SET @i = @i + 1; - SET @j = 1; - END; - - DELETE FROM @duplicate_names WHERE id = id; - DELETE FROM @name_repeats WHERE id = id; - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.pathway_analysis - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - END; - - SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'pw_name'; - SET @schema_title = '${ohdsiSchema}'; - SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = '${ohdsiSchema}' - AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'pathway_analysis'); - IF @amount_of_constraints = 0 - BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.pathway_analysis ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; -END; -GO - -EXEC ${ohdsiSchema}.rename_pw_names; -GO +UPDATE ${ohdsiSchema}.pathway_analysis +SET name = u.name + ' (' + CAST(u.rn AS varchar(15)) + ')' +FROM + ${ohdsiSchema}.pathway_analysis, + ( + SELECT d.id, d.name, d.rn + FROM + ( + select a.name, cd.id, ROW_NUMBER() OVER(PARTITION BY a.name ORDER BY cd.id ASC) rn + FROM + ( + select name, COUNT(*) cnt + FROM ${ohdsiSchema}.pathway_analysis + group by name having COUNT(*) > 1 + ) a + INNER JOIN ${ohdsiSchema}.pathway_analysis cd ON a.name = cd.name + ) d + ) u + WHERE u.id = ${ohdsiSchema}.pathway_analysis.id +; + +ALTER TABLE ${ohdsiSchema}.pathway_analysis ADD CONSTRAINT uq_pw_name UNIQUE (name); -- Alter IR Analysis Table -CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_ir_names AS -BEGIN - DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); - DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); - DECLARE @amount_of_duplicate_names int; - DECLARE @amount_of_constraints int; - DECLARE @constraint_title varchar(100); - DECLARE @schema_title varchar(100); - DECLARE @k int; - - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.ir_analysis - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - - WHILE @k > 0 - BEGIN - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.ir_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.ir_analysis - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) - BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.ir_analysis - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE id = - (SELECT TOP (1) id FROM ${ohdsiSchema}.ir_analysis - WHERE name = @dupl_name - ); - SET @j = @j + 1; - END; - SET @i = @i + 1; - SET @j = 1; - END; - - DELETE FROM @duplicate_names WHERE id = id; - DELETE FROM @name_repeats WHERE id = id; - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.ir_analysis - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - END; - - SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'ir_name'; - SET @schema_title = '${ohdsiSchema}'; - SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = '${ohdsiSchema}' - AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'ir_analysis'); - IF @amount_of_constraints = 0 - BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.ir_analysis ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; -END; -GO - -EXEC ${ohdsiSchema}.rename_ir_names; -GO +UPDATE ${ohdsiSchema}.ir_analysis +SET name = u.name + ' (' + CAST(u.rn AS varchar(15)) + ')' +FROM + ${ohdsiSchema}.ir_analysis, + ( + SELECT d.id, d.name, d.rn + FROM + ( + select a.name, cd.id, ROW_NUMBER() OVER(PARTITION BY a.name ORDER BY cd.id ASC) rn + FROM + ( + select name, COUNT(*) cnt + FROM ${ohdsiSchema}.ir_analysis + group by name having COUNT(*) > 1 + ) a + INNER JOIN ${ohdsiSchema}.ir_analysis cd ON a.name = cd.name + ) d + ) u + WHERE u.id = ${ohdsiSchema}.ir_analysis.id +; + +ALTER TABLE ${ohdsiSchema}.ir_analysis ADD CONSTRAINT uq_ir_name UNIQUE (name); -- Alter Estimation table -CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_estimation_names AS -BEGIN - DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); - DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); - DECLARE @amount_of_duplicate_names int; - DECLARE @amount_of_constraints int; - DECLARE @constraint_title varchar(100); - DECLARE @schema_title varchar(100); - DECLARE @k int; - - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.estimation - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - - WHILE @k > 0 - BEGIN - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.estimation - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.estimation - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) - BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.estimation - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE estimation_id = - (SELECT TOP (1) estimation_id FROM ${ohdsiSchema}.estimation - WHERE name = @dupl_name - ); - SET @j = @j + 1; - END; - SET @i = @i + 1; - SET @j = 1; - END; - - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.estimation - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - DELETE FROM @duplicate_names WHERE id = id; - DELETE FROM @name_repeats WHERE id = id; - END; - - - SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'es_name'; - SET @schema_title = '${ohdsiSchema}'; - SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = '${ohdsiSchema}' - AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'estimation'); - IF @amount_of_constraints = 0 - BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.estimation ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; -END; -GO - -EXEC ${ohdsiSchema}.rename_estimation_names; -GO +UPDATE ${ohdsiSchema}.estimation +SET name = u.name + ' (' + CAST(u.rn AS varchar(15)) + ')' +FROM + ${ohdsiSchema}.estimation, + ( + SELECT d.estimation_id, d.name, d.rn + FROM + ( + select a.name, cd.estimation_id, ROW_NUMBER() OVER(PARTITION BY a.name ORDER BY cd.estimation_id ASC) rn + FROM + ( + select name, COUNT(*) cnt + FROM ${ohdsiSchema}.estimation + group by name having COUNT(*) > 1 + ) a + INNER JOIN ${ohdsiSchema}.estimation cd ON a.name = cd.name + ) d + ) u + WHERE u.estimation_id = ${ohdsiSchema}.estimation.estimation_id +; + +ALTER TABLE ${ohdsiSchema}.estimation ADD CONSTRAINT uq_es_name UNIQUE (name); -- Alter Prediction table -CREATE OR ALTER PROCEDURE ${ohdsiSchema}.rename_prediction_names AS -BEGIN - DECLARE @duplicate_names TABLE(id int IDENTITY (1, 1), duplicate_name varchar(100)); - DECLARE @name_repeats TABLE (id int IDENTITY (1, 1), repeat_number int); - DECLARE @amount_of_duplicate_names int; - DECLARE @amount_of_constraints int; - DECLARE @constraint_title varchar(100); - DECLARE @schema_title varchar(100); - DECLARE @k int; - - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.prediction - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - - WHILE @k > 0 - BEGIN - INSERT INTO @duplicate_names - SELECT name FROM ${ohdsiSchema}.prediction - GROUP BY name - HAVING COUNT(*) > 1; - - INSERT INTO @name_repeats - SELECT COUNT(*) FROM ${ohdsiSchema}.prediction - GROUP BY name - HAVING COUNT(*) > 1; - - SET @amount_of_duplicate_names = (SELECT COUNT(*) FROM @duplicate_names); - - DECLARE @i int = 1; - DECLARE @j int = 1; - DECLARE @name_repeat int = 0; - DECLARE @dupl_name varchar(100); - - WHILE @i <= coalesce(@amount_of_duplicate_names, 0) - BEGIN - SET @name_repeat = (SELECT repeat_number FROM @name_repeats WHERE id = @i); - WHILE @j <= coalesce(@name_repeat, 0) - BEGIN - SET @dupl_name = (SELECT duplicate_name FROM @duplicate_names WHERE id = @i); - - UPDATE ${ohdsiSchema}.prediction - SET name = name + ' (' + CAST(@j AS varchar(15)) + ')' - WHERE prediction_id = - (SELECT TOP (1) prediction_id FROM ${ohdsiSchema}.prediction - WHERE name = @dupl_name - ); - SET @j = @j + 1; - END; - SET @i = @i + 1; - SET @j = 1; - END; - - SET @k = (SELECT COUNT(*) FROM (SELECT name FROM ${ohdsiSchema}.prediction - GROUP BY name - HAVING COUNT(*) > 1) AS temp); - DELETE FROM @duplicate_names WHERE id = id; - DELETE FROM @name_repeats WHERE id = id; - END; - - SET @constraint_title = 'uq_' + '${ohdsiSchema}' + '_' + 'pd_name'; - SET @schema_title = '${ohdsiSchema}'; - SET @amount_of_constraints = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = '${ohdsiSchema}' - AND CONSTRAINT_NAME = @constraint_title AND TABLE_NAME = 'prediction'); - IF @amount_of_constraints = 0 - BEGIN EXEC ('ALTER TABLE ' + @schema_title + '.prediction ADD CONSTRAINT ' + @constraint_title +' UNIQUE (name)'); END; -END; -GO - -EXEC ${ohdsiSchema}.rename_prediction_names; -GO - -DROP PROCEDURE ${ohdsiSchema}.rename_cs_names; -DROP PROCEDURE ${ohdsiSchema}.rename_cd_names; -DROP PROCEDURE ${ohdsiSchema}.rename_cc_names; -DROP PROCEDURE ${ohdsiSchema}.rename_fe_names; -DROP PROCEDURE ${ohdsiSchema}.rename_pw_names; -DROP PROCEDURE ${ohdsiSchema}.rename_ir_names; -DROP PROCEDURE ${ohdsiSchema}.rename_estimation_names; -DROP PROCEDURE ${ohdsiSchema}.rename_prediction_names; \ No newline at end of file +UPDATE ${ohdsiSchema}.prediction +SET name = u.name + ' (' + CAST(u.rn AS varchar(15)) + ')' +FROM + ${ohdsiSchema}.prediction, + ( + SELECT d.prediction_id, d.name, d.rn + FROM + ( + select a.name, cd.prediction_id, ROW_NUMBER() OVER(PARTITION BY a.name ORDER BY cd.prediction_id ASC) rn + FROM + ( + select name, COUNT(*) cnt + FROM ${ohdsiSchema}.prediction + group by name having COUNT(*) > 1 + ) a + INNER JOIN ${ohdsiSchema}.prediction cd ON a.name = cd.name + ) d + ) u + WHERE u.prediction_id = ${ohdsiSchema}.prediction.prediction_id +; + +ALTER TABLE ${ohdsiSchema}.prediction ADD CONSTRAINT uq_pd_name UNIQUE (name); \ No newline at end of file