Skip to content

Commit 32871f8

Browse files
committed
add test
1 parent 7482906 commit 32871f8

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

src/ast/visitor.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,18 @@ mod tests {
646646
impl Visitor for TestVisitor {
647647
type Break = ();
648648

649+
/// Invoked for any queries that appear in the AST before visiting children
650+
fn pre_visit_query(&mut self, query: &Query) -> ControlFlow<Self::Break> {
651+
self.visited.push(format!("PRE: QUERY: {query}"));
652+
ControlFlow::Continue(())
653+
}
654+
655+
/// Invoked for any queries that appear in the AST after visiting children
656+
fn post_visit_query(&mut self, query: &Query) -> ControlFlow<Self::Break> {
657+
self.visited.push(format!("POST: QUERY: {query}"));
658+
ControlFlow::Continue(())
659+
}
660+
649661
fn pre_visit_relation(&mut self, relation: &ObjectName) -> ControlFlow<Self::Break> {
650662
self.visited.push(format!("PRE: RELATION: {relation}"));
651663
ControlFlow::Continue(())
@@ -715,17 +727,20 @@ mod tests {
715727
"SELECT * from table_name as my_table",
716728
vec![
717729
"PRE: STATEMENT: SELECT * FROM table_name AS my_table",
730+
"PRE: QUERY: SELECT * FROM table_name AS my_table",
718731
"PRE: TABLE FACTOR: table_name AS my_table",
719732
"PRE: RELATION: table_name",
720733
"POST: RELATION: table_name",
721734
"POST: TABLE FACTOR: table_name AS my_table",
735+
"POST: QUERY: SELECT * FROM table_name AS my_table",
722736
"POST: STATEMENT: SELECT * FROM table_name AS my_table",
723737
],
724738
),
725739
(
726740
"SELECT * from t1 join t2 on t1.id = t2.t1_id",
727741
vec![
728742
"PRE: STATEMENT: SELECT * FROM t1 JOIN t2 ON t1.id = t2.t1_id",
743+
"PRE: QUERY: SELECT * FROM t1 JOIN t2 ON t1.id = t2.t1_id",
729744
"PRE: TABLE FACTOR: t1",
730745
"PRE: RELATION: t1",
731746
"POST: RELATION: t1",
@@ -740,67 +755,80 @@ mod tests {
740755
"PRE: EXPR: t2.t1_id",
741756
"POST: EXPR: t2.t1_id",
742757
"POST: EXPR: t1.id = t2.t1_id",
758+
"POST: QUERY: SELECT * FROM t1 JOIN t2 ON t1.id = t2.t1_id",
743759
"POST: STATEMENT: SELECT * FROM t1 JOIN t2 ON t1.id = t2.t1_id",
744760
],
745761
),
746762
(
747763
"SELECT * from t1 where EXISTS(SELECT column from t2)",
748764
vec![
749765
"PRE: STATEMENT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)",
766+
"PRE: QUERY: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)",
750767
"PRE: TABLE FACTOR: t1",
751768
"PRE: RELATION: t1",
752769
"POST: RELATION: t1",
753770
"POST: TABLE FACTOR: t1",
754771
"PRE: EXPR: EXISTS (SELECT column FROM t2)",
772+
"PRE: QUERY: SELECT column FROM t2",
755773
"PRE: EXPR: column",
756774
"POST: EXPR: column",
757775
"PRE: TABLE FACTOR: t2",
758776
"PRE: RELATION: t2",
759777
"POST: RELATION: t2",
760778
"POST: TABLE FACTOR: t2",
779+
"POST: QUERY: SELECT column FROM t2",
761780
"POST: EXPR: EXISTS (SELECT column FROM t2)",
781+
"POST: QUERY: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)",
762782
"POST: STATEMENT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)",
763783
],
764784
),
765785
(
766786
"SELECT * from t1 where EXISTS(SELECT column from t2)",
767787
vec![
768788
"PRE: STATEMENT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)",
789+
"PRE: QUERY: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)",
769790
"PRE: TABLE FACTOR: t1",
770791
"PRE: RELATION: t1",
771792
"POST: RELATION: t1",
772793
"POST: TABLE FACTOR: t1",
773794
"PRE: EXPR: EXISTS (SELECT column FROM t2)",
795+
"PRE: QUERY: SELECT column FROM t2",
774796
"PRE: EXPR: column",
775797
"POST: EXPR: column",
776798
"PRE: TABLE FACTOR: t2",
777799
"PRE: RELATION: t2",
778800
"POST: RELATION: t2",
779801
"POST: TABLE FACTOR: t2",
802+
"POST: QUERY: SELECT column FROM t2",
780803
"POST: EXPR: EXISTS (SELECT column FROM t2)",
804+
"POST: QUERY: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)",
781805
"POST: STATEMENT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)",
782806
],
783807
),
784808
(
785809
"SELECT * from t1 where EXISTS(SELECT column from t2) UNION SELECT * from t3",
786810
vec![
787811
"PRE: STATEMENT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2) UNION SELECT * FROM t3",
812+
"PRE: QUERY: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2) UNION SELECT * FROM t3",
788813
"PRE: TABLE FACTOR: t1",
789814
"PRE: RELATION: t1",
790815
"POST: RELATION: t1",
791816
"POST: TABLE FACTOR: t1",
792817
"PRE: EXPR: EXISTS (SELECT column FROM t2)",
818+
"PRE: QUERY: SELECT column FROM t2",
793819
"PRE: EXPR: column",
794820
"POST: EXPR: column",
795821
"PRE: TABLE FACTOR: t2",
796822
"PRE: RELATION: t2",
797823
"POST: RELATION: t2",
798824
"POST: TABLE FACTOR: t2",
825+
"POST: QUERY: SELECT column FROM t2",
799826
"POST: EXPR: EXISTS (SELECT column FROM t2)",
800827
"PRE: TABLE FACTOR: t3",
801828
"PRE: RELATION: t3",
802829
"POST: RELATION: t3",
803830
"POST: TABLE FACTOR: t3",
831+
"POST: QUERY: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2) UNION SELECT * FROM t3",
804832
"POST: STATEMENT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2) UNION SELECT * FROM t3",
805833
],
806834
),

0 commit comments

Comments
 (0)