1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-08-08 14:22:09 +03:00

MCOL-701 stop join on BLOB columns

Joins on BLOB columns aren't yet possible due to string pointers used.
This gives a meaningful error for it.
This commit is contained in:
Andrew Hutchings
2017-05-05 12:40:24 +01:00
parent a6dfc3c366
commit 82c983ec62
2 changed files with 10 additions and 1 deletions

View File

@@ -555,6 +555,9 @@ void ExpressionStep::substitute(uint64_t i, const SSC& ssc)
void ExpressionStep::functionJoinCheck(SimpleFilter* sf, JobInfo& jobInfo)
{
if ((sf->lhs()->resultType().colDataType == CalpontSystemCatalog::VARBINARY ||
sf->lhs()->resultType().colDataType == CalpontSystemCatalog::BLOB) && !fVarBinOK)
throw runtime_error("VARBINARY/BLOB in join is not supported.");
// only handle one & only one table at each side, and not the same table
fFunctionJoinInfo.reset(new FunctionJoinInfo);
if ((parseFuncJoinColumn(sf->lhs(), jobInfo) == false) ||

View File

@@ -944,6 +944,9 @@ const JobStepVector doFilterExpression(const SimpleColumn* sc1, const SimpleColu
const JobStepVector doJoin(
SimpleColumn* sc1, SimpleColumn* sc2, JobInfo& jobInfo, const SOP& sop, SimpleFilter* sf)
{
if ((sc1->resultType().colDataType == CalpontSystemCatalog::VARBINARY ||
sc1->resultType().colDataType == CalpontSystemCatalog::BLOB))
throw runtime_error("VARBINARY/BLOB in join is not supported.");
//The idea here is to take the two SC's and pipe them into a HJ step. The output of the HJ step
// is 2 DL's (one for each table) that are the minimum rid list for each side of the join.
CalpontSystemCatalog::OID tableOid1 = tableOid(sc1, jobInfo.csc);
@@ -1201,6 +1204,9 @@ const JobStepVector doJoin(
const JobStepVector doSemiJoin(const SimpleColumn* sc, const ReturnedColumn* rc, JobInfo& jobInfo)
{
if ((sc->resultType().colDataType == CalpontSystemCatalog::VARBINARY ||
sc->resultType().colDataType == CalpontSystemCatalog::BLOB))
throw runtime_error("VARBINARY/BLOB in join is not supported.");
CalpontSystemCatalog::OID tableOid1 = tableOid(sc, jobInfo.csc);
CalpontSystemCatalog::OID tableOid2 = execplan::CNX_VTABLE_ID;
string alias1(extractTableAlias(sc));