-
Notifications
You must be signed in to change notification settings - Fork 4k
ARROW-5471: [C++][Gandiva] Array offset is ignored in Gandiva projector #5255
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The failed test says "Address already in use" for Flight, which seems that it is not related with my changes. Is it possible to run the test again? |
|
#5253 will fix the Flight test failure. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR.
- Using a single offset instead of an array of offsets will significantly simplify the change.
- At the end of evaluating an expr, we compute the output bitmaps by doing an intersection of the input bitmaps (and some internally generated bitmaps). We'll need to fix this to take offset into account for the input bitmaps here.
- can you please add filter tests ?
|
Thanks for reviewing! I replied the discussion of offset. And I will look at the output bitmap and add the filter test. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@pravindra As for computing the bitmap, it seems a little bit complicated here, as with the offset, the bits may not be aligned any more. I am thinking maybe copy these source bit maps with offsets to make sure they are aligned, but this seems inefficient. Any suggestions here? Thanks!
agree with you. For this PR, let's copy the unaligned ones - that way, there is no additional cost for the common case. |
Codecov Report
@@ Coverage Diff @@
## master #5255 +/- ##
=========================================
Coverage ? 89.32%
=========================================
Files ? 754
Lines ? 109133
Branches ? 0
=========================================
Hits ? 97481
Misses ? 11652
Partials ? 0
Continue to review full report at Codecov.
|
| if (op(left_reader.IsSet(), right_reader.IsSet())) { | ||
| writer.Set(); | ||
| } else { | ||
| writer.Clear(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this seems the right thing to do to. we can now implement a & b & c by doing
dst = a & b
dst = dst & c
and it doesn't required the dst buffer to be zero-filled to begin with. however, it may impact perf for the compute kernels - @xhochy
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or we have two versions, one requires zero-filled and another one doesn't?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i prefer your current version. but, will wait to hear from others.
pravindra
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm.
Fix for JIRA issue https://issues.apache.org/jira/browse/ARROW-5471
Basically it adds offset for each buffer in the generated function to compute the correct index.