stevenzwu commented on code in PR #18585:
URL: https://github.com/apache/iceberg/pull/18585#discussion_r4343729259
##########
format/spec.md:
##########
@@ -1008,15 +1007,32 @@ For example, stats for an optional `geometry` field
named `location` with field-
10_816: optional double z;
10_817: optional double m;
}
- 10_804: optional long value_count;
- 10_805: optional long null_value_count;
- 10_807: optional long total_bytes;
- // tight_bounds and nan_value_count are omitted for geo types
+ 10_803: optional long value_count;
+ 10_804: optional long null_value_count;
+ 10_806: optional long total_bytes;
+ // nan_value_count is omitted for geo types
}
```
For `variant`, both bounds are unshredded `variant` that store variant field
bounds by normalized JSON paths as field names. See [Bounds for
Variant](#bounds-for-variant) for details on producing these bounds.
+A `variant` value is null only when the variant itself is null; a non-null
variant that encodes a variant null is not counted as a null value.
+
+###### Stats Tightness
+
+Statistics are _tight_ when the bounds, `value_count`, `null_value_count`, and
`nan_value_count` are exact for the live rows of a file:
+
+* `lower_bound` and `upper_bound` for fixed-length types are equal to the
minimum and maximum of the live values.
+* `value_count`, `null_value_count`, and `nan_value_count` are the counts
across the live rows.
+
+Regardless of `tight_stats`, bounds for `string` and `binary` are never tight
because they may be truncated when written, and bounds for `geometry` and
`geography` are never tight because they are a bounding box rather than exact
minimum and maximum values.
+
+For `variant`, `lower_bound` and `upper_bound` hold one bound per normalized
JSON path. A path may be omitted, which means that path has no bound. Whether a
present bound is tight follows the same rules as above for that path's value
type.
+
+Statistics other than the bounds, `value_count`, `null_value_count`, and
`nan_value_count` are not part of tightness.
+
+When `tight_stats` is absent, readers must assume stats are not tight;
`tight_stats` is the only indicator of tightness. Stats may be recomputed to
restore tightness without rewriting the data file.
Review Comment:
> ; `tight_stats` is the only indicator of tightness
this sentence is probably not needed
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]