From: danielhanrahan Date: Thu, 4 May 2023 21:34:41 +0000 (+0100) Subject: Remove dataspace_id column from Fragment table X-Git-Tag: 3.3.2~21 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=b740156bb50784fc461e2fbda13cd91e3f208b38;p=cps.git Remove dataspace_id column from Fragment table - Remove dataspace_id column from fragment table and drop associated index, foreign key constraint and uniqueness constaint. - Add uniqueness constraint using only fragment xpath and anchor_id. - Add not-null constraint to anchor_id. - Update code and test data to remove references to dataspace_id. - Repopulate the dataspace_id in Liquibase rollback (verified with manual testing of update/rollback). Issue-ID: CPS-1677 Signed-off-by: danielhanrahan Change-Id: I467cccba25ac5d884ec790064ca58150281b7e1d --- diff --git a/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java b/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java index 62c8c19cb..f2cfe6322 100755 --- a/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java @@ -81,10 +81,6 @@ public class FragmentEntity implements Serializable { private String attributes; @NotNull - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "dataspace_id") - private DataspaceEntity dataspace; - @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "anchor_id") @EqualsAndHashCode.Include diff --git a/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntityArranger.java b/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntityArranger.java index b7ce98e1a..c1b1322bb 100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntityArranger.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntityArranger.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2022 Nordix Foundation + * Copyright (C) 2022-2023 Nordix Foundation * Modifications Copyright (C) 2023 TechMahindra Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -71,10 +71,7 @@ public class FragmentEntityArranger { private static FragmentEntity toFragmentEntity(final AnchorEntity anchorEntity, final FragmentExtract fragmentExtract) { final FragmentEntity fragmentEntity = new FragmentEntity(); - if (anchorEntity != null) { - fragmentEntity.setAnchor(anchorEntity); - fragmentEntity.setDataspace(anchorEntity.getDataspace()); - } + fragmentEntity.setAnchor(anchorEntity); fragmentEntity.setId(fragmentExtract.getId()); fragmentEntity.setXpath(fragmentExtract.getXpath()); fragmentEntity.setAttributes(fragmentExtract.getAttributes()); diff --git a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java index d0154e116..890941bf3 100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java @@ -218,7 +218,6 @@ public class CpsDataPersistenceServiceImpl implements CpsDataPersistenceService private FragmentEntity toFragmentEntity(final AnchorEntity anchorEntity, final DataNode dataNode) { return FragmentEntity.builder() - .dataspace(anchorEntity.getDataspace()) .anchor(anchorEntity) .xpath(dataNode.getXpath()) .attributes(jsonObjectMapper.asJsonString(dataNode.getLeaves())) diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java index 76cfaa89f..72750dcc9 100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java @@ -88,8 +88,14 @@ public class FragmentQueryBuilder { final StringBuilder sqlStringBuilder = new StringBuilder(); final Map queryParameters = new HashMap<>(); - sqlStringBuilder.append("SELECT * FROM fragment WHERE "); - addDataspaceOrAnchor(sqlStringBuilder, queryParameters, dataspaceEntity, anchorEntity); + if (anchorEntity == ACROSS_ALL_ANCHORS) { + sqlStringBuilder.append("SELECT fragment.* FROM fragment JOIN anchor ON anchor.id = fragment.anchor_id" + + " WHERE dataspace_id = :dataspaceId"); + queryParameters.put("dataspaceId", dataspaceEntity.getId()); + } else { + sqlStringBuilder.append("SELECT * FROM fragment WHERE anchor_id = :anchorId"); + queryParameters.put("anchorId", anchorEntity.getId()); + } addXpathSearch(cpsPathQuery, sqlStringBuilder, queryParameters); addLeafConditions(cpsPathQuery, sqlStringBuilder); addTextFunctionCondition(cpsPathQuery, sqlStringBuilder, queryParameters); @@ -100,19 +106,6 @@ public class FragmentQueryBuilder { return query; } - private static void addDataspaceOrAnchor(final StringBuilder sqlStringBuilder, - final Map queryParameters, - final DataspaceEntity dataspaceEntity, - final AnchorEntity anchorEntity) { - if (anchorEntity == ACROSS_ALL_ANCHORS) { - sqlStringBuilder.append("dataspace_id = :dataspaceId"); - queryParameters.put("dataspaceId", dataspaceEntity.getId()); - } else { - sqlStringBuilder.append("anchor_id = :anchorId"); - queryParameters.put("anchorId", anchorEntity.getId()); - } - } - private static void addXpathSearch(final CpsPathQuery cpsPathQuery, final StringBuilder sqlStringBuilder, final Map queryParameters) { diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java index a2763184a..2691be984 100755 --- a/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java @@ -54,7 +54,10 @@ public interface FragmentRepository extends JpaRepository, return findByAnchorIdAndXpathIn(anchorEntity.getId(), xpaths.toArray(new String[0])); } - List findByDataspaceIdAndXpathIn(int dataspaceId, String[] xpaths); + @Query(value = "SELECT fragment.* FROM fragment JOIN anchor ON anchor.id = fragment.anchor_id " + + "WHERE dataspace_id = :dataspaceId AND xpath = ANY (:xpaths)", nativeQuery = true) + List findByDataspaceIdAndXpathIn(@Param("dataspaceId") int dataspaceId, + @Param("xpaths") String[] xpaths); default List findByDataspaceAndXpathIn(final DataspaceEntity dataspaceEntity, final Collection xpaths) { diff --git a/cps-ri/src/main/resources/changelog/changelog-master.yaml b/cps-ri/src/main/resources/changelog/changelog-master.yaml index bf172d8ea..40e23e2e3 100644 --- a/cps-ri/src/main/resources/changelog/changelog-master.yaml +++ b/cps-ri/src/main/resources/changelog/changelog-master.yaml @@ -52,3 +52,5 @@ databaseChangeLog: file: changelog/db/changes/17-add-index-to-schema-set-yang-resources.yaml - include: file: changelog/db/changes/18-cascade-delete-fragment-children.yaml + - include: + file: changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml diff --git a/cps-ri/src/main/resources/changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml b/cps-ri/src/main/resources/changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml new file mode 100644 index 000000000..7b91bd5b3 --- /dev/null +++ b/cps-ri/src/main/resources/changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml @@ -0,0 +1,109 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2023 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + +databaseChangeLog: + + - changeSet: + id: 19-1 + author: cps + changes: + - dropIndex: + indexName: FKI_FRAGMENT_DATASPACE_ID_FK + tableName: fragment + rollback: + - createIndex: + columns: + - column: + name: dataspace_id + indexName: FKI_FRAGMENT_DATASPACE_ID_FK + tableName: fragment + + - changeSet: + id: 19-2 + author: cps + changes: + - dropUniqueConstraint: + constraintName: fragment_dataspace_id_anchor_id_xpath_key + tableName: fragment + - addUniqueConstraint: + columnNames: anchor_id, xpath + constraintName: fragment_anchor_id_xpath_key + tableName: fragment + rollback: + - dropUniqueConstraint: + constraintName: fragment_anchor_id_xpath_key + tableName: fragment + - addUniqueConstraint: + columnNames: dataspace_id, anchor_id, xpath + constraintName: fragment_dataspace_id_anchor_id_xpath_key + tableName: fragment + + - changeSet: + id: 19-3 + author: cps + changes: + - dropForeignKeyConstraint: + baseTableName: fragment + constraintName: fragment_dataspace_id_fkey + rollback: + - addForeignKeyConstraint: + baseColumnNames: dataspace_id + baseTableName: fragment + constraintName: fragment_dataspace_id_fkey + deferrable: false + initiallyDeferred: false + onDelete: NO ACTION + onUpdate: NO ACTION + referencedColumnNames: id + referencedTableName: dataspace + validate: true + + - changeSet: + id: 19-4 + author: cps + changes: + - dropColumn: + columnName: dataspace_id + tableName: fragment + rollback: + - addColumn: + tableName: fragment + columns: + - column: + name: dataspace_id + type: INTEGER + - sqlFile: + path: changelog/db/changes/19-repopulate-dataspace-id-for-rollback.sql + - addNotNullConstraint: + tableName: fragment + columnName: dataspace_id + columnDataType: INTEGER + + - changeSet: + id: 19-5 + author: cps + changes: + - addNotNullConstraint: + tableName: fragment + columnName: anchor_id + columnDataType: BIGINT + rollback: + - dropNotNullConstraint: + tableName: fragment + columnName: anchor_id + columnDataType: BIGINT diff --git a/cps-ri/src/main/resources/changelog/db/changes/19-repopulate-dataspace-id-for-rollback.sql b/cps-ri/src/main/resources/changelog/db/changes/19-repopulate-dataspace-id-for-rollback.sql new file mode 100644 index 000000000..9c60db0b5 --- /dev/null +++ b/cps-ri/src/main/resources/changelog/db/changes/19-repopulate-dataspace-id-for-rollback.sql @@ -0,0 +1,25 @@ +/* + ============LICENSE_START======================================================= + Copyright (C) 2023 Nordix Foundation. + ================================================================================ + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + SPDX-License-Identifier: Apache-2.0 + ============LICENSE_END========================================================= +*/ + +UPDATE + fragment AS f +SET + dataspace_id = a.dataspace_id +FROM + anchor AS a +WHERE + f.anchor_id = a.id; diff --git a/cps-ri/src/test/resources/data/anchor.sql b/cps-ri/src/test/resources/data/anchor.sql index 2ab7966e1..a15d5aed2 100644 --- a/cps-ri/src/test/resources/data/anchor.sql +++ b/cps-ri/src/test/resources/data/anchor.sql @@ -35,5 +35,5 @@ INSERT INTO ANCHOR (ID, NAME, DATASPACE_ID, SCHEMA_SET_ID) VALUES (3002, 'ANCHOR-002', 1001, 2002), (3003, 'ANCHOR-003', 1001, 2002); -INSERT INTO FRAGMENT (ID, DATASPACE_ID, ANCHOR_ID, PARENT_ID, XPATH, ATTRIBUTES) VALUES - (4001, 1001, 3001, null, '/xpath', '{}'); +INSERT INTO FRAGMENT (ID, ANCHOR_ID, PARENT_ID, XPATH, ATTRIBUTES) VALUES + (4001, 3001, null, '/xpath', '{}'); diff --git a/cps-ri/src/test/resources/data/fragment.sql b/cps-ri/src/test/resources/data/fragment.sql index caafcd320..498007343 100755 --- a/cps-ri/src/test/resources/data/fragment.sql +++ b/cps-ri/src/test/resources/data/fragment.sql @@ -1,6 +1,6 @@ /* ============LICENSE_START======================================================= - Copyright (C) 2021-2022 Nordix Foundation. + Copyright (C) 2021-2023 Nordix Foundation. Modifications Copyright (C) 2021 Pantheon.tech Modifications Copyright (C) 2021-2022 Bell Canada. ================================================================================ @@ -55,62 +55,62 @@ INSERT INTO ANCHOR (ID, NAME, DATASPACE_ID, SCHEMA_SET_ID) VALUES (3005, 'ANCHOR-005', 1001, 2001), (3006, 'ANCHOR-006', 1001, 2001); -INSERT INTO FRAGMENT (ID, DATASPACE_ID, ANCHOR_ID, PARENT_ID, XPATH) VALUES - (4001, 1001, 3001, null, '/parent-1'), - (4002, 1001, 3001, null, '/parent-2'), - (4003, 1001, 3001, null, '/parent-3'), - (4004, 1001, 3001, 4001, '/parent-1/child-1'), - (4005, 1001, 3001, 4002, '/parent-2/child-2'), - (4006, 1001, 3001, 4004, '/parent-1/child-1/grandchild-1'); - -INSERT INTO FRAGMENT (ID, DATASPACE_ID, ANCHOR_ID, PARENT_ID, XPATH, ATTRIBUTES) VALUES - (5009, 1001, 3005, null, '/parent-207', '{"parent-leaf": "parent-leaf value"}'), - (5010, 1001, 3005, 5009, '/parent-207/child-001', '{"first-child-leaf": "first-child-leaf value"}'), - (5011, 1001, 3005, 5009, '/parent-207/child-002', '{"second-child-leaf": "second-child-leaf value"}'), - (5012, 1001, 3005, 5011, '/parent-207/child-002/grand-child', '{"grand-child-leaf": "grand-child-leaf value"}'); - -INSERT INTO FRAGMENT (ID, DATASPACE_ID, ANCHOR_ID, PARENT_ID, XPATH, ATTRIBUTES) VALUES - (5013, 1001, 3006, null, '/parent-208', '{"parent-leaf-1": "parent-leaf value-1"}'), - (5014, 1001, 3006, 5013, '/parent-208/child-001', '{"first-child-leaf": "first-child-leaf value"}'), - (5015, 1001, 3006, 5013, '/parent-208/child-002', '{"second-child-leaf": "second-child-leaf value"}'), - (5016, 1001, 3006, 5015, '/parent-208/child-002/grand-child', '{"grand-child-leaf": "grand-child-leaf value"}'), - (5017, 1001, 3006, null, '/parent-209', '{"parent-leaf-2": "parent-leaf value-2"}'), - (5018, 1001, 3006, 5017, '/parent-209/child-001', '{"first-child-leaf": "first-child-leaf value"}'), - (5019, 1001, 3006, 5017, '/parent-209/child-002', '{"second-child-leaf": "second-child-leaf value"}'), - (5020, 1001, 3006, 5019, '/parent-209/child-002/grand-child', '{"grand-child-leaf": "grand-child-leaf value"}'); - -INSERT INTO FRAGMENT (ID, DATASPACE_ID, ANCHOR_ID, PARENT_ID, XPATH, ATTRIBUTES) VALUES - (4201, 1001, 3003, null, '/parent-200', '{"leaf-value": "original"}'), - (4202, 1001, 3003, 4201, '/parent-200/child-201', '{"leaf-value": "original"}'), - (4203, 1001, 3003, 4202, '/parent-200/child-201/grand-child', '{"leaf-value": "original"}'), - (4206, 1001, 3003, null, '/parent-201', '{"leaf-value": "original"}'), - (4207, 1001, 3003, 4206, '/parent-201/child-203', '{}'), - (4208, 1001, 3003, 4206, '/parent-201/child-204[@key=''A'']', '{"key": "A"}'), - (4209, 1001, 3003, 4206, '/parent-201/child-204[@key=''B'']', '{"key": "B"}'), - (4211, 1001, 3003, null, '/parent-202', '{"leaf-value": "original"}'), - (4212, 1001, 3003, 4211, '/parent-202/child-205[@key=''A'' and @key2=''B'']', '{"key": "A", "key2": "B"}'), - (4213, 1001, 3003, 4211, '/parent-202/child-206[@key=''A'']', '{"key": "A"}'), - (4214, 1001, 3003, null, '/parent-203', '{"leaf-value": "original"}'), - (4215, 1001, 3003, 4214, '/parent-203/child-203', '{}'), - (4216, 1001, 3003, 4214, '/parent-203/child-204[@key=''A'']', '{"key": "A"}'), - (4217, 1001, 3003, 4214, '/parent-203/child-204[@key=''B'']', '{"key": "B"}'), - (4218, 1001, 3003, 4217, '/parent-203/child-204[@key=''B'']/grand-child-204[@key2=''Y'']', '{"key": "B", "key2": "Y"}'), - (4226, 1001, 3003, null, '/parent-206', '{"leaf-value": "original"}'), - (4227, 1001, 3003, 4226, '/parent-206/child-206', '{}'), - (4228, 1001, 3003, 4227, '/parent-206/child-206/grand-child-206', '{}'), - (4229, 1001, 3003, 4227, '/parent-206/child-206/grand-child-206[@key=''A'']', '{"key": "A"}'), - (4230, 1001, 3003, 4227, '/parent-206/child-206/grand-child-206[@key=''X'']', '{"key": "X"}'), - (4231, 1001, 3003, null, '/parent-206[@key=''A'']', '{"key": "A"}'), - (4232, 1001, 3003, 4231, '/parent-206[@key=''A'']/child-206', '{}'), - (4233, 1001, 3003, null, '/parent-206[@key=''B'']', '{"key": "B"}'); - -INSERT INTO FRAGMENT (ID, DATASPACE_ID, ANCHOR_ID, PARENT_ID, XPATH, ATTRIBUTES) VALUES - (5000, 1002, 3004, null, '/dmi-registry/cm-handles[@id=''PNFDemo'']', '{"id": "PNFDemo", "dmi-service-name": "http://172.21.235.14:8783", "dmi-data-service-name": "", "dmi-model-service-name": ""}'), - (5001, 1002, 3004, null, '/dmi-registry/cm-handles[@id=''PNFDemo2'']', '{"id": "PNFDemo2", "dmi-service-name": "http://172.26.46.68:8783", "dmi-data-service-name": "", "dmi-model-service-name": ""}'), - (5002, 1002, 3004, null, '/dmi-registry/cm-handles[@id=''PNFDemo3'']', '{"id": "PNFDemo3", "dmi-service-name": "http://172.26.46.68:8783", "dmi-data-service-name": "", "dmi-model-service-name": ""}'), - (5003, 1002, 3004, null, '/dmi-registry/cm-handles[@id=''PNFDemo4'']', '{"id": "PNFDemo4", "dmi-service-name": "http://172.26.46.68:8783", "dmi-data-service-name": "", "dmi-model-service-name": ""}'), - (5004, 1002, 3004, 5000, '/dmi-registry/cm-handles[@id=''PNFDemo'']/public-properties[@name=''Contact'']', '{"name": "Contact", "value": "newemailforstore@bookstore.com"}'), - (5005, 1002, 3004, 5001, '/dmi-registry/cm-handles[@id=''PNFDemo2'']/public-properties[@name=''Contact'']', '{"name": "Contact", "value": "newemailforstore@bookstore.com"}'), - (5006, 1002, 3004, 5002, '/dmi-registry/cm-handles[@id=''PNFDemo3'']/public-properties[@name=''Contact'']', '{"name": "Contact3", "value": "PNF3@bookstore.com"}'), - (5007, 1002, 3004, 5003, '/dmi-registry/cm-handles[@id=''PNFDemo4'']/public-properties[@name=''Contact'']', '{"name": "Contact", "value": "newemailforstore@bookstore.com"}'), - (5008, 1002, 3004, 5004, '/dmi-registry/cm-handles[@id=''PNFDemo4'']/public-properties[@name=''Contact2'']', '{"name": "Contact2", "value": "newemailforstore2@bookstore.com"}'); +INSERT INTO FRAGMENT (ID, ANCHOR_ID, PARENT_ID, XPATH) VALUES + (4001, 3001, null, '/parent-1'), + (4002, 3001, null, '/parent-2'), + (4003, 3001, null, '/parent-3'), + (4004, 3001, 4001, '/parent-1/child-1'), + (4005, 3001, 4002, '/parent-2/child-2'), + (4006, 3001, 4004, '/parent-1/child-1/grandchild-1'); + +INSERT INTO FRAGMENT (ID, ANCHOR_ID, PARENT_ID, XPATH, ATTRIBUTES) VALUES + (5009, 3005, null, '/parent-207', '{"parent-leaf": "parent-leaf value"}'), + (5010, 3005, 5009, '/parent-207/child-001', '{"first-child-leaf": "first-child-leaf value"}'), + (5011, 3005, 5009, '/parent-207/child-002', '{"second-child-leaf": "second-child-leaf value"}'), + (5012, 3005, 5011, '/parent-207/child-002/grand-child', '{"grand-child-leaf": "grand-child-leaf value"}'); + +INSERT INTO FRAGMENT (ID, ANCHOR_ID, PARENT_ID, XPATH, ATTRIBUTES) VALUES + (5013, 3006, null, '/parent-208', '{"parent-leaf-1": "parent-leaf value-1"}'), + (5014, 3006, 5013, '/parent-208/child-001', '{"first-child-leaf": "first-child-leaf value"}'), + (5015, 3006, 5013, '/parent-208/child-002', '{"second-child-leaf": "second-child-leaf value"}'), + (5016, 3006, 5015, '/parent-208/child-002/grand-child', '{"grand-child-leaf": "grand-child-leaf value"}'), + (5017, 3006, null, '/parent-209', '{"parent-leaf-2": "parent-leaf value-2"}'), + (5018, 3006, 5017, '/parent-209/child-001', '{"first-child-leaf": "first-child-leaf value"}'), + (5019, 3006, 5017, '/parent-209/child-002', '{"second-child-leaf": "second-child-leaf value"}'), + (5020, 3006, 5019, '/parent-209/child-002/grand-child', '{"grand-child-leaf": "grand-child-leaf value"}'); + +INSERT INTO FRAGMENT (ID, ANCHOR_ID, PARENT_ID, XPATH, ATTRIBUTES) VALUES + (4201, 3003, null, '/parent-200', '{"leaf-value": "original"}'), + (4202, 3003, 4201, '/parent-200/child-201', '{"leaf-value": "original"}'), + (4203, 3003, 4202, '/parent-200/child-201/grand-child', '{"leaf-value": "original"}'), + (4206, 3003, null, '/parent-201', '{"leaf-value": "original"}'), + (4207, 3003, 4206, '/parent-201/child-203', '{}'), + (4208, 3003, 4206, '/parent-201/child-204[@key=''A'']', '{"key": "A"}'), + (4209, 3003, 4206, '/parent-201/child-204[@key=''B'']', '{"key": "B"}'), + (4211, 3003, null, '/parent-202', '{"leaf-value": "original"}'), + (4212, 3003, 4211, '/parent-202/child-205[@key=''A'' and @key2=''B'']', '{"key": "A", "key2": "B"}'), + (4213, 3003, 4211, '/parent-202/child-206[@key=''A'']', '{"key": "A"}'), + (4214, 3003, null, '/parent-203', '{"leaf-value": "original"}'), + (4215, 3003, 4214, '/parent-203/child-203', '{}'), + (4216, 3003, 4214, '/parent-203/child-204[@key=''A'']', '{"key": "A"}'), + (4217, 3003, 4214, '/parent-203/child-204[@key=''B'']', '{"key": "B"}'), + (4218, 3003, 4217, '/parent-203/child-204[@key=''B'']/grand-child-204[@key2=''Y'']', '{"key": "B", "key2": "Y"}'), + (4226, 3003, null, '/parent-206', '{"leaf-value": "original"}'), + (4227, 3003, 4226, '/parent-206/child-206', '{}'), + (4228, 3003, 4227, '/parent-206/child-206/grand-child-206', '{}'), + (4229, 3003, 4227, '/parent-206/child-206/grand-child-206[@key=''A'']', '{"key": "A"}'), + (4230, 3003, 4227, '/parent-206/child-206/grand-child-206[@key=''X'']', '{"key": "X"}'), + (4231, 3003, null, '/parent-206[@key=''A'']', '{"key": "A"}'), + (4232, 3003, 4231, '/parent-206[@key=''A'']/child-206', '{}'), + (4233, 3003, null, '/parent-206[@key=''B'']', '{"key": "B"}'); + +INSERT INTO FRAGMENT (ID, ANCHOR_ID, PARENT_ID, XPATH, ATTRIBUTES) VALUES + (5000, 3004, null, '/dmi-registry/cm-handles[@id=''PNFDemo'']', '{"id": "PNFDemo", "dmi-service-name": "http://172.21.235.14:8783", "dmi-data-service-name": "", "dmi-model-service-name": ""}'), + (5001, 3004, null, '/dmi-registry/cm-handles[@id=''PNFDemo2'']', '{"id": "PNFDemo2", "dmi-service-name": "http://172.26.46.68:8783", "dmi-data-service-name": "", "dmi-model-service-name": ""}'), + (5002, 3004, null, '/dmi-registry/cm-handles[@id=''PNFDemo3'']', '{"id": "PNFDemo3", "dmi-service-name": "http://172.26.46.68:8783", "dmi-data-service-name": "", "dmi-model-service-name": ""}'), + (5003, 3004, null, '/dmi-registry/cm-handles[@id=''PNFDemo4'']', '{"id": "PNFDemo4", "dmi-service-name": "http://172.26.46.68:8783", "dmi-data-service-name": "", "dmi-model-service-name": ""}'), + (5004, 3004, 5000, '/dmi-registry/cm-handles[@id=''PNFDemo'']/public-properties[@name=''Contact'']', '{"name": "Contact", "value": "newemailforstore@bookstore.com"}'), + (5005, 3004, 5001, '/dmi-registry/cm-handles[@id=''PNFDemo2'']/public-properties[@name=''Contact'']', '{"name": "Contact", "value": "newemailforstore@bookstore.com"}'), + (5006, 3004, 5002, '/dmi-registry/cm-handles[@id=''PNFDemo3'']/public-properties[@name=''Contact'']', '{"name": "Contact3", "value": "PNF3@bookstore.com"}'), + (5007, 3004, 5003, '/dmi-registry/cm-handles[@id=''PNFDemo4'']/public-properties[@name=''Contact'']', '{"name": "Contact", "value": "newemailforstore@bookstore.com"}'), + (5008, 3004, 5004, '/dmi-registry/cm-handles[@id=''PNFDemo4'']/public-properties[@name=''Contact2'']', '{"name": "Contact2", "value": "newemailforstore2@bookstore.com"}'); diff --git a/cps-ri/src/test/resources/data/perf-test.sql b/cps-ri/src/test/resources/data/perf-test.sql new file mode 100644 index 000000000..48e8b1fbb --- /dev/null +++ b/cps-ri/src/test/resources/data/perf-test.sql @@ -0,0 +1,28 @@ +/* + ============LICENSE_START======================================================= + Copyright (C) 2022-2023 Nordix Foundation. + ================================================================================ + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + SPDX-License-Identifier: Apache-2.0 + ============LICENSE_END========================================================= +*/ + +INSERT INTO DATASPACE (ID, NAME) VALUES (9001, 'PERF-DATASPACE'); + +INSERT INTO SCHEMA_SET (ID, NAME, DATASPACE_ID) VALUES (9002, 'PERF-SCHEMA-SET', 9001); + +INSERT INTO ANCHOR (ID, NAME, DATASPACE_ID, SCHEMA_SET_ID) VALUES (9003, 'PERF-ANCHOR', 9001, 9002); + +INSERT INTO FRAGMENT (ID, ANCHOR_ID, PARENT_ID, XPATH) VALUES (0, 9003, null, '/perf-parent-1'); + diff --git a/cps-ri/src/test/resources/data/schemaset.sql b/cps-ri/src/test/resources/data/schemaset.sql index ad611664b..e5bf63b70 100644 --- a/cps-ri/src/test/resources/data/schemaset.sql +++ b/cps-ri/src/test/resources/data/schemaset.sql @@ -1,7 +1,7 @@ /* ============LICENSE_START======================================================= Copyright (C) 2020-2021 Pantheon.tech - Modifications Copyright (C) 2020-2022 Nordix Foundation. + Modifications Copyright (C) 2020-2023 Nordix Foundation. Modifications Copyright (C) 2020-2021 Bell Canada. ================================================================================ Licensed under the Apache License, Version 2.0 (the "License"); @@ -53,5 +53,5 @@ INSERT INTO ANCHOR (ID, NAME, DATASPACE_ID, SCHEMA_SET_ID) VALUES -- anchors for (6002, 'ANCHOR2', 1001, 2101), (6003, 'ANCHOR3', 1001, 2005); -INSERT INTO FRAGMENT (ID, XPATH, ANCHOR_ID, DATASPACE_ID) VALUES - (7001, '/XPATH', 6001, 1001); \ No newline at end of file +INSERT INTO FRAGMENT (ID, XPATH, ANCHOR_ID) VALUES + (7001, '/XPATH', 6001); diff --git a/integration-test/src/test/resources/liquibase/test-changelog.yaml b/integration-test/src/test/resources/liquibase/test-changelog.yaml index f53fef70b..f9e2e2faf 100644 --- a/integration-test/src/test/resources/liquibase/test-changelog.yaml +++ b/integration-test/src/test/resources/liquibase/test-changelog.yaml @@ -116,16 +116,13 @@ databaseChangeLog: name: attributes type: JSONB - column: + constraints: + nullable: false name: anchor_id type: BIGINT - column: name: parent_id type: BIGINT - - column: - constraints: - nullable: false - name: dataspace_id - type: INTEGER - column: name: schema_node_id type: INTEGER @@ -323,16 +320,6 @@ databaseChangeLog: name: anchor_id indexName: FKI_FRAGMENT_ANCHOR_ID_FK tableName: fragment - - changeSet: - id: 1-18 - author: cps - changes: - - createIndex: - columns: - - column: - name: dataspace_id - indexName: FKI_FRAGMENT_DATASPACE_ID_FK - tableName: fragment - changeSet: id: 1-19 author: cps @@ -358,8 +345,8 @@ databaseChangeLog: author: cps changes: - addUniqueConstraint: - columnNames: dataspace_id, anchor_id, xpath - constraintName: fragment_dataspace_id_anchor_id_xpath_key + columnNames: anchor_id, xpath + constraintName: fragment_anchor_id_xpath_key tableName: fragment - changeSet: id: 1-23 @@ -430,21 +417,6 @@ databaseChangeLog: columnNames: name constraintName: UQ_NAME tableName: dataspace - - changeSet: - id: 1-29 - author: cps - changes: - - addForeignKeyConstraint: - baseColumnNames: dataspace_id - baseTableName: fragment - constraintName: fragment_dataspace_id_fkey - deferrable: false - initiallyDeferred: false - onDelete: NO ACTION - onUpdate: NO ACTION - referencedColumnNames: id - referencedTableName: dataspace - validate: true - changeSet: id: 1-30 author: cps