Re: pgbench - allow to create partitioned tables
Fabien COELHO <coelho@cri.ensmp.fr>
From: Fabien COELHO <coelho@cri.ensmp.fr>
To: Dilip Kumar <dilipbalaut@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>,
Asif Rehman <asifr.rehman@gmail.com>,
PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2019-09-13T08:35:07Z
Lists: pgsql-hackers
Hello Dilip, > + /* For RANGE, we use open-ended partitions at the beginning and end */ > + if (p == 1) > + sprintf(minvalue, "minvalue"); > + else > + sprintf(minvalue, INT64_FORMAT, (p-1) * part_size + 1); > + > + if (p < partitions) > + sprintf(maxvalue, INT64_FORMAT, p * part_size + 1); > + else > + sprintf(maxvalue, "maxvalue"); > > I do not understand the reason why first partition need to be > open-ended? Because we are clear that the minimum value of the aid is 1 > in pgbench_accout. So if you directly use sprintf(minvalue, > INT64_FORMAT, (p-1) * part_size + 1); then also it will give 1 as > minvalue for the first partition and that will be the right thing to do. > Am I missing something here? This is simply for the principle that any value allowed for the primary key type has a corresponding partition, and also that it exercices these special values. It also probably reduces the cost of checking whether a value belongs to the first partition because one test is removed, so there is a small additional performance benefit beyond principle and coverage. -- Fabien.
Commits
-
pgbench: add --partitions and --partition-method options.
- b1c1aa531823 13.0 landed