@@ -571,6 +571,56 @@ void testValidateFlintExtensionQuery() {
571571 UUID .randomUUID ().toString (), DataSourceType .SECURITY_LAKE ));
572572 }
573573
574+ @ Test
575+ void testInvalidIdentifier () {
576+ when (mockedProvider .getValidatorForDatasource (any ())).thenReturn (element -> true );
577+ VerifyValidator v = new VerifyValidator (sqlQueryValidator , DataSourceType .SPARK );
578+ v .ng ("SELECT a.b.c as a-b-c FROM abc" );
579+ v .ok ("SELECT a.b.c as `a-b-c` FROM abc" );
580+ v .ok ("SELECT a.b.c as a_b_c FROM abc" );
581+
582+ v .ng ("SELECT a.b.c FROM a-b-c" );
583+ v .ng ("SELECT a.b.c FROM a.b-c" );
584+ v .ok ("SELECT a.b.c FROM b.c.`a-b-c`" );
585+ v .ok ("SELECT a.b.c FROM `a-b-c`" );
586+ }
587+
588+ @ Test
589+ void testUnsupportedType () {
590+ when (mockedProvider .getValidatorForDatasource (any ())).thenReturn (element -> true );
591+ VerifyValidator v = new VerifyValidator (sqlQueryValidator , DataSourceType .SPARK );
592+
593+ v .ng ("SELECT cast ( a as DateTime ) FROM tbl" );
594+ v .ok ("SELECT cast ( a as DATE ) FROM tbl" );
595+ v .ok ("SELECT cast ( a as Date ) FROM tbl" );
596+ v .ok ("SELECT cast ( a as Timestamp ) FROM tbl" );
597+ }
598+
599+ @ Test
600+ void testUnsupportedTypedLiteral () {
601+ when (mockedProvider .getValidatorForDatasource (any ())).thenReturn (element -> true );
602+ VerifyValidator v = new VerifyValidator (sqlQueryValidator , DataSourceType .SPARK );
603+
604+ v .ng ("SELECT DATETIME '2024-10-11'" );
605+ v .ok ("SELECT DATE '2024-10-11'" );
606+ v .ok ("SELECT TIMESTAMP '2024-10-11'" );
607+ }
608+
609+ @ Test
610+ void testUnsupportedHiveNativeCommand () {
611+ when (mockedProvider .getValidatorForDatasource (any ())).thenReturn (element -> true );
612+ VerifyValidator v = new VerifyValidator (sqlQueryValidator , DataSourceType .SPARK );
613+
614+ v .ng ("CREATE ROLE aaa" );
615+ v .ng ("SHOW GRANT" );
616+ v .ng ("EXPORT TABLE" );
617+ v .ng ("ALTER TABLE aaa NOT CLUSTERED" );
618+ v .ng ("START TRANSACTION" );
619+ v .ng ("COMMIT" );
620+ v .ng ("ROLLBACK" );
621+ v .ng ("DFS" );
622+ }
623+
574624 @ AllArgsConstructor
575625 private static class VerifyValidator {
576626 private final SQLQueryValidator validator ;
@@ -580,10 +630,18 @@ public void ok(TestElement query) {
580630 runValidate (query .getQueries ());
581631 }
582632
633+ public void ok (String query ) {
634+ runValidate (query );
635+ }
636+
583637 public void ng (TestElement query ) {
638+ Arrays .stream (query .getQueries ()).forEach (this ::ng );
639+ }
640+
641+ public void ng (String query ) {
584642 assertThrows (
585643 IllegalArgumentException .class ,
586- () -> runValidate (query . getQueries () ),
644+ () -> runValidate (query ),
587645 "The query should throw: query=`" + query .toString () + "`" );
588646 }
589647
0 commit comments