Commit 09b12d52 authored by Robert Haas's avatar Robert Haas

Improve comment in get_partition_dispatch_recurse.

David Rowley, reviewed by Amit Langote, and revised a bit by me.

Discussion: http://postgr.es/m/CAKJS1f9yyimYyFzbHM4EwE+tkj4jvrHqSH0H4S4Kbas=UFpc9Q@mail.gmail.com
parent 6bd1b4c3
...@@ -970,20 +970,14 @@ get_partition_dispatch_recurse(Relation rel, Relation parent, ...@@ -970,20 +970,14 @@ get_partition_dispatch_recurse(Relation rel, Relation parent,
* partitions are processed as well and a corresponding PartitionDispatch * partitions are processed as well and a corresponding PartitionDispatch
* object gets added to *pds. * object gets added to *pds.
* *
* About the values in pd->indexes: for a leaf partition, it contains the * The 'indexes' array is used when searching for a partition matching a
* leaf partition's position in the global list *leaf_part_oids minus 1, * given tuple. The actual value we store here depends on whether the
* whereas for a partitioned table partition, it contains the partition's * array element belongs to a leaf partition or a subpartitioned table.
* position in the global list *pds multiplied by -1. The latter is * For leaf partitions we store the 0-based index into *leaf_part_oids,
* multiplied by -1 to distinguish partitioned tables from leaf partitions * and for sub-partitioned tables we store a negative version of the
* when going through the values in pd->indexes. So, for example, when * 1-based index into the *pds list. When searching, if we see a negative
* using it during tuple-routing, encountering a value >= 0 means we found * value, the search must continue in the corresponding sub-partition;
* a leaf partition. It is immediately returned as the index in the array * otherwise, we've identified the correct partition.
* of ResultRelInfos of all the leaf partitions, using which we insert the
* tuple into that leaf partition. A negative value means we found a
* partitioned table. The value multiplied by -1 is returned as the index
* in the array of PartitionDispatch objects of all partitioned tables in
* the tree. This value is used to continue the search in the next level
* of the partition tree.
*/ */
pd->indexes = (int *) palloc(partdesc->nparts * sizeof(int)); pd->indexes = (int *) palloc(partdesc->nparts * sizeof(int));
for (i = 0; i < partdesc->nparts; i++) for (i = 0; i < partdesc->nparts; i++)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment