Fix failure with whole-row reference to a subquery.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 11 Nov 2013 21:36:27 +0000 (16:36 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 11 Nov 2013 21:36:27 +0000 (16:36 -0500)
Simple oversight in commit 1cb108efb0e60d87e4adec38e7636b6e8efbeb57 ---
recursively examining a subquery output column is only sane if the
original Var refers to a single output column.  Found by Kevin Grittner.

src/backend/utils/adt/selfuncs.c

index edfd8435aaa5d1aef2331c7a01aba5dc9d5b4c79..5c30577cdfec477558e6e1bdaac8914c50a4e15e 100644 (file)
@@ -4505,6 +4505,12 @@ examine_simple_variable(PlannerInfo *root, Var *var,
        RelOptInfo *rel;
        TargetEntry *ste;
 
+       /*
+        * Punt if it's a whole-row var rather than a plain column reference.
+        */
+       if (var->varattno == InvalidAttrNumber)
+           return;
+
        /*
         * Punt if subquery uses set operations or GROUP BY, as these will
         * mash underlying columns' stats beyond recognition.  (Set ops are