@@ -571,6 +571,56 @@ void testValidateFlintExtensionQuery() {
571
571
UUID .randomUUID ().toString (), DataSourceType .SECURITY_LAKE ));
572
572
}
573
573
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
+
574
624
@ AllArgsConstructor
575
625
private static class VerifyValidator {
576
626
private final SQLQueryValidator validator ;
@@ -580,10 +630,18 @@ public void ok(TestElement query) {
580
630
runValidate (query .getQueries ());
581
631
}
582
632
633
+ public void ok (String query ) {
634
+ runValidate (query );
635
+ }
636
+
583
637
public void ng (TestElement query ) {
638
+ Arrays .stream (query .getQueries ()).forEach (this ::ng );
639
+ }
640
+
641
+ public void ng (String query ) {
584
642
assertThrows (
585
643
IllegalArgumentException .class ,
586
- () -> runValidate (query . getQueries () ),
644
+ () -> runValidate (query ),
587
645
"The query should throw: query=`" + query .toString () + "`" );
588
646
}
589
647
0 commit comments