@Test
  public void testPartitionedBy() throws Exception {
    CreateTableAnalyzedStatement analysis =
        (CreateTableAnalyzedStatement)
            analyze(
                "create table my_table ("
                    + "  id integer,"
                    + "  no_index string index off,"
                    + "  name string,"
                    + "  date timestamp"
                    + ") partitioned by (name)");
    assertThat(analysis.partitionedBy().size(), is(1));
    assertThat(analysis.partitionedBy().get(0), contains("name", "string"));

    // partitioned columns must be not indexed in mapping
    Map<String, Object> nameMapping =
        (Map<String, Object>) analysis.mappingProperties().get("name");
    assertThat(
        mapToSortedString(nameMapping), is("doc_values=false, index=no, store=false, type=string"));

    Map<String, Object> metaMapping = (Map) analysis.mapping().get("_meta");
    assertThat((Map<String, Object>) metaMapping.get("columns"), not(hasKey("name")));
    List<List<String>> partitionedByMeta = (List<List<String>>) metaMapping.get("partitioned_by");
    assertTrue(analysis.isPartitioned());
    assertThat(partitionedByMeta.size(), is(1));
    assertThat(partitionedByMeta.get(0).get(0), is("name"));
    assertThat(partitionedByMeta.get(0).get(1), is("string"));
  }