Skip to content

Commit 3b86612

Browse files
authored
Add validation method for Flint extension queries and wire it into the dispatcher (#3096)
* Add validation method for Flint extension queries and wire it into the dispatcher Signed-off-by: Chase Engelbrecht <engechas@amazon.com> * Add unit test Signed-off-by: Chase Engelbrecht <engechas@amazon.com> * Run spotless Signed-off-by: Chase Engelbrecht <engechas@amazon.com> * Fix NPE in test Signed-off-by: Chase Engelbrecht <engechas@amazon.com> * Add java doc Signed-off-by: Chase Engelbrecht <engechas@amazon.com> --------- Signed-off-by: Chase Engelbrecht <engechas@amazon.com>
1 parent f00244e commit 3b86612

File tree

4 files changed

+24
-0
lines changed

4 files changed

+24
-0
lines changed

async-query-core/src/main/java/org/opensearch/sql/spark/dispatcher/SparkQueryDispatcher.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public DispatchQueryResponse dispatch(
5151
String query = dispatchQueryRequest.getQuery();
5252

5353
if (SQLQueryUtils.isFlintExtensionQuery(query)) {
54+
sqlQueryValidator.validateFlintExtensionQuery(query, dataSourceMetadata.getConnector());
5455
return handleFlintExtensionQuery(
5556
dispatchQueryRequest, asyncQueryRequestContext, dataSourceMetadata);
5657
}

async-query-core/src/main/java/org/opensearch/sql/spark/validator/SQLQueryValidator.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,12 @@ public void validate(String sqlQuery, DataSourceType datasourceType) {
3636
throw e;
3737
}
3838
}
39+
40+
/**
41+
* Validates a query from the Flint extension grammar. The method is currently a no-op.
42+
*
43+
* @param sqlQuery The Flint extension query to be validated
44+
* @param dataSourceType The type of the datasource the query is being run on
45+
*/
46+
public void validateFlintExtensionQuery(String sqlQuery, DataSourceType dataSourceType) {}
3947
}

async-query-core/src/test/java/org/opensearch/sql/spark/dispatcher/SparkQueryDispatcherTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,6 +641,11 @@ void testDispatchVacuumIndexQuery() {
641641

642642
@Test
643643
void testDispatchRecoverIndexQuery() {
644+
DataSourceMetadata dataSourceMetadata = constructMyGlueDataSourceMetadata();
645+
when(dataSourceService.verifyDataSourceAccessAndGetRawMetadata(
646+
MY_GLUE, asyncQueryRequestContext))
647+
.thenReturn(dataSourceMetadata);
648+
644649
String query = "RECOVER INDEX JOB `flint_spark_catalog_default_test_skipping_index`";
645650
Assertions.assertThrows(
646651
IllegalArgumentException.class,

async-query-core/src/test/java/org/opensearch/sql/spark/validator/SQLQueryValidatorTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55

66
package org.opensearch.sql.spark.validator;
77

8+
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
89
import static org.junit.jupiter.api.Assertions.assertThrows;
910
import static org.mockito.ArgumentMatchers.any;
1011
import static org.mockito.Mockito.when;
1112

1213
import java.util.Arrays;
14+
import java.util.UUID;
1315
import lombok.AllArgsConstructor;
1416
import lombok.Getter;
1517
import org.antlr.v4.runtime.CommonTokenStream;
@@ -561,6 +563,14 @@ void testSecurityLakeQueries() {
561563
v.ng(TestElement.INTEGRATION_WITH_HIVE_UDFS_UDAFS_UDTFS);
562564
}
563565

566+
@Test
567+
void testValidateFlintExtensionQuery() {
568+
assertDoesNotThrow(
569+
() ->
570+
sqlQueryValidator.validateFlintExtensionQuery(
571+
UUID.randomUUID().toString(), DataSourceType.SECURITY_LAKE));
572+
}
573+
564574
@AllArgsConstructor
565575
private static class VerifyValidator {
566576
private final SQLQueryValidator validator;

0 commit comments

Comments
 (0)