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++)