| 266 | } |
| 267 | |
| 268 | uint64_t FactorizedTable::getNumFlatTuples(ft_tuple_idx_t tupleIdx) const { |
| 269 | std::unordered_map<uint32_t, bool> calculatedGroups; |
| 270 | uint64_t numFlatTuples = 1; |
| 271 | auto tupleBuffer = getTuple(tupleIdx); |
| 272 | for (auto i = 0u; i < tableSchema.getNumColumns(); i++) { |
| 273 | auto column = tableSchema.getColumn(i); |
| 274 | auto groupID = column->getGroupID(); |
| 275 | if (!calculatedGroups.contains(groupID)) { |
| 276 | calculatedGroups[groupID] = true; |
| 277 | numFlatTuples *= column->isFlat() ? 1 : ((overflow_value_t*)tupleBuffer)->numElements; |
| 278 | } |
| 279 | tupleBuffer += column->getNumBytes(); |
| 280 | } |
| 281 | return numFlatTuples; |
| 282 | } |
| 283 | |
| 284 | uint8_t* FactorizedTable::getTuple(ft_tuple_idx_t tupleIdx) const { |
| 285 | DASSERT(tupleIdx < numTuples); |
no test coverage detected