You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
MCOL-1734 CS now behaves similar to MDB in case of
NOT IN + correlated subquery if the subquery returns empty set. CS now returns full outer record set. gcc 8.2 complains about unused variable in ha_mcs_impl.cc
This commit is contained in:
@ -2303,7 +2303,7 @@ int ha_mcs_impl_direct_update_delete_rows(bool execute, ha_rows *affected_rows)
|
|||||||
*affected_rows = ci->affectedRows;
|
*affected_rows = ci->affectedRows;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ha_mcs_impl_rnd_init(TABLE* table)
|
int ha_mcs_impl_rnd_init(TABLE* table)
|
||||||
|
@ -1174,6 +1174,7 @@ void BatchPrimitiveProcessor::executeTupleJoin()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (LIKELY(!typelessJoin[j]))
|
if (LIKELY(!typelessJoin[j]))
|
||||||
{
|
{
|
||||||
//cout << "not typeless join\n";
|
//cout << "not typeless join\n";
|
||||||
@ -1186,6 +1187,8 @@ void BatchPrimitiveProcessor::executeTupleJoin()
|
|||||||
largeKey = oldRow.getIntField(colIndex);
|
largeKey = oldRow.getIntField(colIndex);
|
||||||
uint bucket = bucketPicker((char *) &largeKey, 8, bpSeed) & ptMask;
|
uint bucket = bucketPicker((char *) &largeKey, 8, bpSeed) & ptMask;
|
||||||
|
|
||||||
|
bool joinerIsEmpty = tJoiners[j][bucket]->empty() ? true : false;
|
||||||
|
|
||||||
found = (tJoiners[j][bucket]->find(largeKey) != tJoiners[j][bucket]->end());
|
found = (tJoiners[j][bucket]->find(largeKey) != tJoiners[j][bucket]->end());
|
||||||
isNull = oldRow.isNullValue(colIndex);
|
isNull = oldRow.isNullValue(colIndex);
|
||||||
/* These conditions define when the row is NOT in the result set:
|
/* These conditions define when the row is NOT in the result set:
|
||||||
@ -1195,7 +1198,7 @@ void BatchPrimitiveProcessor::executeTupleJoin()
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (((!found || isNull) && !(joinTypes[j] & (LARGEOUTER | ANTI))) ||
|
if (((!found || isNull) && !(joinTypes[j] & (LARGEOUTER | ANTI))) ||
|
||||||
((joinTypes[j] & ANTI) && ((isNull && (joinTypes[j] & MATCHNULLS)) || (found && !isNull))))
|
((joinTypes[j] & ANTI) && !joinerIsEmpty && ((isNull && (joinTypes[j] & MATCHNULLS)) || (found && !isNull))))
|
||||||
{
|
{
|
||||||
//cout << " - not in the result set\n";
|
//cout << " - not in the result set\n";
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user