I'm trying to create a table with one-column range-partitioned and another
column hash-partitioned. Documentation for add_hash_partitions and
set_range_partition_columns suggest this should be possible ("Tables must
be created with either range, hash, or range and hash partitioning").
I have a schema with three INT64 columns ("time", "key", and "value").
When I create the table, I set up the partitioning:
(*table_creator)
.table_name("test_table")
.schema(&schema)
.add_hash_partitions({"key"}, 2)
.set_range_partition_columns({"time"})
.num_replicas(1)
.Create()
I later try to add a partition:
auto timesplit(KuduSchema & schema, std::int64_t t) {
auto split = schema.NewRow();
check_ok(split->SetInt64("time", t));
return split;
}
alterer->AddRangePartition(
timesplit(schema, date_start),
timesplit(schema, next_date_start));
check_ok(alterer->Alter());
But I get an error "Invalid argument: New range partition conflicts with
existing range partition".
How are hash and range partitioning intended to be mixed?