public static <T> Write<T> write(String jdbcUrl, String table) {
    return new AutoValue_ClickHouseIO_Write.Builder<T>()
        .jdbcUrl(jdbcUrl)
        .table(table)
        .properties(new Properties())
        .maxInsertBlockSize(DEFAULT_MAX_INSERT_BLOCK_SIZE)
        .initialBackoff(DEFAULT_INITIAL_BACKOFF)
        .maxRetries(DEFAULT_MAX_RETRIES)
        .maxCumulativeBackoff(DEFAULT_MAX_CUMULATIVE_BACKOFF)
        .build()
        .withInsertDeduplicate(true)
        .withInsertDistributedSync(true);
  }
@Test
  public void testTupleType() throws Exception {
    Schema tupleSchema =
        Schema.of(
            Schema.Field.of("f0", FieldType.STRING), Schema.Field.of("f1", FieldType.BOOLEAN));
    Schema schema = Schema.of(Schema.Field.of("t0", FieldType.row(tupleSchema)));
    Row row1Tuple = Row.withSchema(tupleSchema).addValue("tuple").addValue(true).build();

    Row row1 = Row.withSchema(schema).addValue(row1Tuple).build();

    executeSql(
        "CREATE TABLE test_named_tuples (" + "t0 Tuple(`f0` String, `f1` Bool)" + ") ENGINE=Log");

    pipeline.apply(Create.of(row1).withRowSchema(schema)).apply(write("test_named_tuples"));

    pipeline.run().waitUntilFinish();

    try (ResultSet rs = executeQuery("SELECT * FROM test_named_tuples")) {
      rs.next();
      assertEquals("[tuple, true]", rs.getString("t0"));
    }

    try (ResultSet rs = executeQuery("SELECT t0.f0 as f0, t0.f1 as f1 FROM test_named_tuples")) {
      rs.next();
      assertEquals("tuple", rs.getString("f0"));
      assertEquals("true", rs.getString("f1"));
    }
  }