This is an automated email from the ASF dual-hosted git repository. github-merge-queue[bot] pushed a commit to branch gh-readonly-queue/main/pr-11547-b2e2c2d9c24a3bb9a8105bbf55fb03b337e917dd in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
commit 125d3ccea6f5f4a100868093e82b319640dc3906 Author: Jeffrey Vo <[email protected]> AuthorDate: Thu Oct 15 03:46:16 2026 +0000 chore: uncomment some miri ignores that were reliant on fstat (#11547) # Which issue does this PR close? <!-- It is not necessary to raise an issue, but it is encouraged if it is a non-trivial enhancement/bug. If this PR relates to an existing issue, but does not fully resolve it, please change the wording below from "Closes #NNN" to "Relates to #NNN" or "Part of #NNN" to avoid false closing an issue. --> None # Rationale for this change <!-- Why are you proposing this change? If this is already explained clearly in the issue then this section is not needed. Explaining clearly why changes are proposed helps reviewers understand your changes and offer better suggestions for fixes. Please try to explain the problem you are trying to solve in terms of the user-visible behavior, rather than the implementation. --> Some tests were ignored as part of https://github.com/apache/arrow-rs/pull/10803 because Miri couldn't execute them; recently support should be added by https://github.com/rust-lang/miri/issues/5291 so lets enable them. # What changes are included in this PR? <!-- There is no need to duplicate the description in the issue here but it is sometimes worth providing a summary of the individual changes in this PR. --> Uncomment some tests under Miri # Are these changes tested? <!-- We typically require tests for all PRs in order to: 1. Prevent the code from being accidentally broken by subsequent changes 2. Serve as another way to document the expected behavior of the code If tests are not included in your PR, please explain why (for example, are they covered by existing tests, if so identify these tests)? If this PR claims a performance improvement, please include evidence such as benchmark results. DO NOT simply paste a list of commands ran to verify the code; this is what our CI is for and it pollutes the PR. ONLY explain if testing was included with this PR, or why it wasn't. --> Yes. See the Miri checks on this commit which triggered a Miri run: https://github.com/apache/arrow-rs/pull/11547/commits/489b0264e4ad0c023218ada9df3a8bdd2f88844b And an example is here: ``` PASS [ 32.093s] (437/444) parquet::arrow_reader io::sync_reader::test_read_single_row_filter_all PASS [ 11.417s] (438/444) parquet::arrow_reader statistics::test_max_and_min_value_truncated PASS [ 8.481s] (439/444) parquet::arrow_reader statistics::test_time64_nanosecond_diff_rg_sizes PASS [ 8.028s] (440/444) parquet::arrow_writer roundtrip::test_arbitrary_decimal ``` - `test_max_and_min_value_truncated` was previously ignored, now it executes successfully - https://github.com/apache/arrow-rs/actions/runs/38521027642/job/115727065576?pr=11547 # Are there any significant user-facing changes? <!-- Significant user-facing changes include: - Breaking public API change - Significant change to existing functionality (e.g. function returns something different) These need to be explicitly called out to ensure we have proper documentation if required and to ensure we follow proper semantic versioning. DO NOT restate the changes of this PR; if a bug was fixed and already explained above, we don't need this to be restated as a user-facing change. --> No --------- Co-authored-by: Ed Seidl <[email protected]> --- parquet/tests/arrow_reader/statistics.rs | 45 -------------------------------- 1 file changed, 45 deletions(-) diff --git a/parquet/tests/arrow_reader/statistics.rs b/parquet/tests/arrow_reader/statistics.rs index c80b6378b9..3363678095 100644 --- a/parquet/tests/arrow_reader/statistics.rs +++ b/parquet/tests/arrow_reader/statistics.rs @@ -374,7 +374,6 @@ impl Test<'_> { // Remaining cases // f64::NAN -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_max_and_min_value_truncated() { let reader = TestReader { @@ -418,7 +417,6 @@ async fn test_max_and_min_value_truncated() { .run() } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_one_row_group_without_null() { let reader = Int64Case { @@ -449,7 +447,6 @@ async fn test_one_row_group_without_null() { .run() } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_one_row_group_with_null_and_negative() { let reader = Int64Case { @@ -480,7 +477,6 @@ async fn test_one_row_group_with_null_and_negative() { .run() } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_two_row_group_with_null() { let reader = Int64Case { @@ -511,7 +507,6 @@ async fn test_two_row_group_with_null() { .run() } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_two_row_groups_with_all_nulls_in_one() { let reader = Int64Case { @@ -541,7 +536,6 @@ async fn test_two_row_groups_with_all_nulls_in_one() { .run() } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_multiple_data_pages_nulls_and_negatives() { let reader = Int64Case { @@ -575,7 +569,6 @@ async fn test_multiple_data_pages_nulls_and_negatives() { .run() } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_data_page_stats_with_all_null_page() { for data_type in &[ @@ -650,7 +643,6 @@ async fn test_data_page_stats_with_all_null_page() { // . Different row group sizes // Four different integer types -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_int_64() { // This creates a parquet files of 4 columns named "i8", "i16", "i32", "i64" @@ -681,7 +673,6 @@ async fn test_int_64() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_int_32() { // This creates a parquet files of 4 columns named "i8", "i16", "i32", "i64" @@ -711,7 +702,6 @@ async fn test_int_32() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_int_16() { // This creates a parquet files of 4 columns named "i8", "i16", "i32", "i64" @@ -741,7 +731,6 @@ async fn test_int_16() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_int_8() { // This creates a parquet files of 4 columns named "i8", "i16", "i32", "i64" @@ -771,7 +760,6 @@ async fn test_int_8() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_float_16() { // This creates a parquet files of 1 column named f @@ -811,7 +799,6 @@ async fn test_float_16() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_float_32() { // This creates a parquet files of 1 column named f @@ -841,7 +828,6 @@ async fn test_float_32() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_float_64() { // This creates a parquet files of 1 column named f @@ -872,7 +858,6 @@ async fn test_float_64() { } // timestamp -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_timestamp() { // This creates a parquet files of 9 columns named "nanos", "nanos_timezoned", "micros", "micros_timezoned", "millis", "millis_timezoned", "seconds", "seconds_timezoned", "names" @@ -1132,7 +1117,6 @@ async fn test_timestamp() { } // timestamp with different row group sizes -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_timestamp_diff_rg_sizes() { // This creates a parquet files of 9 columns named "nanos", "nanos_timezoned", "micros", "micros_timezoned", "millis", "millis_timezoned", "seconds", "seconds_timezoned", "names" @@ -1371,7 +1355,6 @@ async fn test_timestamp_diff_rg_sizes() { } // date with different row group sizes -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_dates_32_diff_rg_sizes() { // This creates a parquet files of 3 columns named "date32", "date64", "names" @@ -1412,7 +1395,6 @@ async fn test_dates_32_diff_rg_sizes() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_time32_second_diff_rg_sizes() { let reader = TestReader { @@ -1439,7 +1421,6 @@ async fn test_time32_second_diff_rg_sizes() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_time32_millisecond_diff_rg_sizes() { let reader = TestReader { @@ -1470,7 +1451,6 @@ async fn test_time32_millisecond_diff_rg_sizes() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_time64_microsecond_diff_rg_sizes() { let reader = TestReader { @@ -1507,7 +1487,6 @@ async fn test_time64_microsecond_diff_rg_sizes() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_time64_nanosecond_diff_rg_sizes() { let reader = TestReader { @@ -1544,7 +1523,6 @@ async fn test_time64_nanosecond_diff_rg_sizes() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_dates_64_diff_rg_sizes() { // The file is created by 4 record batches (each has a null row), each has 5 rows but then will be split into 2 row groups with size 13, 7 @@ -1575,7 +1553,6 @@ async fn test_dates_64_diff_rg_sizes() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_uint() { // This creates a parquet files of 4 columns named "u8", "u16", "u32", "u64" @@ -1649,7 +1626,6 @@ async fn test_uint() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_int32_range() { // This creates a parquet file of 1 column "i" @@ -1676,7 +1652,6 @@ async fn test_int32_range() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_uint32_range() { // This creates a parquet file of 1 column "u" @@ -1703,7 +1678,6 @@ async fn test_uint32_range() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_numeric_limits_unsigned() { // file has 7 rows, 2 row groups: one with 5 rows, one with 2 rows. @@ -1771,7 +1745,6 @@ async fn test_numeric_limits_unsigned() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_numeric_limits_signed() { // file has 7 rows, 2 row groups: one with 5 rows, one with 2 rows. @@ -1839,7 +1812,6 @@ async fn test_numeric_limits_signed() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_numeric_limits_float() { // file has 7 rows, 2 row groups: one with 5 rows, one with 2 rows. @@ -1907,7 +1879,6 @@ async fn test_numeric_limits_float() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_float64() { // This creates a parquet file of 1 column "f" @@ -1935,7 +1906,6 @@ async fn test_float64() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_float16() { // This creates a parquet file of 1 column "f" @@ -1973,7 +1943,6 @@ async fn test_float16() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_decimal32() { // This creates a parquet file of 1 column "decimal32_col" with decimal data type and precision 9, scale 2 @@ -2007,7 +1976,6 @@ async fn test_decimal32() { } .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_decimal64() { // This creates a parquet file of 1 column "decimal64_col" with decimal data type and precision 9, scale 2 @@ -2041,7 +2009,6 @@ async fn test_decimal64() { } .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_decimal128() { // This creates a parquet file of 1 column "decimal128_col" with decimal data type and precision 9, scale 2 @@ -2075,7 +2042,6 @@ async fn test_decimal128() { } .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_decimal_256() { // This creates a parquet file of 1 column "decimal256_col" with decimal data type and precision 9, scale 2 @@ -2109,7 +2075,6 @@ async fn test_decimal_256() { } .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_dictionary() { let reader = TestReader { @@ -2162,7 +2127,6 @@ async fn test_dictionary() { .run(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_byte() { // This creates a parquet file of 5 columns @@ -2294,7 +2258,6 @@ async fn test_byte() { } // PeriodsInColumnNames -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_period_in_column_names() { // This creates a parquet file of 2 columns "name" and "service.name" @@ -2346,7 +2309,6 @@ async fn test_period_in_column_names() { } // Boolean -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_boolean() { // This creates a parquet files of 1 column named "bool" @@ -2403,7 +2365,6 @@ async fn test_struct() { } // UTF8 -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_utf8() { let reader = TestReader { @@ -2445,7 +2406,6 @@ async fn test_utf8() { } // UTF8View -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_utf8_view() { let reader = TestReader { @@ -2476,7 +2436,6 @@ async fn test_utf8_view() { } // BinaryView -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_binary_view() { let reader = TestReader { @@ -2508,7 +2467,6 @@ async fn test_binary_view() { ////// Files with missing statistics /////// -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_missing_statistics() { let reader = Int64Case { @@ -2596,7 +2554,6 @@ fn bool_arrow_and_parquet_schema() -> (SchemaRef, SchemaDescPtr) { /////// NEGATIVE TESTS /////// // column not found -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_column_not_found() { let reader = TestReader { @@ -2620,7 +2577,6 @@ async fn test_column_not_found() { .run_col_not_found(); } -#[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[tokio::test] async fn test_column_non_existent() { // Create a schema with an additional column @@ -2941,7 +2897,6 @@ mod test { } } - #[cfg_attr(miri, ignore)] // tempfile::reopen triggers an unsupported Miri/rustix fstat path #[test] fn struct_leaf_statistics_from_column_index() { let leaf_field = Arc::new(Field::new("leaf", DataType::Int32, true));
