fix table.delete()/overwrite() with null values#955
Conversation
|
Thank you very much for putting up this PR so quickly! It's amazing how fast you've investigated this issue and put forward a working solution. Just wanted to highlight that the proposed implementation is consistent with Spark Iceberg's behavior. For a given Iceberg table: Scan API ignore Null values unless null is specified in the predicate expression: While the DELETE API avoids deleting nulls unless it is specified directly in the predicate expression. So I agree with @jqin61 's finding that we have to walk through the predicate expression to check if Nulls/NaNs were directly mentioned explicitly in the delete filter to revert the expression correctly as proposed. Simple negation of |
jqin61
left a comment
There was a problem hiding this comment.
still need to fix some tests
HonahX
left a comment
There was a problem hiding this comment.
LGTM! Thanks for taking the time to investigate the typing issue. Although that does not affect code logic, it is great to fix those to improve readability and avoid confusion. I have a final comment about using Any instead of generic L in concrete class.
* fix * naming * handle nan as well * naming as sung suggested * one more test to fix; one more comment to address * fix a test * refactor code organization * fix mouthful naming * restore usage of BoundTerm * small fixes for comments * small fix for typing * fix typing according to pr comment
* fix * naming * handle nan as well * naming as sung suggested * one more test to fix; one more comment to address * fix a test * refactor code organization * fix mouthful naming * restore usage of BoundTerm * small fixes for comments * small fix for typing * fix typing according to pr comment
for issue #954