Visitor and evaluator edge cases can over-prune files or mishandle nulls
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- python
- Bereich
- data, testing-qa
Rechercherichtung
Beginne mit _StrictMetricsEvaluator.visit_not_equal, visit_not_in und eval und untersuche anschließend die Vergleichsmethoden und visit_not_nan auf ResidualVisitor. Führe die bestehenden Tests für stats, nullable partitions und das Verhalten von NotNaN aus; als erledigt gilt dies, wenn die Randfälle eine konsistente Semantik ohne unsicheres Pruning oder Fehler bei der Nullbehandlung aufweisen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- Python
- Sterne
- 1.1k
- Forks
- 589
- Ø Merge
- 1 T. 20 Std.
- Gemergte PRs (30 T.)
- 68
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus apache/iceberg-python
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
apache/iceberg-python#4010 · 1 Reaktion ·
-
kind:bug
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
apache/iceberg-python#4006 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
apache/iceberg-python#3996 ·
-
Deletion vector bitmap count is read from the blob and used as a loop bound without validation Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
apache/iceberg-python#3979 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
apache/iceberg-python#3885 ·
Alle Issues in apache/iceberg-python
Ähnliche Issues
-
area: harness bug status: needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Human-Agent-Society/reef#625 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 80/100
learningequality/kolibri#15351 · 2 Kommentare ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Name consistency Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
eellak/triplestore#65 · 1 Kommentar ·