masksPerTable is collected from semiMasker. maskPerTable is collected from target operator, i.e. GDS, scan, ... Normally the two maps should have the same tableIDs. An exception is in GDS with filtered projected graph, multiple semiMasker will work on the same target GDS operator so masksPerTable may have fewer tableIDs.
| 18 | // An exception is in GDS with filtered projected graph, multiple semiMasker will work on |
| 19 | // the same target GDS operator so masksPerTable may have fewer tableIDs. |
| 20 | static void initMask(table_id_map_t<std::vector<SemiMask*>>& masksPerTable, |
| 21 | const table_id_map_t<SemiMask*>& maskPerTable) { |
| 22 | for (auto& [tableID, masks] : masksPerTable) { |
| 23 | DASSERT(maskPerTable.contains(tableID)); |
| 24 | auto mask = maskPerTable.at(tableID); |
| 25 | mask->enable(); |
| 26 | masks.emplace_back(mask); |
| 27 | } |
| 28 | } |
| 29 | |
| 30 | std::unique_ptr<PhysicalOperator> PlanMapper::mapSemiMasker( |
| 31 | const LogicalOperator* logicalOperator) { |
no test coverage detected