| 844 | } |
| 845 | |
| 846 | bool NodeTable::lookupPK(const Transaction* transaction, ValueVector* keyVector, uint64_t vectorPos, |
| 847 | offset_t& result) const { |
| 848 | if (transaction->getLocalStorage()) { |
| 849 | if (const auto localTable = transaction->getLocalStorage()->getLocalTable(tableID); |
| 850 | localTable && localTable->cast<LocalNodeTable>().lookupPK(transaction, keyVector, |
| 851 | vectorPos, result)) { |
| 852 | return true; |
| 853 | } |
| 854 | } |
| 855 | if (auto* pkIndex = tryGetPrimaryKeyIndex()) { |
| 856 | return pkIndex->lookupPrimaryKey(transaction, keyVector, vectorPos, result, |
| 857 | [&](offset_t offset) { return isVisibleNoLock(transaction, offset); }); |
| 858 | } |
| 859 | auto keyToLookup = keyVector->getAsValue(vectorPos); |
| 860 | ColumnPredicateSet predicateSet; |
| 861 | predicateSet.addPredicate(std::make_unique<ColumnConstantPredicate>( |
| 862 | std::string{getColumn(pkColumnID).getName()}, ExpressionType::EQUALS, *keyToLookup)); |
| 863 | std::vector<ColumnPredicateSet> predicateSets; |
| 864 | predicateSets.push_back(std::move(predicateSet)); |
| 865 | return scanPKColumn(transaction, *keyToLookup, std::move(predicateSets), result); |
| 866 | } |
| 867 | |
| 868 | bool NodeTable::lookupPKRange(const Transaction* transaction, ValueVector* lowerBoundVector, |
| 869 | uint64_t lowerBoundPos, bool lowerInclusive, ValueVector* upperBoundVector, |
no test coverage detected