Hi Devs, I have implemented the ARRAY_CONCAT_AGG function for zetasql dialect. I am trying to validate the test as:
@Test public void testArrayConcatAggZetasql() { String sql = "SELECT ARRAY_CONCAT_AGG(x) AS array_concat_agg FROM (SELECT [1, 2, 3, 4] AS x UNION ALL SELECT [5, 6] UNION ALL SELECT [7, 8, 9])"; ZetaSQLQueryPlanner zetaSQLQueryPlanner = new ZetaSQLQueryPlanner(config); BeamRelNode beamRelNode = zetaSQLQueryPlanner.convertToBeamRel(sql); PCollection<Row> stream = BeamSqlRelUtils.toPCollection(pipeline, beamRelNode); Schema schema = Schema.builder().addArrayField("array_field", FieldType.INT64).build(); PAssert.that(stream) .containsInAnyOrder( Row.withSchema(schema).addArray(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L).build()); pipeline.run().waitUntilFinish(Duration.standardMinutes(PIPELINE_EXECUTION_WAITTIME_MINUTES)); } Expected Output is: 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L. But I am getting randomly different outputs: 1. 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L 2. 5L, 6L, 7L, 8L, 9L, 1L, 2L, 3L, 4L 3. 7L, 8L, 9L, 5L, 6L, 1L, 2L, 3L, 4L As per my understanding, it is because of containsInAnyOrder function. Is there anything Like: PAssert.that(stream) .containsAnyOfThem( Row.withSchema(schema).addArray(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L).build(), Row.withSchema(schema).addArray(5L, 6L, 7L, 8L, 9L, 1L, 2L, 3L, 4L).build(), Row.withSchema(schema).addArray(7L, 8L, 9L, 5L, 6L, 1L, 2L, 3L, 4L).build()); I would really appreciate if anyone can help me in knowing how to handle such scenario in Beam. Thanks! -- Regards, *Sonam* Software Engineer Mobile: +92 3088337296 <http://venturedive.com/>