@@ -729,6 +729,16 @@ mod tests {
729729 ControlFlow :: Continue ( ( ) )
730730 }
731731
732+ fn pre_visit_select ( & mut self , select : & Select ) -> ControlFlow < Self :: Break > {
733+ self . visited . push ( format ! ( "PRE: SELECT: {select}" ) ) ;
734+ ControlFlow :: Continue ( ( ) )
735+ }
736+
737+ fn post_visit_select ( & mut self , select : & Select ) -> ControlFlow < Self :: Break > {
738+ self . visited . push ( format ! ( "POST: SELECT: {select}" ) ) ;
739+ ControlFlow :: Continue ( ( ) )
740+ }
741+
732742 fn pre_visit_relation ( & mut self , relation : & ObjectName ) -> ControlFlow < Self :: Break > {
733743 self . visited . push ( format ! ( "PRE: RELATION: {relation}" ) ) ;
734744 ControlFlow :: Continue ( ( ) )
@@ -799,10 +809,12 @@ mod tests {
799809 vec![
800810 "PRE: STATEMENT: SELECT * FROM table_name AS my_table" ,
801811 "PRE: QUERY: SELECT * FROM table_name AS my_table" ,
812+ "PRE: SELECT: SELECT * FROM table_name AS my_table" ,
802813 "PRE: TABLE FACTOR: table_name AS my_table" ,
803814 "PRE: RELATION: table_name" ,
804815 "POST: RELATION: table_name" ,
805816 "POST: TABLE FACTOR: table_name AS my_table" ,
817+ "POST: SELECT: SELECT * FROM table_name AS my_table" ,
806818 "POST: QUERY: SELECT * FROM table_name AS my_table" ,
807819 "POST: STATEMENT: SELECT * FROM table_name AS my_table" ,
808820 ] ,
@@ -812,6 +824,7 @@ mod tests {
812824 vec![
813825 "PRE: STATEMENT: SELECT * FROM t1 JOIN t2 ON t1.id = t2.t1_id" ,
814826 "PRE: QUERY: SELECT * FROM t1 JOIN t2 ON t1.id = t2.t1_id" ,
827+ "PRE: SELECT: SELECT * FROM t1 JOIN t2 ON t1.id = t2.t1_id" ,
815828 "PRE: TABLE FACTOR: t1" ,
816829 "PRE: RELATION: t1" ,
817830 "POST: RELATION: t1" ,
@@ -826,6 +839,7 @@ mod tests {
826839 "PRE: EXPR: t2.t1_id" ,
827840 "POST: EXPR: t2.t1_id" ,
828841 "POST: EXPR: t1.id = t2.t1_id" ,
842+ "POST: SELECT: SELECT * FROM t1 JOIN t2 ON t1.id = t2.t1_id" ,
829843 "POST: QUERY: SELECT * FROM t1 JOIN t2 ON t1.id = t2.t1_id" ,
830844 "POST: STATEMENT: SELECT * FROM t1 JOIN t2 ON t1.id = t2.t1_id" ,
831845 ] ,
@@ -835,20 +849,24 @@ mod tests {
835849 vec![
836850 "PRE: STATEMENT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
837851 "PRE: QUERY: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
852+ "PRE: SELECT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
838853 "PRE: TABLE FACTOR: t1" ,
839854 "PRE: RELATION: t1" ,
840855 "POST: RELATION: t1" ,
841856 "POST: TABLE FACTOR: t1" ,
842857 "PRE: EXPR: EXISTS (SELECT column FROM t2)" ,
843858 "PRE: QUERY: SELECT column FROM t2" ,
859+ "PRE: SELECT: SELECT column FROM t2" ,
844860 "PRE: EXPR: column" ,
845861 "POST: EXPR: column" ,
846862 "PRE: TABLE FACTOR: t2" ,
847863 "PRE: RELATION: t2" ,
848864 "POST: RELATION: t2" ,
849865 "POST: TABLE FACTOR: t2" ,
866+ "POST: SELECT: SELECT column FROM t2" ,
850867 "POST: QUERY: SELECT column FROM t2" ,
851868 "POST: EXPR: EXISTS (SELECT column FROM t2)" ,
869+ "POST: SELECT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
852870 "POST: QUERY: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
853871 "POST: STATEMENT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
854872 ] ,
@@ -858,20 +876,24 @@ mod tests {
858876 vec![
859877 "PRE: STATEMENT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
860878 "PRE: QUERY: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
879+ "PRE: SELECT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
861880 "PRE: TABLE FACTOR: t1" ,
862881 "PRE: RELATION: t1" ,
863882 "POST: RELATION: t1" ,
864883 "POST: TABLE FACTOR: t1" ,
865884 "PRE: EXPR: EXISTS (SELECT column FROM t2)" ,
866885 "PRE: QUERY: SELECT column FROM t2" ,
886+ "PRE: SELECT: SELECT column FROM t2" ,
867887 "PRE: EXPR: column" ,
868888 "POST: EXPR: column" ,
869889 "PRE: TABLE FACTOR: t2" ,
870890 "PRE: RELATION: t2" ,
871891 "POST: RELATION: t2" ,
872892 "POST: TABLE FACTOR: t2" ,
893+ "POST: SELECT: SELECT column FROM t2" ,
873894 "POST: QUERY: SELECT column FROM t2" ,
874895 "POST: EXPR: EXISTS (SELECT column FROM t2)" ,
896+ "POST: SELECT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
875897 "POST: QUERY: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
876898 "POST: STATEMENT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
877899 ] ,
@@ -881,24 +903,30 @@ mod tests {
881903 vec![
882904 "PRE: STATEMENT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2) UNION SELECT * FROM t3" ,
883905 "PRE: QUERY: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2) UNION SELECT * FROM t3" ,
906+ "PRE: SELECT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
884907 "PRE: TABLE FACTOR: t1" ,
885908 "PRE: RELATION: t1" ,
886909 "POST: RELATION: t1" ,
887910 "POST: TABLE FACTOR: t1" ,
888911 "PRE: EXPR: EXISTS (SELECT column FROM t2)" ,
889912 "PRE: QUERY: SELECT column FROM t2" ,
913+ "PRE: SELECT: SELECT column FROM t2" ,
890914 "PRE: EXPR: column" ,
891915 "POST: EXPR: column" ,
892916 "PRE: TABLE FACTOR: t2" ,
893917 "PRE: RELATION: t2" ,
894918 "POST: RELATION: t2" ,
895919 "POST: TABLE FACTOR: t2" ,
920+ "POST: SELECT: SELECT column FROM t2" ,
896921 "POST: QUERY: SELECT column FROM t2" ,
897922 "POST: EXPR: EXISTS (SELECT column FROM t2)" ,
923+ "POST: SELECT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2)" ,
924+ "PRE: SELECT: SELECT * FROM t3" ,
898925 "PRE: TABLE FACTOR: t3" ,
899926 "PRE: RELATION: t3" ,
900927 "POST: RELATION: t3" ,
901928 "POST: TABLE FACTOR: t3" ,
929+ "POST: SELECT: SELECT * FROM t3" ,
902930 "POST: QUERY: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2) UNION SELECT * FROM t3" ,
903931 "POST: STATEMENT: SELECT * FROM t1 WHERE EXISTS (SELECT column FROM t2) UNION SELECT * FROM t3" ,
904932 ] ,
@@ -912,6 +940,7 @@ mod tests {
912940 vec![
913941 "PRE: STATEMENT: SELECT * FROM monthly_sales PIVOT(SUM(a.amount) FOR a.MONTH IN ('JAN', 'FEB', 'MAR', 'APR')) AS p (c, d) ORDER BY EMPID" ,
914942 "PRE: QUERY: SELECT * FROM monthly_sales PIVOT(SUM(a.amount) FOR a.MONTH IN ('JAN', 'FEB', 'MAR', 'APR')) AS p (c, d) ORDER BY EMPID" ,
943+ "PRE: SELECT: SELECT * FROM monthly_sales PIVOT(SUM(a.amount) FOR a.MONTH IN ('JAN', 'FEB', 'MAR', 'APR')) AS p (c, d)" ,
915944 "PRE: TABLE FACTOR: monthly_sales PIVOT(SUM(a.amount) FOR a.MONTH IN ('JAN', 'FEB', 'MAR', 'APR')) AS p (c, d)" ,
916945 "PRE: TABLE FACTOR: monthly_sales" ,
917946 "PRE: RELATION: monthly_sales" ,
@@ -932,6 +961,7 @@ mod tests {
932961 "PRE: EXPR: 'APR'" ,
933962 "POST: EXPR: 'APR'" ,
934963 "POST: TABLE FACTOR: monthly_sales PIVOT(SUM(a.amount) FOR a.MONTH IN ('JAN', 'FEB', 'MAR', 'APR')) AS p (c, d)" ,
964+ "POST: SELECT: SELECT * FROM monthly_sales PIVOT(SUM(a.amount) FOR a.MONTH IN ('JAN', 'FEB', 'MAR', 'APR')) AS p (c, d)" ,
935965 "PRE: EXPR: EMPID" ,
936966 "POST: EXPR: EMPID" ,
937967 "POST: QUERY: SELECT * FROM monthly_sales PIVOT(SUM(a.amount) FOR a.MONTH IN ('JAN', 'FEB', 'MAR', 'APR')) AS p (c, d) ORDER BY EMPID" ,
0 commit comments