The default partition need to be considered later.
-- 此致!Best Regards 陈明雨 Mingyu Chen Email: chenmin...@apache.org 在 2021-02-23 10:37:13,"ling miao" <lingm...@apache.org> 写道: >Hi JianLiang, > >Looking forward to your detailed design and PR. > >Ling Miao > >ye qi <jianliang5...@gmail.com> 于2021年2月22日周一 下午7:25写道: > >> Hi, Ling Miao. >> >> Thanks for your advice. >> I'll think about it and get back to you. >> >> Jianliang Qi >> >> On Mon, Feb 22, 2021 at 5:31 PM ling miao <lingm...@apache.org> wrote: >> >>> Hi JianLiang, >>> >>> Thank you for your proposal, I think this function is still necessary for >>> some large dimension tables. >>> This means that data that is not generated according to time can also be >>> partitioned. >>> >>> Of course, since this is a change to metadata, all loads, queries, and >>> other DDL operations may need to be changed and developed. >>> Please be considerate when designing. >>> >>> Ling Miao >>> >>> ye qi <jianliang5...@gmail.com> 于2021年2月21日周日 上午1:12写道: >>> >>>> List partition >>>> >>>> Doris currently only supports Range partitioning, where data is usually >>>> partitioned by time columns. >>>> >>>> However, in some scenarios, users want to partition by some enumerated >>>> values of columns, such as by city, etc. >>>> Design >>>> >>>> To add support for List partitioning, the following functional points >>>> need >>>> to be considered. >>>> >>>> 1. Support for List partition syntax in creating table statements. >>>> 2. Support for adding and deleting List partition syntax. >>>> 3. Support for List partitioning in various load operations. >>>> 4. Support for List partition pruning during query. >>>> >>>> List partitioned tables do not need to consider dynamic partitioning. >>>> Detailed designSyntax >>>> >>>> The main changes involved here include. >>>> >>>> 1. Implementation of the subclass ListPartitionDesc of the parsing >>>> class >>>> PartitionDesc >>>> 2. Implementation of metadata class PartitionInfo subclass >>>> ListPartitionInfo >>>> 3. Support for parsing and checking ListPartitionDesc in >>>> CreateTableStmt >>>> 4. Support for the creation of List Partition tables in Catalog class. >>>> 5. Metadata persistence-related changes. >>>> >>>> The syntax is referenced from MySQL and Oracle >>>> Single partition column >>>> >>>> CREATE TABLE tb1 ( >>>> k1 int, k2 varchar(128), k3 int, v1 int, v2 int >>>> ) >>>> PARTITION BY LIST(k1) >>>> ( >>>> PARTITION p1 VALUES IN ("1", "3", "5"), >>>> PARTITION p2 VALUES IN ("2", "4", "6"), >>>> ... >>>> ) >>>> ... >>>> ; >>>> >>>> Multi-partition columns >>>> >>>> CREATE TABLE tb2 ( >>>> k1 int, k2 varchar(128), k3 int, v1 int, v2 int >>>> ) >>>> PARTITION BY LIST(k1, k2) >>>> ( >>>> PARTITION p1 VALUES IN (("1", "beijing"), ("1", "shanghai")), >>>> PARTITION p2 VALUES IN (("2", "beijing"), ("2", "shanghai"), ("2", >>>> "tianjin")), >>>> PARTITION p3 VALUES IN (("3", "beijing")), >>>> ... >>>> ) >>>> ... >>>> ; >>>> >>>> NOTE: Each partition needs to ensure that the partition values are >>>> unique. >>>> Add partition >>>> >>>> ALTER TABLE tb1 ADD PARTITION p4 VALUES IN ("7", "8", "9"); >>>> ALTER TABLE tb2 ADD PARTITION p4 VALUES IN (("4", "tianjin")); >>>> >>>> Load >>>> >>>> The current load methods of Doris include Stream Load, INSERT, Routine >>>> Load, Broker Load, Hadoop Load, Spark Load. >>>> >>>> Among them, Stream Load, INSERT, Routine Load, and Broker Load all use >>>> TabletSink class for data distribution. Our first phase supports List >>>> partition support for these load operations. >>>> >>>> The main changes involved include: >>>> >>>> 1. Changes related to the Descriptors.TOlapTablePartitionParam >>>> structure >>>> in the Thrift structure TOlapTableSink >>>> 2. Changes related to the OlapTablePartition object in the >>>> OlapTableSink >>>> class on the BE side. >>>> >>>> Query >>>> >>>> The query mainly needs to implement the List Partition pruning function. >>>> >>>> The main changes involved include: >>>> >>>> 1. Implementing the subclass ListPartitionPruner of PartitionPruner >>>> >>>> Partition related >>>> >>>> Support operations related to partitioned tables, such as recover, >>>> truncate, temporary partition, restore, replace, etc. >>>> >>>