Fix dead code in IndexConfigBuilder::build() logic, and other issues#686
Fix dead code in IndexConfigBuilder::build() logic, and other issues#686hpdic wants to merge 1 commit intomicrosoft:cpp_mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Fixes unreachable/dead warning logic in IndexConfigBuilder::build() by removing a duplicated safety check so the _num_frozen_pts == 0 warning is emitted before clamping the value for dynamic indexes. Also makes the header more self-contained by adding missing includes and simplifies a redundant string emptiness check.
Changes:
- Remove the duplicated
if (_dynamic_index && _num_frozen_pts == 0)that previously made the warning branch unreachable. - Add missing header includes needed for types used in
index_config.h(e.g.,std::shared_ptr,std::string,Metric,ANNException,diskann::cout). - Simplify
_data_typevalidation from== "" || empty()toempty().
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Reference Issues/PRs
What does this implement/fix? Briefly explain your changes.
This PR fixes a logical error in IndexConfigBuilder::build() where a safety check logic was duplicated, causing the logging code to become unreachable dead code. A couple of minor things: missing some header includes; string check is redundant.
Previously, there were two identical if (_dynamic_index && _num_frozen_pts == 0) checks.
The first check silently set _num_frozen_pts = 1.
The second check (which contained the warning log) would effectively become if (true && 1 == 0), which always evaluates to false.
As a result, the warning message "_num_frozen_pts passed as 0 ..." would never be printed.
The fix: I removed the first redundant check. Now the code correctly logs the warning before overriding the value to 1.
I also fixed a few other minor things like missing header includes and string checks.
Any other comments?