Ejemplo n.º 1
0
  @Test
  public void testDoubleMapMap() throws Exception {
    MapType innerMapType = new MapType(VARCHAR, VARCHAR);
    MapType mapType = new MapType(DOUBLE, innerMapType);
    InternalAggregationFunction aggFunc =
        metadata
            .getFunctionRegistry()
            .getAggregateFunctionImplementation(
                new Signature(
                    NAME,
                    AGGREGATE,
                    mapType.getTypeSignature().toString(),
                    StandardTypes.DOUBLE,
                    innerMapType.getTypeSignature().toString()));

    BlockBuilder builder = innerMapType.createBlockBuilder(new BlockBuilderStatus(), 3);
    innerMapType.writeObject(builder, mapBlockOf(VARCHAR, VARCHAR, ImmutableMap.of("a", "b")));
    innerMapType.writeObject(builder, mapBlockOf(VARCHAR, VARCHAR, ImmutableMap.of("c", "d")));
    innerMapType.writeObject(builder, mapBlockOf(VARCHAR, VARCHAR, ImmutableMap.of("e", "f")));

    assertAggregation(
        aggFunc,
        1.0,
        ImmutableMap.of(
            1.0,
            ImmutableMap.of("a", "b"),
            2.0,
            ImmutableMap.of("c", "d"),
            3.0,
            ImmutableMap.of("e", "f")),
        createDoublesBlock(1.0, 2.0, 3.0),
        builder.build());
  }