Hi, When finalizing my Arrow2ORC C++ pull request I found a weird Rust-related and IPC-related error in the Linter that didn’t happen just 2 days ago despite my code having nothing to do with either Rust or IPC. Here is the check: https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680> Here is the part of the output I think is relevant:
source_dir /arrow/cpp/src --quiet 1413 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1413>[1/1] cd /tmp/arrow-lint-_9i678pu/cpp-build && /usr/local/bin/python /arrow/cpp/build-support/lint_cpp_cli.py /arrow/cpp/src 1414 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1414>INFO:archery:Running Python formatter (autopep8) 1415 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1415>INFO:archery:Running Python linter (flake8) 1416 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1416>INFO:archery:Running cmake-format linters 1417 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1417>WARNING:archery:run-cmake-format modifies files, regardless of --fix 1418 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1418>INFO:archery:Running apache-rat linter 1419 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1419>INFO:archery:Running R linter 1420 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1420>INFO:archery:Running Rust linter 1421 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1421>Diff in /arrow/rust/arrow/src/ipc/reader.rs at line 160: 1422 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1422> let null_count = struct_node.null_count() as usize; 1423 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1423> let struct_array = if null_count > 0 { 1424 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1424> // create struct array from fields, arrays and null data 1425 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1425>- StructArray::from(( 1426 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1426>- struct_arrays, 1427 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1427>- null_buffer, 1428 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1428>- )) 1429 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1429>+ StructArray::from((struct_arrays, null_buffer)) 1430 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1430> } else { 1431 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1431> StructArray::from(struct_arrays) 1432 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1432> }; 1433 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1433>INFO:archery:Running Docker linter 1434 <https://github.com/apache/arrow/pull/8648/checks?check_run_id=1625423680#step:7:1434>Error: `docker-compose --file /home/runner/work/arrow/arrow/docker-compose.yml run --rm ubuntu-lint` exited with a non-zero exit code 1, see the process log above. There is no C++ or reasonbly C++-related error. Does anyone know why the error happen? I also would like to ask about table equality when some columns are float/double. In this case do we have some built-in epsilon so that 0.6 == 0.6 work? Right now I have separate tests for these types that looks like the following and they are pretty clumsy: EXPECT_TRUE(outputTable->schema()->Equals(*(table->schema()))); EXPECT_TRUE(outputTable->column(0) ->chunk(0) ->Slice(0, numRows / 2) ->ApproxEquals(table->column(0)->chunk(1))); EXPECT_TRUE(outputTable->column(0) ->chunk(0) ->Slice(numRows / 2, numRows / 2) ->ApproxEquals(table->column(0)->chunk(3))); EXPECT_TRUE(outputTable->column(1) ->chunk(0) ->Slice(0, numRows / 2) ->ApproxEquals(table->column(1)->chunk(1))); EXPECT_TRUE(outputTable->column(1) ->chunk(0) ->Slice(numRows / 2, numRows / 2) ->ApproxEquals(table->column(1)->chunk(3))); Thanks, Ying