Further adjust comment in get_partition_dispatch_recurse.
authorRobert Haas <rhaas@postgresql.org>
Fri, 18 May 2018 20:09:14 +0000 (16:09 -0400)
committerRobert Haas <rhaas@postgresql.org>
Fri, 18 May 2018 20:11:22 +0000 (16:11 -0400)
In editing 09b12d52db1cf1a4c72d876f3fb6c9d06919e51a I made it wrong;
fix that and try to more clearly explain the situation.

Patch by me, reviewed by David Rowley and Amit Langote

Discussion: http://postgr.es/m/CA+TgmobAq+mA5hzm0a5OS38qQY5758DDDGqa3sBJN4hvir-H9w@mail.gmail.com

src/backend/executor/execPartition.c

index 75329b362415aaac096029dc48f6a342fb45ef94..c83991c93c52f0f442edf5e4baf9205aacac9652 100644 (file)
@@ -973,11 +973,13 @@ get_partition_dispatch_recurse(Relation rel, Relation parent,
     * The 'indexes' array is used when searching for a partition matching a
     * given tuple.  The actual value we store here depends on whether the
     * array element belongs to a leaf partition or a subpartitioned table.
-    * For leaf partitions we store the 0-based index into *leaf_part_oids,
-    * and for sub-partitioned tables we store a negative version of the
-    * 1-based index into the *pds list.  When searching, if we see a negative
-    * value, the search must continue in the corresponding sub-partition;
-    * otherwise, we've identified the correct partition.
+    * For leaf partitions we store the index into *leaf_part_oids, and for
+    * sub-partitioned tables we store a negative version of the index into
+    * the *pds list.  Both indexes are 0-based, but the first element of the
+    * *pds list is the root partition, so 0 always means the first leaf. When
+    * searching, if we see a negative value, the search must continue in the
+    * corresponding sub-partition; otherwise, we've identified the correct
+    * partition.
     */
    pd->indexes = (int *) palloc(partdesc->nparts * sizeof(int));
    for (i = 0; i < partdesc->nparts; i++)