|
6 | 6 | package org.opensearch.sql.spark.validator;
|
7 | 7 |
|
8 | 8 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
| 9 | +import static org.junit.jupiter.api.Assertions.assertEquals; |
9 | 10 | import static org.junit.jupiter.api.Assertions.assertThrows;
|
10 | 11 | import static org.mockito.ArgumentMatchers.any;
|
11 | 12 | import static org.mockito.Mockito.when;
|
@@ -192,15 +193,14 @@ private enum TestElement {
|
192 | 193 | // Generator Functions
|
193 | 194 | GENERATOR_FUNCTIONS("SELECT explode(array(1, 2, 3));"),
|
194 | 195 |
|
195 |
| - // UNCATEGORIZED functions |
| 196 | + // Ucategorized functions |
196 | 197 | NAMED_STRUCT("SELECT named_struct('a', 1);"),
|
197 |
| - PARSE_URL("SELECT parse_url(url) FROM my_table;"); |
| 198 | + PARSE_URL("SELECT parse_url(url) FROM my_table;"), |
198 | 199 |
|
199 | 200 | // UDFs (User-Defined Functions)
|
200 | 201 | SCALAR_USER_DEFINED_FUNCTIONS("SELECT my_udf(name) FROM my_table;"),
|
201 | 202 | USER_DEFINED_AGGREGATE_FUNCTIONS("SELECT my_udaf(age) FROM my_table GROUP BY name;"),
|
202 |
| - INTEGRATION_WITH_HIVE_UDFS_UDAFS_UDTFS("SELECT my_hive_udf(name) FROM my_table;"), |
203 |
| - ; |
| 203 | + INTEGRATION_WITH_HIVE_UDFS_UDAFS_UDTFS("SELECT my_hive_udf(name) FROM my_table;"); |
204 | 204 |
|
205 | 205 | @Getter private final String[] queries;
|
206 | 206 |
|
@@ -328,14 +328,14 @@ void testDenyAllValidator() {
|
328 | 328 | // Generator Functions
|
329 | 329 | v.ng(TestElement.GENERATOR_FUNCTIONS);
|
330 | 330 |
|
| 331 | + // Uncategorized Functions |
| 332 | + v.ng(TestElement.NAMED_STRUCT); |
| 333 | + v.ng(TestElement.PARSE_URL); |
| 334 | + |
331 | 335 | // UDFs
|
332 | 336 | v.ng(TestElement.SCALAR_USER_DEFINED_FUNCTIONS);
|
333 | 337 | v.ng(TestElement.USER_DEFINED_AGGREGATE_FUNCTIONS);
|
334 | 338 | v.ng(TestElement.INTEGRATION_WITH_HIVE_UDFS_UDAFS_UDTFS);
|
335 |
| - |
336 |
| - // UNSUPPORTED Functions |
337 |
| - v.ng(TestElement.NAMED_STRUCT); |
338 |
| - v.ng(TestElement.PARSE_URL); |
339 | 339 | }
|
340 | 340 |
|
341 | 341 | @Test
|
@@ -450,8 +450,8 @@ void testS3glueQueries() {
|
450 | 450 | v.ok(TestElement.GENERATOR_FUNCTIONS);
|
451 | 451 |
|
452 | 452 | // Uncategorized Functions
|
453 |
| - v.ng(TestElement.NAMED_STRUCT); |
454 |
| - v.ng(TestElement.PARSE_URL); |
| 453 | + v.ok(TestElement.NAMED_STRUCT); |
| 454 | + v.ok(TestElement.PARSE_URL); |
455 | 455 |
|
456 | 456 | // UDFs
|
457 | 457 | v.ng(TestElement.SCALAR_USER_DEFINED_FUNCTIONS);
|
@@ -636,11 +636,10 @@ void testUnsupportedHiveNativeCommand() {
|
636 | 636 |
|
637 | 637 | @Test
|
638 | 638 | void testException() {
|
639 |
| - when(mockedProvider.getValidatorForDatasource(any())) |
640 |
| - .thenReturn(new S3GlueSQLGrammarElementValidator()); |
| 639 | + when(mockedProvider.getValidatorForDatasource(any())).thenReturn(element -> false); |
641 | 640 | VerifyValidator v = new VerifyValidator(sqlQueryValidator, DataSourceType.S3GLUE);
|
642 | 641 |
|
643 |
| - v.ng("SELECT named_struct('a', 1);", "Uncategorized function (named_struct) is not supported."); |
| 642 | + v.ng("SELECT named_struct('a', 1);", "Uncategorized functions (named_struct) is not allowed."); |
644 | 643 | }
|
645 | 644 |
|
646 | 645 | @AllArgsConstructor
|
@@ -668,10 +667,11 @@ public void ng(String query) {
|
668 | 667 | }
|
669 | 668 |
|
670 | 669 | public void ng(String query, String expectedMessage) {
|
671 |
| - Exception e = assertThrows( |
672 |
| - IllegalArgumentException.class, |
673 |
| - () -> runValidate(query), |
674 |
| - "The query should throw: query=`" + query.toString() + "`"); |
| 670 | + Exception e = |
| 671 | + assertThrows( |
| 672 | + IllegalArgumentException.class, |
| 673 | + () -> runValidate(query), |
| 674 | + "The query should throw: query=`" + query.toString() + "`"); |
675 | 675 | assertEquals(expectedMessage, e.getMessage());
|
676 | 676 | }
|
677 | 677 |
|
|
0 commit comments