2
2
3
3
import static org .assertj .core .api .Assertions .assertThat ;
4
4
5
- import com .orientechnologies .BaseMemoryDatabase ;
6
- import com .orientechnologies .orient .core .command .script .OCommandScript ;
7
- import com .orientechnologies .orient .core .record .impl .ODocument ;
8
- import com .orientechnologies .orient .core .sql .executor .OResult ;
9
- import com .orientechnologies .orient .core .sql .executor .OResultSet ;
10
- import java .util .Collection ;
11
5
import java .util .HashMap ;
12
- import java .util .Iterator ;
13
6
import java .util .List ;
14
7
import java .util .Map ;
8
+
15
9
import org .junit .Assert ;
16
10
import org .junit .Ignore ;
17
11
import org .junit .Test ;
18
12
13
+ import com .orientechnologies .BaseMemoryDatabase ;
14
+ import com .orientechnologies .orient .core .command .script .OCommandScript ;
15
+ import com .orientechnologies .orient .core .record .impl .ODocument ;
16
+ import com .orientechnologies .orient .core .sql .executor .OResult ;
17
+ import com .orientechnologies .orient .core .sql .executor .OResultSet ;
18
+
19
19
public class OCommandExecutorSQLScriptTest extends BaseMemoryDatabase {
20
20
21
21
public void beforeTest () {
@@ -33,42 +33,46 @@ public void beforeTest() {
33
33
@ Test
34
34
public void testQuery () throws Exception {
35
35
StringBuilder script = new StringBuilder ();
36
- script .append ("begin\n " );
37
- script .append ("let $a = select from foo\n " );
38
- script .append ("commit\n " );
39
- script .append ("return $a\n " );
40
- List <ODocument > qResult = db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
36
+ script .append ("begin; " );
37
+ script .append ("let $a = select from foo; " );
38
+ script .append ("commit; " );
39
+ script .append ("return $a; " );
40
+ List <OResult > qResult = db .execute ( "sql" , script .toString ()). stream (). toList ();
41
41
42
42
Assert .assertEquals (qResult .size (), 3 );
43
43
}
44
44
45
45
@ Test
46
46
public void testTx () throws Exception {
47
47
StringBuilder script = new StringBuilder ();
48
- script .append ("begin isolation REPEATABLE_READ\n " );
49
- script .append ("let $a = insert into V set test = 'sql script test'\n " );
50
- script .append ("commit retry 10\n " );
51
- script .append ("return $a\n " );
52
- ODocument qResult = db .command ( new OCommandScript ( "sql" , script .toString ())). execute ( );
48
+ script .append ("begin isolation REPEATABLE_READ; " );
49
+ script .append ("let $a = insert into V set test = 'sql script test'; " );
50
+ script .append ("commit retry 10; " );
51
+ script .append ("return $a; " );
52
+ OResultSet qResult = db .execute ( "sql" , script .toString ());
53
53
54
- Assert .assertNotNull (qResult );
54
+ Assert .assertNotNull (qResult .hashCode ());
55
+ qResult .close ();
55
56
}
56
57
57
58
@ Test
58
59
public void testReturnExpanded () throws Exception {
59
60
StringBuilder script = new StringBuilder ();
60
- script .append ("let $a = insert into V set test = 'sql script test'\n " );
61
- script .append ("return $a.toJSON()\n " );
62
- String qResult = db .command (new OCommandScript ("sql" , script .toString ())).execute ();
61
+ script .append ("let $a = insert into V set test = 'sql script test';" );
62
+ script .append ("return $a.toJSON() " );
63
+
64
+ List <OResult > qResultSet = db .execute ("sql" , script .toString ()).stream ().toList ();
65
+ String qResult = qResultSet .get (0 ).getProperty ("value" );
63
66
Assert .assertNotNull (qResult );
64
67
65
- new ODocument ().fromJSON (qResult );
68
+ new ODocument ().fromJSON (qResult . substring ( 1 , qResult . length () - 1 ) );
66
69
67
70
script = new StringBuilder ();
68
- script .append ("let $a = select from V limit 2\n " );
69
- script .append ("return $a.toJSON()\n " );
70
- String result = db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
71
+ script .append ("let $a = select from V limit 2; " );
72
+ script .append ("return $a.toJSON() ; " );
73
+ List < OResult > resultSet = db .execute ( "sql" , script .toString ()). stream (). toList ();
71
74
75
+ String result = resultSet .get (0 ).getProperty ("value" );
72
76
Assert .assertNotNull (result );
73
77
result = result .trim ();
74
78
Assert .assertTrue (result .startsWith ("[" ));
@@ -82,53 +86,51 @@ public void testSleep() throws Exception {
82
86
83
87
StringBuilder script = new StringBuilder ();
84
88
script .append ("sleep 500" );
85
- db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
89
+ db .execute ( "sql" , script .toString ()). close ();
86
90
87
91
Assert .assertTrue (System .currentTimeMillis () - begin >= 500 );
88
92
}
89
93
90
94
@ Test
91
95
public void testConsoleLog () throws Exception {
92
96
StringBuilder script = new StringBuilder ();
93
- script .append ("LET $a = 'log'\n " );
97
+ script .append ("LET $a = 'log'; " );
94
98
script .append ("console.log 'This is a test of log for ${a}'" );
95
- db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
99
+ db .execute ( "sql" , script .toString ()). close ();
96
100
}
97
101
98
102
@ Test
99
103
public void testConsoleOutput () throws Exception {
100
104
StringBuilder script = new StringBuilder ();
101
- script .append ("LET $a = 'output'\n " );
105
+ script .append ("LET $a = 'output'; " );
102
106
script .append ("console.output 'This is a test of log for ${a}'" );
103
- db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
107
+ db .execute ( "sql" , script .toString ()). close ();
104
108
}
105
109
106
110
@ Test
107
111
public void testConsoleError () throws Exception {
108
112
StringBuilder script = new StringBuilder ();
109
- script .append ("LET $a = 'error'\n " );
113
+ script .append ("LET $a = 'error'; " );
110
114
script .append ("console.error 'This is a test of log for ${a}'" );
111
- db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
115
+ db .execute ( "sql" , script .toString ()). close ();
112
116
}
113
117
114
118
@ Test
115
119
public void testReturnObject () throws Exception {
116
120
StringBuilder script = new StringBuilder ();
117
- script .append ("return [{ a: 'b' }]" );
118
- Collection <Object > result = db .command (new OCommandScript ("sql" , script .toString ())).execute ();
119
-
120
- Assert .assertNotNull (result );
121
-
122
- Assert .assertEquals (result .size (), 1 );
121
+ script .append ("return [{ a: 'b' }];" );
122
+ OResultSet result = db .execute ("sql" , script .toString ());
123
123
124
- Assert .assertTrue (result .iterator ().next () instanceof Map );
124
+ OResult res = result .next ();
125
+ Assert .assertTrue (res .getProperty ("value" ) instanceof List );
126
+ Assert .assertTrue (((List )res .getProperty ("value" )).get (0 ) instanceof Map );
125
127
}
126
128
127
129
@ Test
128
130
public void testIncrementAndLet () throws Exception {
129
131
130
132
StringBuilder script = new StringBuilder ();
131
- script .append ("CREATE CLASS TestCounter;\n " );
133
+ script .append ("CREATE CLASS TestCounter;" );
132
134
script .append ("INSERT INTO TestCounter set weight = 3;\n " );
133
135
script .append ("LET counter = SELECT count(*) FROM TestCounter;\n " );
134
136
script .append ("UPDATE TestCounter INCREMENT weight = $counter[0].count RETURN AfTER @this;\n " );
@@ -155,121 +157,117 @@ public void testIncrementAndLetNewApi() throws Exception {
155
157
public void testIf1 () throws Exception {
156
158
StringBuilder script = new StringBuilder ();
157
159
158
- script .append ("let $a = select 1 as one\n " );
159
- script .append ("if($a[0].one = 1){\n " );
160
- script .append (" return 'OK'\n " );
161
- script .append ("}\n " );
162
- script .append ("return 'FAIL'\n " );
163
- Object qResult = db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
160
+ script .append ("let $a = select 1 as one; " );
161
+ script .append ("if($a[0].one = 1){" );
162
+ script .append (" return 'OK' ; " );
163
+ script .append ("}" );
164
+ script .append ("return 'FAIL' ; " );
165
+ List < OResult > qResult = db .execute ( "sql" , script .toString ()). stream (). toList ();
164
166
165
- Assert .assertNotNull (qResult );
166
- Assert .assertEquals (qResult , "OK" );
167
+ Assert .assertEquals (qResult .get (0 ).getProperty ("value" ), "OK" );
167
168
}
168
169
169
170
@ Test
170
171
public void testIf2 () throws Exception {
171
172
StringBuilder script = new StringBuilder ();
172
173
173
- script .append ("let $a = select 1 as one\n " );
174
- script .append ("if ($a[0].one = 1) { \n " );
175
- script .append (" return 'OK'\n " );
176
- script .append (" } \n " );
177
- script .append ("return 'FAIL'\n " );
178
- Object qResult = db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
174
+ script .append ("let $a = select 1 as one; " );
175
+ script .append ("if ($a[0].one = 1) { " );
176
+ script .append (" return 'OK' ; " );
177
+ script .append (" } " );
178
+ script .append ("return 'FAIL'; " );
179
+ List < OResult > qResult = db .execute ( "sql" , script .toString ()). stream (). toList ();
179
180
180
- Assert .assertNotNull (qResult );
181
- Assert .assertEquals (qResult , "OK" );
181
+ Assert .assertEquals (qResult .get (0 ).getProperty ("value" ), "OK" );
182
182
}
183
183
184
184
@ Test
185
185
public void testIf3 () throws Exception {
186
186
StringBuilder script = new StringBuilder ();
187
187
script .append ("let $a = select 1 as one; if($a[0].one = 1){return 'OK';}return 'FAIL';" );
188
- Object qResult = db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
189
- Assert . assertNotNull ( qResult );
190
- Assert .assertEquals (qResult , "OK" );
188
+ List < OResult > qResult = db .execute ( "sql" , script .toString ()). stream (). toList ();
189
+
190
+ Assert .assertEquals (qResult . get ( 0 ). getProperty ( "value" ) , "OK" );
191
191
}
192
192
193
193
@ Test
194
194
public void testNestedIf2 () throws Exception {
195
195
StringBuilder script = new StringBuilder ();
196
196
197
- script .append ("let $a = select 1 as one\n " );
198
- script .append ("if($a[0].one = 1){\n " );
199
- script .append (" if($a[0].one = 'zz'){\n " );
200
- script .append (" return 'FAIL'\n " );
201
- script .append (" }\n " );
202
- script .append (" return 'OK'\n " );
197
+ script .append ("let $a = select 1 as one; " );
198
+ script .append ("if($a[0].one = 1){" );
199
+ script .append (" if($a[0].one = 'zz'){" );
200
+ script .append (" return 'FAIL'; " );
201
+ script .append (" }" );
202
+ script .append (" return 'OK'; " );
203
203
script .append ("}\n " );
204
- script .append ("return 'FAIL'\n " );
205
- Object qResult = db .command (new OCommandScript ("sql" , script .toString ())).execute ();
204
+ script .append ("return 'FAIL';" );
206
205
207
- Assert .assertNotNull (qResult );
208
- Assert .assertEquals (qResult , "OK" );
206
+ List <OResult > qResult = db .execute ("sql" , script .toString ()).stream ().toList ();
207
+
208
+ Assert .assertEquals (qResult .get (0 ).getProperty ("value" ), "OK" );
209
209
}
210
210
211
211
@ Test
212
212
public void testNestedIf3 () throws Exception {
213
213
StringBuilder script = new StringBuilder ();
214
214
215
- script .append ("let $a = select 1 as one\n " );
215
+ script .append ("let $a = select 1 as one ; \n " );
216
216
script .append ("if($a[0].one = 'zz'){\n " );
217
217
script .append (" if($a[0].one = 1){\n " );
218
- script .append (" return 'FAIL'\n " );
218
+ script .append (" return 'FAIL' ; \n " );
219
219
script .append (" }\n " );
220
- script .append (" return 'FAIL'\n " );
220
+ script .append (" return 'FAIL' ; \n " );
221
221
script .append ("}\n " );
222
- script .append ("return 'OK'\n " );
223
- Object qResult = db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
222
+ script .append ("return 'OK' ; \n " );
223
+ List < OResult > qResult = db .execute ( "sql" , script .toString ()). stream (). toList ();
224
224
225
- Assert .assertNotNull (qResult );
226
- Assert .assertEquals (qResult , "OK" );
225
+ Assert .assertEquals (qResult .get (0 ).getProperty ("value" ), "OK" );
227
226
}
228
227
229
228
@ Test
230
229
public void testIfRealQuery () throws Exception {
231
230
StringBuilder script = new StringBuilder ();
232
231
233
- script .append ("let $a = select from foo\n " );
232
+ script .append ("let $a = select from foo; \n " );
234
233
script .append ("if($a is not null and $a.size() = 3){\n " );
235
- script .append (" return $a\n " );
234
+ script .append (" return $a ; \n " );
236
235
script .append ("}\n " );
237
- script .append ("return 'FAIL'\n " );
238
- Object qResult = db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
236
+ script .append ("return 'FAIL'; \n " );
237
+ List < OResult > qResult = db .execute ( "sql" , script .toString ()). stream (). toList ();
239
238
240
239
Assert .assertNotNull (qResult );
241
- Assert .assertEquals ((( List ) qResult ) .size (), 3 );
240
+ Assert .assertEquals ( qResult .size (), 3 );
242
241
}
243
242
244
243
@ Test
245
244
public void testIfMultipleStatements () throws Exception {
246
245
StringBuilder script = new StringBuilder ();
247
246
248
- script .append ("let $a = select 1 as one\n " );
247
+ script .append ("let $a = select 1 as one; \n " );
249
248
script .append ("if($a[0].one = 1){\n " );
250
- script .append (" let $b = select 'OK' as ok\n " );
251
- script .append (" return $b[0].ok\n " );
249
+ script .append (" let $b = select 'OK' as ok; \n " );
250
+ script .append (" return $b[0].ok; \n " );
252
251
script .append ("}\n " );
253
- script .append ("return 'FAIL'\n " );
254
- Object qResult = db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
252
+ script .append ("return 'FAIL'; " );
253
+ List < OResult > qResult = db .execute ( "sql" , script .toString ()). stream (). toList ();
255
254
256
255
Assert .assertNotNull (qResult );
257
- Assert .assertEquals (qResult , "OK" );
256
+ Assert .assertEquals (qResult . get ( 0 ). getProperty ( "value" ) , "OK" );
258
257
}
259
258
260
259
@ Test
261
260
public void testScriptSubContext () throws Exception {
262
261
StringBuilder script = new StringBuilder ();
263
262
264
- script .append ("let $a = select from foo limit 1\n " );
263
+ script .append ("let $a = select from foo limit 1; " );
265
264
script .append ("select from (traverse doesnotexist from $a)\n " );
266
- Iterable qResult = db .command ( new OCommandScript ( "sql" , script .toString ())). execute ( );
265
+ OResultSet qResult = db .execute ( "sql" , script .toString ());
267
266
268
- Assert .assertNotNull (qResult );
269
- Iterator iterator = qResult .iterator ();
270
- Assert .assertTrue (iterator .hasNext ());
271
- iterator .next ();
272
- Assert .assertFalse (iterator .hasNext ());
267
+ Assert .assertTrue (qResult .hasNext ());
268
+ qResult .next ();
269
+ Assert .assertFalse (qResult .hasNext ());
270
+ qResult .close ();
273
271
}
274
272
275
273
@ Test
@@ -278,12 +276,12 @@ public void testSemicolonInString() throws Exception {
278
276
// testing parsing problem
279
277
StringBuilder script = new StringBuilder ();
280
278
281
- script .append ("let $a = select 'foo ; bar' as one\n " );
282
- script .append ("let $b = select 'foo \\ \' ; bar' as one\n " );
279
+ script .append ("let $a = select 'foo ; bar' as one; " );
280
+ script .append ("let $b = select 'foo \\ \' ; bar' as one; " );
283
281
284
- script .append ("let $a = select \" foo ; bar\" as one\n " );
285
- script .append ("let $b = select \" foo \\ \" ; bar\" as one\n " );
286
- Object qResult = db .command ( new OCommandScript ( "sql" , script .toString ())). execute ();
282
+ script .append ("let $a = select \" foo ; bar\" as one; " );
283
+ script .append ("let $b = select \" foo \\ \" ; bar\" as one; " );
284
+ db .execute ( "sql" , script .toString ()). close ();
287
285
}
288
286
289
287
@ Test
@@ -292,7 +290,7 @@ public void testQuotedRegex() {
292
290
db .command ("CREATE CLASS QuotedRegex2" ).close ();
293
291
String batch = "INSERT INTO QuotedRegex2 SET regexp=\" '';\" " ;
294
292
295
- db .command ( new OCommandScript ( batch .toString ())). execute ();
293
+ db .execute ( "sql" , batch .toString ()). close ();
296
294
297
295
OResultSet result = db .query ("SELECT FROM QuotedRegex2" );
298
296
OResult doc = result .next ();
0 commit comments