[WIP] feat(c++): support reading certain set of properties #697
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reason for this PR
This PR addresses the feature request in #397 to support reading certain set of properties.
What changes are included in this PR?
I have modified
VertexPropertyArrowChunkReader::Make
so that when a singleproperty_name
is provided, it no longer loads all properties in the correspondingpropertyGroup
, but only reads the internal ID and the specified property column.Additionally, a
std::vector<std::string>
ofproperty_names
can be passed to read a specific set of properties, provided they all belong to the samepropertyGroup
.Essentially, these
property_names
are added toFilterOptions.columns
, serving as conditions for predicate pushdown.Are these changes tested?
Yes, I have added:
The benchmark results show performance improvements, especially on large chunk sizes.
ReadChunkSelectAllColumnsIn*
: read using a property group (3 properties + internal ID)ReadChunkSelectOneColumnIn*
: read only the internal ID and a single propertyReadChunkSelectTwoColumnIn*
: read only the internal ID and 2 properties*FirstGraph
: read person vertex in ldbc_sample (chunk_size: 100)*SecondGraph
: read organisation vertex in ldbc (chunk_size: 4096)Are there any user-facing changes?
Yes, there are breaking changes:
Previously, users could pass a
property_name
directly to access data from itspropertyGroup
.Now, to read
propertyGroup
, users should explicitly provide the correspondingpropertyGroup
.This change improves clarity and ensures consistency when filtering properties.