55import org .hswebframework .ezorm .rdb .operator .DatabaseOperator ;
66import org .hswebframework .web .api .crud .entity .QueryParamEntity ;
77import org .hswebframework .web .crud .TestApplication ;
8+ import org .junit .Assert ;
89import org .junit .Test ;
910import org .junit .runner .RunWith ;
1011import org .springframework .beans .factory .annotation .Autowired ;
@@ -21,23 +22,59 @@ public class QueryAnalyzerImplTest {
2122 private DatabaseOperator database ;
2223
2324
25+ @ Test
26+ public void testParamCast () {
27+ QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (
28+ database ,
29+ """
30+ SELECT
31+ to_char(period, ?) AS time,
32+ SUM(count_per_period) OVER (ORDER BY period) AS number
33+ FROM (
34+ SELECT
35+ gs.period AS period,
36+ COUNT(tb.create_time) AS count_per_period
37+ FROM
38+ generate_series(?, ?, ?::interval) AS gs(period)
39+ LEFT JOIN s_test ss ON ss.project_id = ?
40+ LEFT JOIN s_test tb
41+ ON tb.subsystem_id = ss.id
42+ AND tb.thing_type = 'device'
43+ AND to_timestamp(tb.create_time / 1000.0) >= gs.period
44+ AND to_timestamp(tb.create_time / 1000.0) < gs.period + ?::interval
45+ LEFT JOIN s_test ddi ON ddi.id = tb.thing_id
46+ GROUP BY gs.period
47+ ) sub
48+ ORDER BY period;
49+ """ );
50+ SqlRequest request = analyzer .refactor (
51+ QueryParamEntity
52+ .newQuery ()
53+ .getParam (), 1 , 2 , 3 , 4 , 5 , 6 );
54+
55+ System .out .println (request .getSql ());
56+ System .out .println (request );
57+
58+ Assert .assertEquals (6 , request .getParameters ().length );
59+ }
60+
2461 @ Test
2562 public void testInject () {
2663 QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (database ,
2764 "select count(distinct time) t2, \" name\" n from \" s_test\" t" );
2865 SqlRequest request = analyzer .refactor (
29- QueryParamEntity
30- .newQuery ()
31- .and ("name" , "123" )
32- .getParam ());
66+ QueryParamEntity
67+ .newQuery ()
68+ .and ("name" , "123" )
69+ .getParam ());
3370
3471 System .out .println (request );
3572
3673 SqlRequest sql = analyzer .refactorCount (
37- QueryParamEntity
38- .newQuery ()
39- .and ("name" , "123" )
40- .getParam ());
74+ QueryParamEntity
75+ .newQuery ()
76+ .and ("name" , "123" )
77+ .getParam ());
4178 System .out .println (sql );
4279
4380 }
@@ -47,7 +84,7 @@ public void testInject() {
4784 public void testUnion () {
4885 QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (database ,
4986 "select name n from s_test t " +
50- "union select name n from s_test t" );
87+ "union select name n from s_test t" );
5188
5289 assertNotNull (analyzer .select ().table .alias , "t" );
5390 assertNotNull (analyzer .select ().table .metadata .getName (), "s_test" );
@@ -57,7 +94,7 @@ public void testUnion() {
5794 }
5895
5996 @ Test
60- public void test () {
97+ public void test () {
6198 QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (database ,
6299 "select name n from s_test t" );
63100
@@ -79,10 +116,10 @@ public void testSub() {
79116 assertNotNull (analyzer .select ().getColumns ().get ("n" ));
80117
81118 SqlRequest request = analyzer
82- .refactor (QueryParamEntity
83- .newQuery ()
84- .where ("n" , "123" )
85- .getParam ());
119+ .refactor (QueryParamEntity
120+ .newQuery ()
121+ .where ("n" , "123" )
122+ .getParam ());
86123
87124 System .out .println (request );
88125
@@ -97,37 +134,37 @@ public void testSub() {
97134 @ Test
98135 public void testJoin () {
99136 QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (
100- database ,
101- "select *,t2.c from s_test t " +
102- "left join (select z.id id, count(1) c from s_test z) t2 on t2.id = t.id" );
137+ database ,
138+ "select *,t2.c from s_test t " +
139+ "left join (select z.id id, count(1) c from s_test z) t2 on t2.id = t.id" );
103140
104141 SqlRequest request = analyzer
105- .refactor (QueryParamEntity
106- .of ()
107- .and ("t2.c" , "is" , "xyz" ));
142+ .refactor (QueryParamEntity
143+ .of ()
144+ .and ("t2.c" , "is" , "xyz" ));
108145
109146 System .out .println (request );
110147
111148 }
112149
113150 @ Test
114- public void testPrepare (){
151+ public void testPrepare () {
115152 QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (
116- database ,
117- "select * from (select substring(id,9) id from s_test where left(id,1) = ?) t" );
153+ database ,
154+ "select * from (select substring(id,9) id from s_test where left(id,1) = ?) t" );
118155
119156 SqlRequest request = analyzer
120- .refactor (QueryParamEntity .of (),33 );
157+ .refactor (QueryParamEntity .of (), 33 );
121158
122159 System .out .println (request );
123160 }
124161
125162 @ Test
126- public void testWith (){
163+ public void testWith () {
127164
128165 QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (
129- database ,
130- "WITH RECURSIVE Tree AS (\n " +
166+ database ,
167+ "WITH RECURSIVE Tree AS (\n " +
131168 "\n " +
132169 " SELECT id\n " +
133170 " FROM s_test\n " +
@@ -143,63 +180,63 @@ public void testWith(){
143180 "FROM Tree AS t1;" );
144181
145182 SqlRequest request = analyzer
146- .refactor (QueryParamEntity .of ().and ("id" ,"eq" ,"test" ),1 );
183+ .refactor (QueryParamEntity .of ().and ("id" , "eq" , "test" ), 1 );
147184
148185 System .out .println (request );
149186 }
150187
151188 @ Test
152- public void testTableFunction (){
189+ public void testTableFunction () {
153190 QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (
154191 database ,
155192 "select t.key from json_each_text('{\" name\" :\" test\" }') t" );
156193
157194 SqlRequest request = analyzer
158- .refactor (QueryParamEntity .of ().and ("key" ,"like" ,"test%" ),1 );
195+ .refactor (QueryParamEntity .of ().and ("key" , "like" , "test%" ), 1 );
159196 System .out .println (request );
160197 }
161198
162199 @ Test
163- public void testTableFunctionJoin (){
200+ public void testTableFunctionJoin () {
164201 QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (
165202 database ,
166203 "select t1.*,t2.key from s_test t1 left join json_each_text('{\" name\" :\" test\" }') t2 on t2.key='test' and t2.value='test1'" );
167204
168205 SqlRequest request = analyzer
169- .refactor (QueryParamEntity .of ().and ("t2.key" ,"like" ,"test%" ),1 );
206+ .refactor (QueryParamEntity .of ().and ("t2.key" , "like" , "test%" ), 1 );
170207 System .out .println (request );
171208 }
172209
173210 @ Test
174- public void testValues (){
211+ public void testValues () {
175212 QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (
176213 database ,
177214 "select * from (values (1,2),(3,4)) t(\" a\" ,b)" );
178215
179216 SqlRequest request = analyzer
180- .refactor (QueryParamEntity .of ().and ("a" ,"eq" ,1 ),1 );
217+ .refactor (QueryParamEntity .of ().and ("a" , "eq" , 1 ), 1 );
181218 System .out .println (request );
182219 }
183220
184221 @ Test
185- public void testLateralSubSelect (){
222+ public void testLateralSubSelect () {
186223 QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (
187224 database ,
188225 "select * from s_test t, lateral(select * from s_test where id = t.id) t2" );
189226
190227 SqlRequest request = analyzer
191- .refactor (QueryParamEntity .of ().and ("t2.id" ,"eq" ,"test" ),1 );
228+ .refactor (QueryParamEntity .of ().and ("t2.id" , "eq" , "test" ), 1 );
192229 System .out .println (request );
193230 }
194231
195232 @ Test
196- public void testParenthesisFrom (){
233+ public void testParenthesisFrom () {
197234 QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (
198235 database ,
199236 "select * from (s_test) t" );
200237
201238 SqlRequest request = analyzer
202- .refactor (QueryParamEntity .of ().and ("t.id" ,"eq" ,"test" ),1 );
239+ .refactor (QueryParamEntity .of ().and ("t.id" , "eq" , "test" ), 1 );
203240 System .out .println (request );
204241 }
205242
0 commit comments