Visitor and evaluator edge cases can over-prune files or mishandle nulls
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- python
- Domain
- data, testing-qa
Research direction
Start with _StrictMetricsEvaluator.visit_not_equal, visit_not_in, and eval, then inspect the comparison methods and visit_not_nan on ResidualVisitor. Run the existing tests for stats, nullable partitions, and NotNaN behavior; done means the edge cases have consistent semantics without unsafe pruning or null-handling errors.
Written by the indexing model from the issue text.
Description
Several visitor/evaluator edge cases appear unsafe or inconsistent:
-
_StrictMetricsEvaluator.visit_not_equal/visit_not_inreturnROWS_MUST_MATCHwhen a file can contain nulls or NaNs. Example stats with[null, 5]or[NaN, 5.0]and lower/upper bounds both5return true forNotEqualTo("x", 5)/NotIn("x", {5}), even though one row does not match. This can incorrectly mark whole files deleted. -
_StrictMetricsEvaluator.evalreturnsROWS_MUST_MATCHforrecord_count <= 0.record_count=0is vacuously true, butrecord_count=-1is unknown per the local comment; evenAlwaysFalse()returns true. -
ResidualVisitorcomparison methods directly compare partition values to literals. A nullable identity partition value ofNonewithLessThan("x", 1)raisesTypeError, while row evaluation returns false. -
ResidualVisitor.visit_not_nan(None)returnsAlwaysFalse, while expression evaluation treatsNotNaN(None)as true. Existing tests encode both behaviors, so the semantics are inconsistent.
Validated against the current tree; examples use stats/partition shapes already supported by the repo tests.
- Dominant language
- Python
- Stars
- 1.1k
- Forks
- 589
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 70
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from apache/iceberg-python
-
kind:bug
Difficulty 1/5 Under an hour Newbie friendliness 92/100
apache/iceberg-python#4006 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
apache/iceberg-python#3996 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
apache/iceberg-python#3979 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
apache/iceberg-python#3885 ·
-
[Bug] PyArrowFileIO fails to propagate s3.ssl.ca-cert to pyarrow.fs.S3FileSystem tls_ca_file_path Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
apache/iceberg-python#3866 · 1 comment ·
All issues in apache/iceberg-python
Similar issues
-
essnmx good first issue
Difficulty 1/5 Under an hour Newbie friendliness 95/100
-
[Feature] 奇物选择添加优先级 Open
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
syfoud/Simulated_Scepter#174 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Giskard-AI/giskard-oss#2840 · 1 comment ·
-
A claim comment carrying the issue number is silently declined while the workflow reports success Openarea: repo bug perceived difficulty: 2
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
yeti-platform/yeti#1380 ·