From 40a70357e84ff06670188dd4d3582366f29e4675 Mon Sep 17 00:00:00 2001 From: Mayur Singal <39544459+ulixius9@users.noreply.github.com> Date: Mon, 25 Nov 2024 15:27:53 +0530 Subject: [PATCH] MINOR: Add UDF support for SP - backend (#18767) --- .../jdbi3/StoredProcedureRepository.java | 6 ++ .../databases/StoredProcedureResource.java | 1 + .../api/data/createStoredProcedure.json | 4 ++ .../schema/entity/data/storedProcedure.json | 55 ++++++++++++++----- 4 files changed, 52 insertions(+), 14 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/StoredProcedureRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/StoredProcedureRepository.java index 61156802f65..9a879a27dce 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/StoredProcedureRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/StoredProcedureRepository.java @@ -138,6 +138,12 @@ public class StoredProcedureRepository extends EntityRepository original.getStoredProcedureCode(), updated.getStoredProcedureCode()); } + if (updated.getStoredProcedureType() != null) { + recordChange( + "storedProcedureType", + original.getStoredProcedureType(), + updated.getStoredProcedureType()); + } recordChange("sourceUrl", original.getSourceUrl(), updated.getSourceUrl()); recordChange("sourceHash", original.getSourceHash(), updated.getSourceHash()); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/databases/StoredProcedureResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/databases/StoredProcedureResource.java index e5b1b8e7ef1..84626a53062 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/databases/StoredProcedureResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/databases/StoredProcedureResource.java @@ -533,6 +533,7 @@ public class StoredProcedureResource .copy(new StoredProcedure(), create, user) .withDatabaseSchema(getEntityReference(Entity.DATABASE_SCHEMA, create.getDatabaseSchema())) .withStoredProcedureCode(create.getStoredProcedureCode()) + .withStoredProcedureType(create.getStoredProcedureType()) .withSourceUrl(create.getSourceUrl()) .withSourceHash(create.getSourceHash()); } diff --git a/openmetadata-spec/src/main/resources/json/schema/api/data/createStoredProcedure.json b/openmetadata-spec/src/main/resources/json/schema/api/data/createStoredProcedure.json index 6caf3a3ae8b..75cd4ba5f26 100644 --- a/openmetadata-spec/src/main/resources/json/schema/api/data/createStoredProcedure.json +++ b/openmetadata-spec/src/main/resources/json/schema/api/data/createStoredProcedure.json @@ -38,6 +38,10 @@ "description": "SQL Query definition.", "$ref": "../../entity/data/storedProcedure.json#/definitions/storedProcedureCode" }, + "storedProcedureType": { + "description": "Type of the Stored Procedure.", + "$ref": "../../entity/data/storedProcedure.json#/definitions/storedProcedureType" + }, "databaseSchema": { "description": "Link to the database schema fully qualified name where this stored procedure is hosted in", "$ref": "../../type/basic.json#/definitions/fullyQualifiedEntityName" diff --git a/openmetadata-spec/src/main/resources/json/schema/entity/data/storedProcedure.json b/openmetadata-spec/src/main/resources/json/schema/entity/data/storedProcedure.json index 0fb8aa1bae1..25133d8bc05 100644 --- a/openmetadata-spec/src/main/resources/json/schema/entity/data/storedProcedure.json +++ b/openmetadata-spec/src/main/resources/json/schema/entity/data/storedProcedure.json @@ -8,6 +8,24 @@ "javaType": "org.openmetadata.schema.entity.data.StoredProcedure", "javaInterfaces": ["org.openmetadata.schema.EntityInterface"], "definitions": { + "storedProcedureType": { + "javaType": "org.openmetadata.schema.type.StoredProcedureType", + "description": "This schema defines the type of the type of Procedures", + "type": "string", + "default": "StoredProcedure", + "enum": [ + "StoredProcedure", + "UDF" + ], + "javaEnums": [ + { + "name": "StoredProcedure" + }, + { + "name": "UDF" + } + ] + }, "storedProcedureCode": { "properties": { "language": { @@ -76,14 +94,19 @@ "description": "Metadata version of the Stored Procedure.", "$ref": "../../type/entityHistory.json#/definitions/entityVersion" }, - "dataProducts" : { + "dataProducts": { "description": "List of data products this entity is part of.", - "$ref" : "../../type/entityReferenceList.json" + "$ref": "../../type/entityReferenceList.json" }, "updatedAt": { "description": "Last update time corresponding to the new version of the entity in Unix epoch time milliseconds.", "$ref": "../../type/basic.json#/definitions/timestamp" }, + "storedProcedureType": { + "description": "Type of the Stored Procedure.", + "$ref": "#/definitions/storedProcedureType", + "default": "StoredProcedure" + }, "updatedBy": { "description": "User who made the query.", "type": "string" @@ -104,14 +127,14 @@ "description": "Reference to Database that contains this stored procedure.", "$ref": "../../type/entityReference.json" }, - "service": { - "description": "Link to Database service this table is hosted in.", - "$ref": "../../type/entityReference.json" - }, - "serviceType": { - "description": "Service type this table is hosted in.", - "$ref": "../services/databaseService.json#/definitions/databaseServiceType" - }, + "service": { + "description": "Link to Database service this table is hosted in.", + "$ref": "../../type/entityReference.json" + }, + "serviceType": { + "description": "Service type this table is hosted in.", + "$ref": "../services/databaseService.json#/definitions/databaseServiceType" + }, "deleted": { "description": "When `true` indicates the entity has been soft deleted.", "type": "boolean", @@ -126,7 +149,7 @@ "description": "Followers of this Stored Procedure.", "$ref": "../../type/entityReferenceList.json" }, - "votes" : { + "votes": { "description": "Votes on the entity.", "$ref": "../../type/votes.json" }, @@ -150,7 +173,7 @@ "description": "Source URL of database schema.", "$ref": "../../type/basic.json#/definitions/sourceUrl" }, - "domain" : { + "domain": { "description": "Domain the Stored Procedure belongs to. When not set, the Stored Procedure inherits the domain from the database schemna it belongs to.", "$ref": "../../type/entityReference.json" }, @@ -168,6 +191,10 @@ "maxLength": 32 } }, - "required": ["id","name","storedProcedureCode"], + "required": [ + "id", + "name", + "storedProcedureCode" + ], "additionalProperties": false -} +} \ No newline at end of file