]> granicus.if.org Git - postgresql/commitdiff
Dodge compiler bug in Visual Studio 2013.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 29 Jun 2016 23:07:19 +0000 (19:07 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 29 Jun 2016 23:07:19 +0000 (19:07 -0400)
VS2013 apparently has a problem with taking the address of a formal
parameter in some cases.  We do that elsewhere without trouble, but
in this case the address is being passed to a subroutine that will
probably get inlined, so maybe the combination of those things is
what tickles the bug.  Anyway, introducing an extra copy of the
parameter value is enough to work around it.  Per trouble report
from Umair Shahid.

Report: <CAM184AcjqKYZSdQqBHDrnENXHhW=mXbUC46QYPJ=nAh0gUHCGA@mail.gmail.com>

src/backend/optimizer/path/costsize.c

index 8c1dcccf9b8aa6e2e381f88791edb371a5d4e468..c4422fe9860a4e21f97be27e71991e64fcad5ebd 100644 (file)
@@ -3914,8 +3914,10 @@ calc_joinrel_size_estimate(PlannerInfo *root,
                                                   double outer_rows,
                                                   double inner_rows,
                                                   SpecialJoinInfo *sjinfo,
-                                                  List *restrictlist)
+                                                  List *restrictlist_in)
 {
+       /* This apparently-useless variable dodges a compiler bug in VS2013: */
+       List       *restrictlist = restrictlist_in;
        JoinType        jointype = sjinfo->jointype;
        Selectivity fkselec;
        Selectivity jselec;