This is an automated email from the ASF dual-hosted git repository.

peacewong pushed a commit to branch dev-1.3.2
in repository https://gitbox.apache.org/repos/asf/linkis.git


The following commit(s) were added to refs/heads/dev-1.3.2 by this push:
     new 80be574a9 [feat:4012] add partition examine api (#4072)
80be574a9 is described below

commit 80be574a90261e04f10a048472e529d5495c828c
Author: aiceflower <[email protected]>
AuthorDate: Thu Feb 16 15:04:23 2023 +0800

    [feat:4012] add partition examine api (#4072)
    
    [feat:4012] add partition examine api (#4072)
---
 .../metadata/restful/api/DataSourceRestfulApi.java | 39 ++++++++++++++++++++++
 .../linkis/metadata/service/DataSourceService.java |  2 ++
 .../service/impl/DataSourceServiceImpl.java        | 12 +++++++
 3 files changed, 53 insertions(+)

diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/DataSourceRestfulApi.java
 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/DataSourceRestfulApi.java
index 8d006c282..d1d0fec0f 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/DataSourceRestfulApi.java
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/DataSourceRestfulApi.java
@@ -70,6 +70,45 @@ public class DataSourceRestfulApi implements 
DataSourceRestfulRemote {
     }
   }
 
+  @ApiOperation(
+      value = "queryPartitionExists",
+      notes = "query partition exists",
+      response = Message.class)
+  @ApiImplicitParams({
+    @ApiImplicitParam(name = "database", dataType = "String", value = 
"database"),
+    @ApiImplicitParam(name = "table", dataType = "String", value = "table"),
+    @ApiImplicitParam(name = "partition", dataType = "String", value = "table")
+  })
+  @RequestMapping(path = "partitionExists", method = RequestMethod.GET)
+  public Message partitionExists(
+      @RequestParam(value = "database") String database,
+      @RequestParam(value = "table") String table,
+      @RequestParam(value = "partition") String partition,
+      HttpServletRequest req) {
+    String userName = ModuleUserUtils.getOperationUser(req, "query partition 
exists");
+    try {
+      if (StringUtils.isBlank(database)) {
+        return Message.error("'database' is missing[缺少数据库]");
+      }
+      if (StringUtils.isBlank(table)) {
+        return Message.error("'table' is missing[缺少表名]");
+      }
+      if (StringUtils.isBlank(partition)) {
+        return Message.error("'partition' is missing[缺少分区名]");
+      }
+      MetadataQueryParam queryParam =
+          MetadataQueryParam.of(userName)
+              .withDbName(database)
+              .withTableName(table)
+              .withPartitionName(partition);
+      boolean res = dataSourceService.partitionExists(queryParam);
+      return Message.ok("").data("partitionExists", res);
+    } catch (Exception e) {
+      logger.error("Failed to examine whether a partition exists(检查分区是否存在失败)", 
e);
+      return Message.error("Failed to examine whether a partition exists 
(检查分区是否存在失败)", e);
+    }
+  }
+
   @ApiOperation(
       value = "queryDbsWithTables",
       notes = "query dbs with tables",
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/DataSourceService.java
 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/DataSourceService.java
index 0b20a3192..ed81573dc 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/DataSourceService.java
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/DataSourceService.java
@@ -38,4 +38,6 @@ public interface DataSourceService {
   JsonNode getPartitionSize(MetadataQueryParam queryParam);
 
   JsonNode getPartitions(MetadataQueryParam queryParam);
+
+  boolean partitionExists(MetadataQueryParam queryParam);
 }
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/impl/DataSourceServiceImpl.java
 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/impl/DataSourceServiceImpl.java
index a26fe71d0..bab839b11 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/impl/DataSourceServiceImpl.java
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/impl/DataSourceServiceImpl.java
@@ -258,6 +258,18 @@ public class DataSourceServiceImpl implements 
DataSourceService {
     return partitionJson;
   }
 
+  @DataSource(name = DSEnum.FIRST_DATA_SOURCE)
+  @Override
+  public boolean partitionExists(MetadataQueryParam queryParam) {
+    List<String> partitions = hiveMetaDao.getPartitions(queryParam);
+    boolean res = Boolean.FALSE;
+    if (CollectionUtils.isNotEmpty(partitions)
+        && partitions.contains(queryParam.getPartitionName())) {
+      res = Boolean.TRUE;
+    }
+    return res;
+  }
+
   private FileStatus getFileStatus(String location) throws IOException {
     try {
       return getRootHdfs().getFileStatus(new Path(location));


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to