diff --git a/bootstrap/sql/migrations/native/1.4.0/mysql/schemaChanges.sql b/bootstrap/sql/migrations/native/1.4.0/mysql/schemaChanges.sql index 94ca33aa463..dc1b65a392d 100644 --- a/bootstrap/sql/migrations/native/1.4.0/mysql/schemaChanges.sql +++ b/bootstrap/sql/migrations/native/1.4.0/mysql/schemaChanges.sql @@ -280,4 +280,6 @@ SET json = JSON_INSERT( JSON_REMOVE(json, '$.viewDefinition'), '$.schemaDefinition', JSON_EXTRACT(json, '$.viewDefinition') -); \ No newline at end of file +); + +UPDATE table_entity SET json = JSON_REMOVE(json, '$.testSuite'); diff --git a/bootstrap/sql/migrations/native/1.4.0/postgres/schemaChanges.sql b/bootstrap/sql/migrations/native/1.4.0/postgres/schemaChanges.sql index 3a42eed387d..1022f704cf5 100644 --- a/bootstrap/sql/migrations/native/1.4.0/postgres/schemaChanges.sql +++ b/bootstrap/sql/migrations/native/1.4.0/postgres/schemaChanges.sql @@ -277,4 +277,7 @@ SET json = jsonb_set( '{schemaDefinition}', json->'viewDefinition' ) - 'viewDefinition' -WHERE jsonb_exists(json::jsonb, 'viewDefinition') = true; \ No newline at end of file +WHERE jsonb_exists(json::jsonb, 'viewDefinition') = true; + +UPDATE table_entity SET json = json - 'testSuite'; + diff --git a/ingestion/src/metadata/data_quality/source/test_suite.py b/ingestion/src/metadata/data_quality/source/test_suite.py index 7ea8056edc0..bea4a02e218 100644 --- a/ingestion/src/metadata/data_quality/source/test_suite.py +++ b/ingestion/src/metadata/data_quality/source/test_suite.py @@ -139,7 +139,13 @@ class TestSuiteSource(Source): ) ) - if table.testSuite and not table.testSuite.executable: + test_suite: Optional[TestSuite] = None + if table.testSuite: + test_suite = self.metadata.get_by_id( + entity=TestSuite, entity_id=table.testSuite.id.__root__ + ) + + if test_suite and not test_suite.executable: yield Either( left=StackTraceError( name="Non-executable Test Suite", @@ -149,7 +155,7 @@ class TestSuiteSource(Source): ) else: - test_suite_cases = self._get_test_cases_from_test_suite(table.testSuite) + test_suite_cases = self._get_test_cases_from_test_suite(test_suite) yield Either( right=TableAndTests( diff --git a/ingestion/tests/integration/great_expectations/test_great_expectation_integration.py b/ingestion/tests/integration/great_expectations/test_great_expectation_integration.py index c94ed50f2e0..6d5e24a1717 100644 --- a/ingestion/tests/integration/great_expectations/test_great_expectation_integration.py +++ b/ingestion/tests/integration/great_expectations/test_great_expectation_integration.py @@ -30,6 +30,7 @@ from metadata.generated.schema.entity.services.databaseService import DatabaseSe from metadata.generated.schema.security.client.openMetadataJWTClientConfig import ( OpenMetadataJWTClientConfig, ) +from metadata.generated.schema.tests.testSuite import TestSuite from metadata.ingestion.connections.session import create_and_bind_session from metadata.ingestion.ometa.ometa_api import OpenMetadata from metadata.utils.time_utils import ( @@ -217,7 +218,10 @@ class TestGreatExpectationIntegration(TestCase): ) assert table_entity.testSuite - assert len(table_entity.testSuite.tests) == 1 + test_suite: TestSuite = self.metadata.get_by_id( + entity=TestSuite, entity_id=table_entity.testSuite.id, fields=["tests"] + ) + assert len(test_suite.tests) == 1 test_case_results = self.metadata.get_test_case_results( test_case_fqn=TEST_CASE_FQN, diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java index 335654df455..af657bf40b4 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java @@ -28,7 +28,7 @@ import static org.openmetadata.service.Entity.DATABASE_SCHEMA; import static org.openmetadata.service.Entity.FIELD_OWNER; import static org.openmetadata.service.Entity.FIELD_TAGS; import static org.openmetadata.service.Entity.TABLE; -import static org.openmetadata.service.Entity.getEntity; +import static org.openmetadata.service.Entity.TEST_SUITE; import static org.openmetadata.service.Entity.populateEntityFieldTags; import static org.openmetadata.service.util.EntityUtil.getLocalColumnName; import static org.openmetadata.service.util.FullyQualifiedName.getColumnName; @@ -64,7 +64,6 @@ import org.openmetadata.schema.entity.data.DatabaseSchema; import org.openmetadata.schema.entity.data.Table; import org.openmetadata.schema.entity.feed.Suggestion; import org.openmetadata.schema.tests.CustomMetric; -import org.openmetadata.schema.tests.TestSuite; import org.openmetadata.schema.type.Column; import org.openmetadata.schema.type.ColumnDataType; import org.openmetadata.schema.type.ColumnJoin; @@ -324,22 +323,8 @@ public class TableRepository extends EntityRepository