]> granicus.if.org Git - postgresql/commitdiff
Make _outPathInfo print the relid set of the path's parent rel.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 23 Sep 2010 19:16:49 +0000 (15:16 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 23 Sep 2010 19:16:49 +0000 (15:16 -0400)
We can't actually print the parent RelOptInfo in toto, because that would
lead to infinite recursion.  But it's safe enough to reach into the parent
and print its identifying relids, and that makes it a whole lot easier
to figure out what a Path represents.  Should have done this years ago.

src/backend/nodes/outfuncs.c

index e62fe81882111cb50d2dab7a006d8558d835fcf2..3b30d4f81c02b5c882ffd6facb5b693b50a95364 100644 (file)
@@ -1352,12 +1352,15 @@ _outFromExpr(StringInfo str, FromExpr *node)
 /*
  * print the basic stuff of all nodes that inherit from Path
  *
- * Note we do NOT print the parent, else we'd be in infinite recursion
+ * Note we do NOT print the parent, else we'd be in infinite recursion.
+ * We can print the parent's relids for identification purposes, though.
  */
 static void
 _outPathInfo(StringInfo str, Path *node)
 {
        WRITE_ENUM_FIELD(pathtype, NodeTag);
+       appendStringInfo(str, " :parent_relids ");
+       _outBitmapset(str, node->parent->relids);
        WRITE_FLOAT_FIELD(startup_cost, "%.2f");
        WRITE_FLOAT_FIELD(total_cost, "%.2f");
        WRITE_NODE_FIELD(pathkeys);