@@ -274,8 +274,49 @@ function optimizerRuleTestSuite () {
274
274
275
275
assertEqual ( 2 , found ) ;
276
276
} ) ;
277
- }
278
-
277
+ } ,
278
+
279
+ testBts562 : function ( ) {
280
+ c . truncate ( ) ;
281
+ c . insert ( { foo : { attr : 1 } , bar : { attr : 2 } } ) ;
282
+
283
+ let result = AQL_EXECUTE ( `FOR doc IN @@cn RETURN [ doc.foo.attr, doc.bar.attr ]` , { "@cn" : cn } ) . json ;
284
+ assertEqual ( 1 , result . length ) ;
285
+ assertEqual ( [ 1 , 2 ] , result [ 0 ] ) ;
286
+
287
+ c . truncate ( ) ;
288
+ c . insert ( { foo : { attr : 1 } , bar : { attr : 2 } , baz : { attr : 3 } } ) ;
289
+
290
+ result = AQL_EXECUTE ( `FOR doc IN @@cn RETURN [ doc.foo.attr, doc.bar.attr, doc.baz.attr ]` , { "@cn" : cn } ) . json ;
291
+ assertEqual ( 1 , result . length ) ;
292
+ assertEqual ( [ 1 , 2 , 3 ] , result [ 0 ] ) ;
293
+
294
+ c . truncate ( ) ;
295
+ c . insert ( { result : { } } ) ;
296
+ c . insert ( { result : { status : "ok" } } ) ;
297
+
298
+ result = AQL_EXECUTE ( `FOR d IN @@cn COLLECT resultStatus = d.result.status, requestStatus = d.request.status WITH COUNT INTO count SORT resultStatus RETURN { resultStatus, requestStatus, count }` , { "@cn" : cn } ) . json ;
299
+
300
+ assertEqual ( 2 , result . length ) ;
301
+ assertEqual ( { resultStatus : null , requestStatus : null , count : 1 } , result [ 0 ] ) ;
302
+ assertEqual ( { resultStatus : "ok" , requestStatus : null , count : 1 } , result [ 1 ] ) ;
303
+
304
+ result = AQL_EXECUTE ( `FOR d IN @@cn COLLECT resultStatus = d.result.status, requestOther = d.request.other WITH COUNT INTO count SORT resultStatus RETURN { resultStatus, requestOther, count }` , { "@cn" : cn } ) . json ;
305
+ assertEqual ( 2 , result . length ) ;
306
+ assertEqual ( { resultStatus : null , requestOther : null , count : 1 } , result [ 0 ] ) ;
307
+ assertEqual ( { resultStatus : "ok" , requestOther : null , count : 1 } , result [ 1 ] ) ;
308
+
309
+ c . truncate ( ) ;
310
+ c . insert ( { result : { status : "ok" } , request : { status : "ok" } } ) ;
311
+ c . insert ( { result : { status : "ok" } , request : { status : "blarg" } } ) ;
312
+
313
+ result = AQL_EXECUTE ( `FOR d IN @@cn COLLECT resultStatus = d.result.status, requestStatus = d.request.status WITH COUNT INTO count SORT requestStatus RETURN { resultStatus, requestStatus, count }` , { "@cn" : cn } ) . json ;
314
+
315
+ assertEqual ( 2 , result . length ) ;
316
+ assertEqual ( { resultStatus : "ok" , requestStatus : "blarg" , count : 1 } , result [ 0 ] ) ;
317
+ assertEqual ( { resultStatus : "ok" , requestStatus : "ok" , count : 1 } , result [ 1 ] ) ;
318
+ } ,
319
+
279
320
} ;
280
321
}
281
322
0 commit comments