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

machristie pushed a commit to branch calcite
in repository https://gitbox.apache.org/repos/asf/airavata-data-catalog.git

commit ac7d4acb1ba9eb6d8d937cbf7af47140b40e92ca
Author: Marcus Christie <[email protected]>
AuthorDate: Tue Mar 21 14:44:15 2023 -0400

    Error reporting added when sql fails to parse or validate
---
 .../exception/MetadataSchemaSqlParseException.java | 25 ++++++++++++++++++++++
 .../MetadataSchemaSqlValidateException.java        | 25 ++++++++++++++++++++++
 .../api/query/MetadataSchemaQueryExecutor.java     |  6 +++++-
 .../impl/MetadataSchemaQueryExecutorImpl.java      | 15 +++++++------
 .../api/service/DataCatalogAPIService.java         | 20 +++++++++++++----
 .../api/service/DataCatalogService.java            |  5 ++++-
 .../api/service/impl/DataCatalogServiceImpl.java   |  5 ++++-
 7 files changed, 87 insertions(+), 14 deletions(-)

diff --git 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/exception/MetadataSchemaSqlParseException.java
 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/exception/MetadataSchemaSqlParseException.java
new file mode 100644
index 0000000..1717e5d
--- /dev/null
+++ 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/exception/MetadataSchemaSqlParseException.java
@@ -0,0 +1,25 @@
+package org.apache.airavata.datacatalog.api.exception;
+
+public class MetadataSchemaSqlParseException extends Exception {
+
+    public MetadataSchemaSqlParseException() {
+    }
+
+    public MetadataSchemaSqlParseException(String message) {
+        super(message);
+    }
+
+    public MetadataSchemaSqlParseException(Throwable cause) {
+        super(cause);
+    }
+
+    public MetadataSchemaSqlParseException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public MetadataSchemaSqlParseException(String message, Throwable cause, 
boolean enableSuppression,
+            boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+
+}
diff --git 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/exception/MetadataSchemaSqlValidateException.java
 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/exception/MetadataSchemaSqlValidateException.java
new file mode 100644
index 0000000..ec7ea17
--- /dev/null
+++ 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/exception/MetadataSchemaSqlValidateException.java
@@ -0,0 +1,25 @@
+package org.apache.airavata.datacatalog.api.exception;
+
+public class MetadataSchemaSqlValidateException extends Exception {
+
+    public MetadataSchemaSqlValidateException() {
+    }
+
+    public MetadataSchemaSqlValidateException(String message) {
+        super(message);
+    }
+
+    public MetadataSchemaSqlValidateException(Throwable cause) {
+        super(cause);
+    }
+
+    public MetadataSchemaSqlValidateException(String message, Throwable cause) 
{
+        super(message, cause);
+    }
+
+    public MetadataSchemaSqlValidateException(String message, Throwable cause, 
boolean enableSuppression,
+            boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+
+}
diff --git 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/query/MetadataSchemaQueryExecutor.java
 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/query/MetadataSchemaQueryExecutor.java
index 6871553..dcf6a35 100644
--- 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/query/MetadataSchemaQueryExecutor.java
+++ 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/query/MetadataSchemaQueryExecutor.java
@@ -1,6 +1,10 @@
 package org.apache.airavata.datacatalog.api.query;
 
+import 
org.apache.airavata.datacatalog.api.exception.MetadataSchemaSqlParseException;
+import 
org.apache.airavata.datacatalog.api.exception.MetadataSchemaSqlValidateException;
+
 public interface MetadataSchemaQueryExecutor {
 
-    MetadataSchemaQueryResult execute(String sql);
+    MetadataSchemaQueryResult execute(String sql)
+            throws MetadataSchemaSqlParseException, 
MetadataSchemaSqlValidateException;
 }
diff --git 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/query/impl/MetadataSchemaQueryExecutorImpl.java
 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/query/impl/MetadataSchemaQueryExecutorImpl.java
index ab1202d..7643a50 100644
--- 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/query/impl/MetadataSchemaQueryExecutorImpl.java
+++ 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/query/impl/MetadataSchemaQueryExecutorImpl.java
@@ -8,6 +8,8 @@ import java.util.Map;
 
 import org.apache.airavata.datacatalog.api.DataProduct;
 import org.apache.airavata.datacatalog.api.FieldValueType;
+import 
org.apache.airavata.datacatalog.api.exception.MetadataSchemaSqlParseException;
+import 
org.apache.airavata.datacatalog.api.exception.MetadataSchemaSqlValidateException;
 import org.apache.airavata.datacatalog.api.mapper.DataProductMapper;
 import org.apache.airavata.datacatalog.api.model.DataProductEntity;
 import org.apache.airavata.datacatalog.api.model.MetadataSchemaEntity;
@@ -66,7 +68,8 @@ public class MetadataSchemaQueryExecutorImpl implements 
MetadataSchemaQueryExecu
     DataProductMapper dataProductMapper;
 
     @Override
-    public MetadataSchemaQueryResult execute(String sql) {
+    public MetadataSchemaQueryResult execute(String sql)
+            throws MetadataSchemaSqlParseException, 
MetadataSchemaSqlValidateException {
 
         // Create a schema that contains the data_product table and all of the 
metadata
         // schemas
@@ -174,21 +177,19 @@ public class MetadataSchemaQueryExecutorImpl implements 
MetadataSchemaQueryExecu
         return validator;
     }
 
-    SqlNode parse(Planner planner, String sql) {
+    SqlNode parse(Planner planner, String sql) throws 
MetadataSchemaSqlParseException {
         try {
             return planner.parse(sql);
         } catch (SqlParseException e) {
-            // TODO: convert to a checked exception and add to interface
-            throw new RuntimeException(e);
+            throw new MetadataSchemaSqlParseException(e);
         }
     }
 
-    SqlNode validate(SqlValidator validator, SqlNode sqlNode) {
+    SqlNode validate(SqlValidator validator, SqlNode sqlNode) throws 
MetadataSchemaSqlValidateException {
         try {
             return validator.validate(sqlNode);
         } catch (CalciteContextException e) {
-            // TODO: convert to a checked exception and add to interface
-            throw new RuntimeException(e);
+            throw new MetadataSchemaSqlValidateException(e);
         }
     }
 
diff --git 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java
 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java
index 1e87293..4b7b383 100644
--- 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java
+++ 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java
@@ -37,6 +37,8 @@ import 
org.apache.airavata.datacatalog.api.MetadataSchemaFieldUpdateResponse;
 import org.apache.airavata.datacatalog.api.MetadataSchemaGetRequest;
 import org.apache.airavata.datacatalog.api.MetadataSchemaGetResponse;
 import org.apache.airavata.datacatalog.api.exception.EntityNotFoundException;
+import 
org.apache.airavata.datacatalog.api.exception.MetadataSchemaSqlParseException;
+import 
org.apache.airavata.datacatalog.api.exception.MetadataSchemaSqlValidateException;
 import org.apache.airavata.datacatalog.api.query.MetadataSchemaQueryResult;
 import org.lognet.springboot.grpc.GRpcService;
 import org.slf4j.Logger;
@@ -125,10 +127,20 @@ public class DataCatalogAPIService extends 
DataCatalogAPIServiceGrpc.DataCatalog
     public void searchDataProducts(DataProductSearchRequest request,
             StreamObserver<DataProductSearchResponse> responseObserver) {
 
-        MetadataSchemaQueryResult searchResult = 
dataCatalogService.searchDataProducts(request.getSql());
-        List<DataProduct> dataProducts = searchResult.dataProducts();
-        
responseObserver.onNext(DataProductSearchResponse.newBuilder().addAllDataProducts(dataProducts).build());
-        responseObserver.onCompleted();
+        try {
+            MetadataSchemaQueryResult searchResult = 
dataCatalogService.searchDataProducts(request.getSql());
+            List<DataProduct> dataProducts = searchResult.dataProducts();
+            
responseObserver.onNext(DataProductSearchResponse.newBuilder().addAllDataProducts(dataProducts).build());
+            responseObserver.onCompleted();
+        } catch (MetadataSchemaSqlParseException e) {
+            responseObserver
+                    .onError(Status.INVALID_ARGUMENT.withDescription("Failed 
to parse SQL query.").asException());
+            responseObserver.onCompleted();
+        } catch (MetadataSchemaSqlValidateException e) {
+            responseObserver
+                    .onError(Status.INVALID_ARGUMENT.withDescription("Failed 
to validate SQL query.").asException());
+            responseObserver.onCompleted();
+        }
     }
 
     @Override
diff --git 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogService.java
 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogService.java
index 093263a..0b6220d 100644
--- 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogService.java
+++ 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogService.java
@@ -5,6 +5,8 @@ import java.util.List;
 import org.apache.airavata.datacatalog.api.DataProduct;
 import org.apache.airavata.datacatalog.api.MetadataSchema;
 import org.apache.airavata.datacatalog.api.MetadataSchemaField;
+import 
org.apache.airavata.datacatalog.api.exception.MetadataSchemaSqlParseException;
+import 
org.apache.airavata.datacatalog.api.exception.MetadataSchemaSqlValidateException;
 import org.apache.airavata.datacatalog.api.query.MetadataSchemaQueryResult;
 
 /**
@@ -40,5 +42,6 @@ public interface DataCatalogService {
 
     MetadataSchemaField updateMetadataSchemaField(MetadataSchemaField 
metadataSchemaField);
 
-    MetadataSchemaQueryResult searchDataProducts(String sql);
+    MetadataSchemaQueryResult searchDataProducts(String sql)
+            throws MetadataSchemaSqlParseException, 
MetadataSchemaSqlValidateException;
 }
diff --git 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/impl/DataCatalogServiceImpl.java
 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/impl/DataCatalogServiceImpl.java
index 59d1d94..dbce8bb 100644
--- 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/impl/DataCatalogServiceImpl.java
+++ 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/impl/DataCatalogServiceImpl.java
@@ -9,6 +9,8 @@ import org.apache.airavata.datacatalog.api.MetadataSchema;
 import org.apache.airavata.datacatalog.api.MetadataSchemaField;
 import org.apache.airavata.datacatalog.api.MetadataSchemaFieldListResponse;
 import org.apache.airavata.datacatalog.api.exception.EntityNotFoundException;
+import 
org.apache.airavata.datacatalog.api.exception.MetadataSchemaSqlParseException;
+import 
org.apache.airavata.datacatalog.api.exception.MetadataSchemaSqlValidateException;
 import org.apache.airavata.datacatalog.api.mapper.DataProductMapper;
 import org.apache.airavata.datacatalog.api.mapper.MetadataSchemaFieldMapper;
 import org.apache.airavata.datacatalog.api.mapper.MetadataSchemaMapper;
@@ -115,7 +117,8 @@ public class DataCatalogServiceImpl implements 
DataCatalogService {
     }
 
     @Override
-    public MetadataSchemaQueryResult searchDataProducts(String sql) {
+    public MetadataSchemaQueryResult searchDataProducts(String sql)
+            throws MetadataSchemaSqlParseException, 
MetadataSchemaSqlValidateException {
         return metadataSchemaQueryExecutor.execute(sql);
     }
 

Reply via email to