PG10 declarative partitioning that allow null value
Hello All,
currently we are planning to migrate inheritance partitioning to
declarative partitioning by range values of int on pg10. But the key
values can contain null. I know that range partitioning does not allow
null values.
We are looking for workaround for this, that is create a list
partitioning and then followed by range sub-partitioning. List
partitioning of number of digits of the int key column.
CREATE TABLE partitioned_table_name (like table_name) partition by list
(floor(log(int_key_column)+1));
create table partitions_1 partition of partitioned_table_name for values
in (null);
create table partitions_2 partition of partitioned_table_name for values
in (1);
.....
.....
create table partitions_2 partition of partitioned_table_name for values
in (9) partition by range(int_key_column);
Question is :
is this a good practice ? will performance dropped significantly due to
the process of counting the number of digits ?
or is there any better workaround for this ?
Thanks,
Soni.
I think it's better to had list partitioning of true/false based on
(int_key_column is null)
CREATE TABLE partitioned_table_name (like table_name) partition by list
((int_key_column is null));
Show quoted text
On 16/04/2019 9:37, Soni wrote:
Hello All,
currently we are planning to migrate inheritance partitioning to
declarative partitioning by range values of int on pg10. But the key
values can contain null. I know that range partitioning does not allow
null values.
We are looking for workaround for this, that is create a list
partitioning and then followed by range sub-partitioning. List
partitioning of number of digits of the int key column.CREATE TABLE partitioned_table_name (like table_name) partition by
list (floor(log(int_key_column)+1));create table partitions_1 partition of partitioned_table_name for
values in (null);
create table partitions_2 partition of partitioned_table_name for
values in (1);
.....
.....
create table partitions_2 partition of partitioned_table_name for
values in (9) partition by range(int_key_column);Question is :
is this a good practice ? will performance dropped significantly due
to the process of counting the number of digits ?
or is there any better workaround for this ?Thanks,
Soni.
Soni <diptatapa@gmail.com> writes:
currently we are planning to migrate inheritance partitioning to
declarative partitioning by range values of int on pg10. But the key
values can contain null. I know that range partitioning does not allow
null values.
In v11 you could use a default partition ...
regards, tom lane