From 6aeb1bfa3ad0d64f5c6705fc4322b84813bc3348 Mon Sep 17 00:00:00 2001 From: Andrew Hutchings Date: Tue, 1 Aug 2017 14:48:24 +0100 Subject: [PATCH] MCOL-840 Fix incompatible join on expression This check was removed but is actually still required in some cases. --- dbcon/joblist/expressionstep.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/dbcon/joblist/expressionstep.cpp b/dbcon/joblist/expressionstep.cpp index da7b0fd74..09d39816a 100644 --- a/dbcon/joblist/expressionstep.cpp +++ b/dbcon/joblist/expressionstep.cpp @@ -569,6 +569,19 @@ void ExpressionStep::functionJoinCheck(SimpleFilter* sf, JobInfo& jobInfo) return; } + if ((!compatibleColumnTypes(sf->lhs()->resultType(), sf->rhs()->resultType(), true)) && + (fFunctionJoinInfo->fTableKey.size() == 2)) + { + uint32_t t1 = fFunctionJoinInfo->fTableKey[0]; + uint32_t t2 = fFunctionJoinInfo->fTableKey[1]; + jobInfo.incompatibleJoinMap[t1] = t2; + jobInfo.incompatibleJoinMap[t2] = t1; + + // not convertible + fFunctionJoinInfo.reset(); + return; + } + SJSTEP sjstep; ReturnedColumn* sfLhs = sf->lhs(); ReturnedColumn* sfRhs = sf->rhs();