Thread: mergejoin error message executing in 7.2

mergejoin error message executing in 7.2

From
"kevin rowe"
Date:
hi there,

I have a problem trying to execute a complex query that was designed in
7.3.2 to a machine running 7.2.x

this is the error message

FULL JOIN is only supported with mergejoinable join conditions

this is the source string for a jdbc prepared statement. (it has ordering
clause added at the end using string concatenation)
this string works fine in 7.3.2 but fails runtime in 7.2.

Does anyone know what the problem is?
I can't find the message on the net anywhere except in the 'C' source on
postgres's developer channel or some japanese site (sigh).
strSQL =    "SELECT stock," +                   "       p.description," +                   "       p.stockgroup," +
              "       o.ordercurrent," +                   "       o.type," +                   "       s.quantity," +
                "       a.ordercurrent, " +                   "       a.type " +                   "  FROM " +
        "       (SELECT stock,ordercurrent,type,line " +                   "          FROM orderlines o " +
     "         WHERE o.theorder = ? " +                   "           AND (o.TYPE='P' OR o.TYPE='T') ) AS o" +
        "  FULL OUTER JOIN " +                   "       (SELECT DISTINCT ON (stock) stock,quantity " +
 "          FROM standingorders s " +                   "         WHERE s.account = ? " +                   "
ANDs.dayno = ? " +                   "           AND s.delivery = ? "+                   "           AND commencedate
<=? " +                   "         ORDER BY stock, commencedate DESC) AS s " +                   " USING (stock) " +
               "  FULL OUTER JOIN " +                   "       (SELECT stock,ordercurrent,type " +                   "
        FROM orderlines ol " +                   "         WHERE ol.theorder = ? " +                   "           AND
ol.TYPE<>'P'" +                   "           AND ol.TYPE<>'T' ) AS a " +                   " USING (stock) " +
         " INNER JOIN stockitems p ON (p.id=stock) " +                   " WHERE p.status='N' " +                   "
ORDERBY ";
 

Any help greatly appreciated.

Regards,
Kevin



Re: mergejoin error message executing in 7.2

From
Tom Lane
Date:
"kevin rowe" <kevin@mtel.co.uk> writes:
> I have a problem trying to execute a complex query that was designed in
> 7.3.2 to a machine running 7.2.x
> this is the error message
> FULL JOIN is only supported with mergejoinable join conditions

Nested FULL JOINs don't work in 7.2.*.  The fix is not practical to
back-port, so you're stuck: either modify the query to avoid that,
or update the machine with the older server.
        regards, tom lane