1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-08-01 06:46:55 +03:00

MCOL-641 Refactor initial extent elimination support.

This commit also adds support in TupleHashJoinStep::forwardCPData,
although we currently do not support wide decimals as join keys.

Row estimation to determine large-side of the join is also updated.
This commit is contained in:
Gagan Goel
2020-07-24 19:04:25 -04:00
committed by Roman Nozdrin
parent ca53b6348a
commit d3bc68b02f
32 changed files with 1221 additions and 386 deletions

View File

@ -42,6 +42,7 @@ SCommand PseudoCC::duplicate()
ret.reset(pseudo);
pseudo->function = function;
pseudo->valueFromUM = valueFromUM;
pseudo->bigValueFromUM = bigValueFromUM;
ColumnCommand::duplicate(pseudo);
return ret;
}
@ -55,9 +56,21 @@ void PseudoCC::createCommand(messageqcpp::ByteStream& bs)
void PseudoCC::resetCommand(messageqcpp::ByteStream& bs)
{
if (function == PSEUDO_EXTENTMAX || function == PSEUDO_EXTENTMIN || function == PSEUDO_EXTENTID)
if (function == PSEUDO_EXTENTMAX || function == PSEUDO_EXTENTMIN)
{
if (!datatypes::Decimal::isWideDecimalType(colType))
bs >> valueFromUM;
else
bs >> bigValueFromUM;
}
else if (function == PSEUDO_EXTENTID)
{
bs >> valueFromUM;
if (datatypes::Decimal::isWideDecimalType(colType))
bigValueFromUM = valueFromUM;
}
ColumnCommand::resetCommand(bs);
}
@ -91,8 +104,11 @@ void PseudoCC::loadData()
case 8:
loadPMNumber<uint64_t>();
break;
case 16:
cout << __FILE__<< ":" <<__LINE__ << " Fix for 16 Bytes ?" << endl;
loadPMNumber<uint128_t>();
break;
default:
cout << "PC::loadData(): bad column width" << endl;
break;
@ -119,6 +135,10 @@ void PseudoCC::loadData()
loadRIDs<uint64_t>();
break;
case 16:
loadRIDs<uint128_t>();
break;
default:
cout << "PC::loadData(): bad column width" << endl;
break;
@ -144,8 +164,11 @@ void PseudoCC::loadData()
case 8:
loadSegmentNum<uint64_t>();
break;
case 16:
cout << __FILE__<< ":" <<__LINE__ << " Fix for 16 Bytes ?" << endl;
loadSegmentNum<uint128_t>();
break;
default:
cout << "PC::loadData(): bad column width" << endl;
break;
@ -173,7 +196,9 @@ void PseudoCC::loadData()
break;
case 16:
cout << __FILE__<< ":" <<__LINE__ << " Fix for 16 Bytes ?" << endl;
loadPartitionNum<uint128_t>();
break;
default:
cout << "PC::loadData(): bad column width" << endl;
break;
@ -201,7 +226,9 @@ void PseudoCC::loadData()
break;
case 16:
cout << __FILE__<< ":" <<__LINE__ << " Fix for 16 Bytes ?" << endl;
loadLBID<uint128_t>();
break;
default:
cout << "PC::loadData(): bad column width" << endl;
break;
@ -227,8 +254,10 @@ void PseudoCC::loadData()
case 8:
loadDBRootNum<uint64_t>();
break;
case 16:
cout << __FILE__<< ":" <<__LINE__ << " Fix for 16 Bytes ?" << endl;
loadDBRootNum<uint128_t>();
break;
default:
cout << "PC::loadData(): bad column width" << endl;
@ -258,8 +287,10 @@ void PseudoCC::loadData()
case 8:
loadSingleValue<int64_t>(valueFromUM);
break;
case 16:
cout << __FILE__<< ":" <<__LINE__ << " Fix for 16 Bytes ?" << endl;
loadSingleValue<uint128_t>(bigValueFromUM);
break;
default:
cout << "PC::loadData(): bad column width" << endl;