Klint Gore <[EMAIL PROTECTED]> writes:
>> Can you send a test case with table and view definitions, it's hard to
>> generate one from just the information above.

> ok.  the last select generates the error.

Hoo, that was a fun one.  Here's the patch.

                        regards, tom lane

*** src/backend/optimizer/plan/subselect.c.orig Tue Nov 25 16:00:54 2003
--- src/backend/optimizer/plan/subselect.c      Tue Nov 25 18:25:32 2003
***************
*** 118,123 ****
--- 118,128 ----
         * well, I believe that this sort of aliasing will cause no trouble.
         * The correct field should get stored into the Param slot at
         * execution in each part of the tree.
+        *
+        * We also need to demand a match on vartypmod.  This does not matter
+        * for the Param itself, since those are not typmod-dependent, but it
+        * does matter when make_subplan() instantiates a modified copy of the
+        * Var for a subplan's args list.
         */
        i = 0;
        foreach(ppl, PlannerParamList)
***************
*** 129,135 ****
  
                        if (pvar->varno == var->varno &&
                                pvar->varattno == var->varattno &&
!                               pvar->vartype == var->vartype)
                                break;
                }
                i++;
--- 134,141 ----
  
                        if (pvar->varno == var->varno &&
                                pvar->varattno == var->varattno &&
!                               pvar->vartype == var->vartype &&
!                               pvar->vartypmod == var->vartypmod)
                                break;
                }
                i++;

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Reply via email to