@@ -274,8 +274,49 @@ function optimizerRuleTestSuite () {
274274
275275 assertEqual ( 2 , found ) ;
276276 } ) ;
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+
279320 } ;
280321}
281322
0 commit comments