> > > It seems the way of specifying per-partition definition/constraint, > especially for range partitioning, would have a number of interesting > alternatives. > > By the way, the [USING opclass_name] bit is just a way of telling that a > particular key column has user-defined notion of "ordering" in case of > range partitioning and "equality" for list partitioning. The opclass would > eventually determine which WHERE clauses (looking at operators, operand > types) are candidates to help prune partitions. If we use the range_op > range_literal::range_type notation to describe partition constraint for > each partition, it might not offer much beyond the readability. We are not > really going to detect range operators being applied in WHERE conditions > to trigger partition pruning, for example. Although I may be missing > something... >
I don't think it's important that ranges be used internally for partition pruning, though I don't see a reason why they couldn't. I was making the case for range types being used at partition creation/declaration time, because you were proposing new syntax to describe a range of values in text when we already have that in range types. We should eat our own dog food. But mostly, I wanted to make sure that range partitions could have inclusive and exclusive bounds. > > > - No partitioning scheme survives first contact with reality. So you will > > need a facility for splitting and joining existing partitions. For > > splitting partitions, it's sufficient to require that the new partition > > share either a upper/lower bound (with the same inclusivity/exclusivity) > of > > an existing partition, thus uniquely identifying the partition to be > split, > > and require that the other bound be within the range of the partition to > be > > split. Similarly, it's fair to require that the partitions to be joined > be > > adjacent in range. In both cases, range operators make these tests > simple. > > > > SPLIT/MERGE can be done in later patches/release, I think. > Later patches for sure. When a partition "fills up", it's a critical performance issue, so the fewer steps needed to amend it the better.