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.