This is an automated email from the ASF dual-hosted git repository.
paleolimbot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-nanoarrow.git
The following commit(s) were added to refs/heads/main by this push:
new 931eafc9 feat: Add support for datetime types in integration tester
(#356)
931eafc9 is described below
commit 931eafc995267817b25ca220b4022497d5d6a677
Author: Dewey Dunnington <[email protected]>
AuthorDate: Fri Jan 12 16:17:37 2024 +0000
feat: Add support for datetime types in integration tester (#356)
This PR adds support for date, time, timestamp, duration, and interval
to the integration tester. This also seems to pass the archery tests for
C++ (with a checkout of https://github.com/apache/arrow/pull/39302 ):
```bash
archery integration --with-cpp=true --with-nanoarrow=true --run-c-data
```
<details>
```
##########################################################
C Data Interface: C++ exporting, C++ importing
##########################################################
======================================================================
Testing C ArrowSchema from file 'primitive_no_batches'
======================================================================
======================================================================
Testing C ArrowSchema from file 'primitive'
======================================================================
======================================================================
Testing C ArrowSchema from file 'primitive_zerolength'
======================================================================
======================================================================
Testing C ArrowSchema from file 'primitive_large_offsets'
======================================================================
======================================================================
Testing C ArrowSchema from file 'null'
======================================================================
======================================================================
Testing C ArrowSchema from file 'null_trivial'
======================================================================
======================================================================
Testing C ArrowSchema from file 'decimal'
======================================================================
======================================================================
Testing C ArrowSchema from file 'decimal256'
======================================================================
======================================================================
Testing C ArrowSchema from file 'datetime'
======================================================================
======================================================================
Testing C ArrowSchema from file 'duration'
======================================================================
======================================================================
Testing C ArrowSchema from file 'interval'
======================================================================
======================================================================
Testing C ArrowSchema from file 'interval_mdn'
======================================================================
======================================================================
Testing C ArrowSchema from file 'map'
======================================================================
======================================================================
Testing C ArrowSchema from file 'map_non_canonical'
-- Skipping test because producer C++ does not support C ArrowSchema
======================================================================
======================================================================
Testing C ArrowSchema from file 'nested'
======================================================================
======================================================================
Testing C ArrowSchema from file 'recursive_nested'
======================================================================
======================================================================
Testing C ArrowSchema from file 'nested_large_offsets'
======================================================================
======================================================================
Testing C ArrowSchema from file 'union'
======================================================================
======================================================================
Testing C ArrowSchema from file 'custom_metadata'
======================================================================
======================================================================
Testing C ArrowSchema from file 'duplicate_fieldnames'
======================================================================
======================================================================
Testing C ArrowSchema from file 'dictionary'
======================================================================
======================================================================
Testing C ArrowSchema from file 'dictionary_unsigned'
======================================================================
======================================================================
Testing C ArrowSchema from file 'nested_dictionary'
======================================================================
======================================================================
Testing C ArrowSchema from file 'run_end_encoded'
======================================================================
======================================================================
Testing C ArrowSchema from file 'binary_view'
======================================================================
======================================================================
Testing C ArrowSchema from file 'list_view'
======================================================================
======================================================================
Testing C ArrowSchema from file 'extension'
-- Skipping test because producer C++ does not support C ArrowSchema
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive_no_batches'
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive_zerolength'
... with record batch #0
... with record batch #1
... with record batch #2
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive_large_offsets'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'null'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'null_trivial'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'decimal'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'decimal256'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'datetime'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'duration'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'interval'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'interval_mdn'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'map'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'map_non_canonical'
... with record batch #0
======================================================================
======================================================================
Testing C ArrowArray from file 'nested'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'recursive_nested'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'nested_large_offsets'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'union'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'custom_metadata'
... with record batch #0
======================================================================
======================================================================
Testing C ArrowArray from file 'duplicate_fieldnames'
... with record batch #0
======================================================================
======================================================================
Testing C ArrowArray from file 'dictionary'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'dictionary_unsigned'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'nested_dictionary'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'run_end_encoded'
... with record batch #0
... with record batch #1
... with record batch #2
======================================================================
======================================================================
Testing C ArrowArray from file 'binary_view'
... with record batch #0
... with record batch #1
... with record batch #2
======================================================================
======================================================================
Testing C ArrowArray from file 'list_view'
... with record batch #0
... with record batch #1
... with record batch #2
======================================================================
======================================================================
Testing C ArrowArray from file 'extension'
-- Skipping test because producer C++ does not support C ArrowArray
======================================================================
##########################################################
C Data Interface: C++ exporting, nanoarrow importing
##########################################################
======================================================================
Testing C ArrowSchema from file 'primitive_no_batches'
======================================================================
======================================================================
Testing C ArrowSchema from file 'primitive'
======================================================================
======================================================================
Testing C ArrowSchema from file 'primitive_zerolength'
======================================================================
======================================================================
Testing C ArrowSchema from file 'primitive_large_offsets'
======================================================================
======================================================================
Testing C ArrowSchema from file 'null'
======================================================================
======================================================================
Testing C ArrowSchema from file 'null_trivial'
======================================================================
======================================================================
Testing C ArrowSchema from file 'decimal'
======================================================================
======================================================================
Testing C ArrowSchema from file 'decimal256'
======================================================================
======================================================================
Testing C ArrowSchema from file 'datetime'
======================================================================
======================================================================
Testing C ArrowSchema from file 'duration'
======================================================================
======================================================================
Testing C ArrowSchema from file 'interval'
======================================================================
======================================================================
Testing C ArrowSchema from file 'interval_mdn'
======================================================================
======================================================================
Testing C ArrowSchema from file 'map'
======================================================================
======================================================================
Testing C ArrowSchema from file 'map_non_canonical'
-- Skipping test because producer C++ does not support C ArrowSchema
======================================================================
======================================================================
Testing C ArrowSchema from file 'nested'
======================================================================
======================================================================
Testing C ArrowSchema from file 'recursive_nested'
======================================================================
======================================================================
Testing C ArrowSchema from file 'nested_large_offsets'
======================================================================
======================================================================
Testing C ArrowSchema from file 'union'
======================================================================
======================================================================
Testing C ArrowSchema from file 'custom_metadata'
======================================================================
======================================================================
Testing C ArrowSchema from file 'duplicate_fieldnames'
======================================================================
======================================================================
Testing C ArrowSchema from file 'dictionary'
======================================================================
======================================================================
Testing C ArrowSchema from file 'dictionary_unsigned'
======================================================================
======================================================================
Testing C ArrowSchema from file 'nested_dictionary'
======================================================================
======================================================================
Testing C ArrowSchema from file 'run_end_encoded'
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 473, in _run_c_schema_test_case
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 456, in do_run
importer.import_schema_and_compare_to_json(json_path, c_schema_ptr)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 138, in import_schema_and_compare_to_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'runendencoded'
======================================================================
======================================================================
Testing C ArrowSchema from file 'binary_view'
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 473, in _run_c_schema_test_case
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 456, in do_run
importer.import_schema_and_compare_to_json(json_path, c_schema_ptr)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 138, in import_schema_and_compare_to_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'binaryview'
======================================================================
======================================================================
Testing C ArrowSchema from file 'list_view'
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 473, in _run_c_schema_test_case
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 456, in do_run
importer.import_schema_and_compare_to_json(json_path, c_schema_ptr)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 138, in import_schema_and_compare_to_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'listview'
======================================================================
======================================================================
Testing C ArrowSchema from file 'extension'
-- Skipping test because producer C++ does not support C ArrowSchema
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive_no_batches'
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive_zerolength'
... with record batch #0
... with record batch #1
... with record batch #2
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive_large_offsets'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'null'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'null_trivial'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'decimal'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 503, in do_run
importer.import_batch_and_compare_to_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 144, in import_batch_and_compare_to_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: -> Column 'f0'
storage type decimal128 DATA buffer not supported
======================================================================
======================================================================
Testing C ArrowArray from file 'decimal256'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 503, in do_run
importer.import_batch_and_compare_to_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 144, in import_batch_and_compare_to_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: -> Column 'f0'
storage type decimal256 DATA buffer not supported
======================================================================
======================================================================
Testing C ArrowArray from file 'datetime'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'duration'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'interval'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'interval_mdn'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'map'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'map_non_canonical'
... with record batch #0
======================================================================
======================================================================
Testing C ArrowArray from file 'nested'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'recursive_nested'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'nested_large_offsets'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'union'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'custom_metadata'
... with record batch #0
======================================================================
======================================================================
Testing C ArrowArray from file 'duplicate_fieldnames'
... with record batch #0
======================================================================
======================================================================
Testing C ArrowArray from file 'dictionary'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'dictionary_unsigned'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'nested_dictionary'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'run_end_encoded'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 503, in do_run
importer.import_batch_and_compare_to_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 144, in import_batch_and_compare_to_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'runendencoded'
======================================================================
======================================================================
Testing C ArrowArray from file 'binary_view'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 503, in do_run
importer.import_batch_and_compare_to_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 144, in import_batch_and_compare_to_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'binaryview'
======================================================================
======================================================================
Testing C ArrowArray from file 'list_view'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 503, in do_run
importer.import_batch_and_compare_to_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 144, in import_batch_and_compare_to_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'listview'
======================================================================
======================================================================
Testing C ArrowArray from file 'extension'
-- Skipping test because producer C++ does not support C ArrowArray
======================================================================
##########################################################
C Data Interface: nanoarrow exporting, C++ importing
##########################################################
======================================================================
Testing C ArrowSchema from file 'primitive_no_batches'
======================================================================
======================================================================
Testing C ArrowSchema from file 'primitive'
======================================================================
======================================================================
Testing C ArrowSchema from file 'primitive_zerolength'
======================================================================
======================================================================
Testing C ArrowSchema from file 'primitive_large_offsets'
======================================================================
======================================================================
Testing C ArrowSchema from file 'null'
======================================================================
======================================================================
Testing C ArrowSchema from file 'null_trivial'
======================================================================
======================================================================
Testing C ArrowSchema from file 'decimal'
======================================================================
======================================================================
Testing C ArrowSchema from file 'decimal256'
======================================================================
======================================================================
Testing C ArrowSchema from file 'datetime'
======================================================================
======================================================================
Testing C ArrowSchema from file 'duration'
======================================================================
======================================================================
Testing C ArrowSchema from file 'interval'
======================================================================
======================================================================
Testing C ArrowSchema from file 'interval_mdn'
======================================================================
======================================================================
Testing C ArrowSchema from file 'map'
======================================================================
======================================================================
Testing C ArrowSchema from file 'map_non_canonical'
-- Skipping test because consumer C++ does not support C ArrowSchema
======================================================================
======================================================================
Testing C ArrowSchema from file 'nested'
======================================================================
======================================================================
Testing C ArrowSchema from file 'recursive_nested'
======================================================================
======================================================================
Testing C ArrowSchema from file 'nested_large_offsets'
======================================================================
======================================================================
Testing C ArrowSchema from file 'union'
======================================================================
======================================================================
Testing C ArrowSchema from file 'custom_metadata'
======================================================================
======================================================================
Testing C ArrowSchema from file 'duplicate_fieldnames'
======================================================================
======================================================================
Testing C ArrowSchema from file 'dictionary'
======================================================================
======================================================================
Testing C ArrowSchema from file 'dictionary_unsigned'
======================================================================
======================================================================
Testing C ArrowSchema from file 'nested_dictionary'
======================================================================
======================================================================
Testing C ArrowSchema from file 'run_end_encoded'
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 473, in _run_c_schema_test_case
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 455, in do_run
exporter.export_schema_from_json(json_path, c_schema_ptr)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 117, in export_schema_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'runendencoded'
======================================================================
======================================================================
Testing C ArrowSchema from file 'binary_view'
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 473, in _run_c_schema_test_case
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 455, in do_run
exporter.export_schema_from_json(json_path, c_schema_ptr)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 117, in export_schema_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'binaryview'
======================================================================
======================================================================
Testing C ArrowSchema from file 'list_view'
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 473, in _run_c_schema_test_case
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 455, in do_run
exporter.export_schema_from_json(json_path, c_schema_ptr)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 117, in export_schema_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'listview'
======================================================================
======================================================================
Testing C ArrowSchema from file 'extension'
-- Skipping test because consumer C++ does not support C ArrowSchema
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive_no_batches'
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive_zerolength'
... with record batch #0
... with record batch #1
... with record batch #2
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive_large_offsets'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'null'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'null_trivial'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'decimal'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 500, in do_run
exporter.export_batch_from_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 123, in export_batch_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: -> Column 'f0'
storage type decimal128 DATA buffer not supported
======================================================================
======================================================================
Testing C ArrowArray from file 'decimal256'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 500, in do_run
exporter.export_batch_from_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 123, in export_batch_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: -> Column 'f0'
storage type decimal256 DATA buffer not supported
======================================================================
======================================================================
Testing C ArrowArray from file 'datetime'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'duration'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'interval'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'interval_mdn'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'map'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'map_non_canonical'
... with record batch #0
======================================================================
======================================================================
Testing C ArrowArray from file 'nested'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'recursive_nested'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'nested_large_offsets'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'union'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'custom_metadata'
... with record batch #0
======================================================================
======================================================================
Testing C ArrowArray from file 'duplicate_fieldnames'
... with record batch #0
======================================================================
======================================================================
Testing C ArrowArray from file 'dictionary'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'dictionary_unsigned'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'nested_dictionary'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'run_end_encoded'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 500, in do_run
exporter.export_batch_from_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 123, in export_batch_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'runendencoded'
======================================================================
======================================================================
Testing C ArrowArray from file 'binary_view'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 500, in do_run
exporter.export_batch_from_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 123, in export_batch_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'binaryview'
======================================================================
======================================================================
Testing C ArrowArray from file 'list_view'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 500, in do_run
exporter.export_batch_from_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 123, in export_batch_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'listview'
======================================================================
======================================================================
Testing C ArrowArray from file 'extension'
-- Skipping test because consumer C++ does not support C ArrowArray
======================================================================
##########################################################
C Data Interface: nanoarrow exporting, nanoarrow importing
##########################################################
======================================================================
Testing C ArrowSchema from file 'primitive_no_batches'
======================================================================
======================================================================
Testing C ArrowSchema from file 'primitive'
======================================================================
======================================================================
Testing C ArrowSchema from file 'primitive_zerolength'
======================================================================
======================================================================
Testing C ArrowSchema from file 'primitive_large_offsets'
======================================================================
======================================================================
Testing C ArrowSchema from file 'null'
======================================================================
======================================================================
Testing C ArrowSchema from file 'null_trivial'
======================================================================
======================================================================
Testing C ArrowSchema from file 'decimal'
======================================================================
======================================================================
Testing C ArrowSchema from file 'decimal256'
======================================================================
======================================================================
Testing C ArrowSchema from file 'datetime'
======================================================================
======================================================================
Testing C ArrowSchema from file 'duration'
======================================================================
======================================================================
Testing C ArrowSchema from file 'interval'
======================================================================
======================================================================
Testing C ArrowSchema from file 'interval_mdn'
======================================================================
======================================================================
Testing C ArrowSchema from file 'map'
======================================================================
======================================================================
Testing C ArrowSchema from file 'map_non_canonical'
======================================================================
======================================================================
Testing C ArrowSchema from file 'nested'
======================================================================
======================================================================
Testing C ArrowSchema from file 'recursive_nested'
======================================================================
======================================================================
Testing C ArrowSchema from file 'nested_large_offsets'
======================================================================
======================================================================
Testing C ArrowSchema from file 'union'
======================================================================
======================================================================
Testing C ArrowSchema from file 'custom_metadata'
======================================================================
======================================================================
Testing C ArrowSchema from file 'duplicate_fieldnames'
======================================================================
======================================================================
Testing C ArrowSchema from file 'dictionary'
======================================================================
======================================================================
Testing C ArrowSchema from file 'dictionary_unsigned'
======================================================================
======================================================================
Testing C ArrowSchema from file 'nested_dictionary'
======================================================================
======================================================================
Testing C ArrowSchema from file 'run_end_encoded'
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 473, in _run_c_schema_test_case
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 455, in do_run
exporter.export_schema_from_json(json_path, c_schema_ptr)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 117, in export_schema_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'runendencoded'
======================================================================
======================================================================
Testing C ArrowSchema from file 'binary_view'
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 473, in _run_c_schema_test_case
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 455, in do_run
exporter.export_schema_from_json(json_path, c_schema_ptr)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 117, in export_schema_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'binaryview'
======================================================================
======================================================================
Testing C ArrowSchema from file 'list_view'
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 473, in _run_c_schema_test_case
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 455, in do_run
exporter.export_schema_from_json(json_path, c_schema_ptr)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 117, in export_schema_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'listview'
======================================================================
======================================================================
Testing C ArrowSchema from file 'extension'
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive_no_batches'
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive_zerolength'
... with record batch #0
... with record batch #1
... with record batch #2
======================================================================
======================================================================
Testing C ArrowArray from file 'primitive_large_offsets'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'null'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'null_trivial'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'decimal'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 500, in do_run
exporter.export_batch_from_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 123, in export_batch_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: -> Column 'f0'
storage type decimal128 DATA buffer not supported
======================================================================
======================================================================
Testing C ArrowArray from file 'decimal256'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 500, in do_run
exporter.export_batch_from_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 123, in export_batch_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: -> Column 'f0'
storage type decimal256 DATA buffer not supported
======================================================================
======================================================================
Testing C ArrowArray from file 'datetime'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'duration'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'interval'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'interval_mdn'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'map'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'map_non_canonical'
... with record batch #0
======================================================================
======================================================================
Testing C ArrowArray from file 'nested'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'recursive_nested'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'nested_large_offsets'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'union'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'custom_metadata'
... with record batch #0
======================================================================
======================================================================
Testing C ArrowArray from file 'duplicate_fieldnames'
... with record batch #0
======================================================================
======================================================================
Testing C ArrowArray from file 'dictionary'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'dictionary_unsigned'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'nested_dictionary'
... with record batch #0
... with record batch #1
======================================================================
======================================================================
Testing C ArrowArray from file 'run_end_encoded'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 500, in do_run
exporter.export_batch_from_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 123, in export_batch_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'runendencoded'
======================================================================
======================================================================
Testing C ArrowArray from file 'binary_view'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 500, in do_run
exporter.export_batch_from_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 123, in export_batch_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'binaryview'
======================================================================
======================================================================
Testing C ArrowArray from file 'list_view'
... with record batch #0
Traceback (most recent call last):
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 523, in _run_c_array_test_cases
do_run()
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/runner.py",
line 500, in do_run
exporter.export_batch_from_json(json_path,
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 123, in export_batch_from_json
self._check_nanoarrow_error(na_error)
File
"/Users/dewey/Desktop/rscratch/arrow/dev/archery/archery/integration/tester_nanoarrow.py",
line 109, in _check_nanoarrow_error
raise RuntimeError(f"nanoarrow C Data Integration call failed: {error}")
RuntimeError: nanoarrow C Data Integration call failed: Unsupported Type
name: 'listview'
======================================================================
======================================================================
Testing C ArrowArray from file 'extension'
... with record batch #0
... with record batch #1
======================================================================
################# FAILURES #################
FAILED TEST: run_end_encoded C++ producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'runendencoded'
FAILED TEST: binary_view C++ producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'binaryview'
FAILED TEST: list_view C++ producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'listview'
FAILED TEST: decimal C++ producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed: -> Column
'f0' storage type decimal128 DATA buffer not supported
FAILED TEST: decimal256 C++ producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed: -> Column
'f0' storage type decimal256 DATA buffer not supported
FAILED TEST: run_end_encoded C++ producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'runendencoded'
FAILED TEST: binary_view C++ producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'binaryview'
FAILED TEST: list_view C++ producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'listview'
FAILED TEST: run_end_encoded nanoarrow producing, C++ consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'runendencoded'
FAILED TEST: binary_view nanoarrow producing, C++ consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'binaryview'
FAILED TEST: list_view nanoarrow producing, C++ consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'listview'
FAILED TEST: decimal nanoarrow producing, C++ consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed: -> Column
'f0' storage type decimal128 DATA buffer not supported
FAILED TEST: decimal256 nanoarrow producing, C++ consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed: -> Column
'f0' storage type decimal256 DATA buffer not supported
FAILED TEST: run_end_encoded nanoarrow producing, C++ consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'runendencoded'
FAILED TEST: binary_view nanoarrow producing, C++ consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'binaryview'
FAILED TEST: list_view nanoarrow producing, C++ consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'listview'
FAILED TEST: run_end_encoded nanoarrow producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'runendencoded'
FAILED TEST: binary_view nanoarrow producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'binaryview'
FAILED TEST: list_view nanoarrow producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'listview'
FAILED TEST: decimal nanoarrow producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed: -> Column
'f0' storage type decimal128 DATA buffer not supported
FAILED TEST: decimal256 nanoarrow producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed: -> Column
'f0' storage type decimal256 DATA buffer not supported
FAILED TEST: run_end_encoded nanoarrow producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'runendencoded'
FAILED TEST: binary_view nanoarrow producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'binaryview'
FAILED TEST: list_view nanoarrow producing, nanoarrow consuming
<class 'RuntimeError'>: nanoarrow C Data Integration call failed:
Unsupported Type name: 'listview'
24 failures, 9 skips
```
</details>
---
src/nanoarrow/array_inline.h | 2 +
src/nanoarrow/nanoarrow_testing.hpp | 308 +++++++++++++++++++++++++++++++-
src/nanoarrow/nanoarrow_testing_test.cc | 69 +++++++
3 files changed, 378 insertions(+), 1 deletion(-)
diff --git a/src/nanoarrow/array_inline.h b/src/nanoarrow/array_inline.h
index 10cfbbe0..aaf3e253 100644
--- a/src/nanoarrow/array_inline.h
+++ b/src/nanoarrow/array_inline.h
@@ -775,6 +775,7 @@ static inline int64_t ArrowArrayViewGetIntUnsafe(const
struct ArrowArrayView* ar
return data_view->data.as_int64[i];
case NANOARROW_TYPE_UINT64:
return data_view->data.as_uint64[i];
+ case NANOARROW_TYPE_INTERVAL_MONTHS:
case NANOARROW_TYPE_INT32:
return data_view->data.as_int32[i];
case NANOARROW_TYPE_UINT32:
@@ -807,6 +808,7 @@ static inline uint64_t ArrowArrayViewGetUIntUnsafe(
return data_view->data.as_int64[i];
case NANOARROW_TYPE_UINT64:
return data_view->data.as_uint64[i];
+ case NANOARROW_TYPE_INTERVAL_MONTHS:
case NANOARROW_TYPE_INT32:
return data_view->data.as_int32[i];
case NANOARROW_TYPE_UINT32:
diff --git a/src/nanoarrow/nanoarrow_testing.hpp
b/src/nanoarrow/nanoarrow_testing.hpp
index 951c215b..638e759c 100644
--- a/src/nanoarrow/nanoarrow_testing.hpp
+++ b/src/nanoarrow/nanoarrow_testing.hpp
@@ -573,6 +573,43 @@ class TestingJSONWriter {
<< R"(, "precision": )" << field->decimal_precision << R"(,
"scale": )"
<< field->decimal_scale;
break;
+ case NANOARROW_TYPE_DURATION:
+ out << R"("name": "duration")";
+ NANOARROW_RETURN_NOT_OK(WriteTimeUnit(out, field));
+ break;
+ case NANOARROW_TYPE_DATE32:
+ out << R"("name": "date", "unit": "DAY")";
+ break;
+ case NANOARROW_TYPE_DATE64:
+ out << R"("name": "date", "unit": "MILLISECOND")";
+ break;
+ case NANOARROW_TYPE_TIME32:
+ out << R"("name": "time")";
+ NANOARROW_RETURN_NOT_OK(WriteTimeUnit(out, field));
+ out << R"(, "bitWidth": 32)";
+ break;
+ case NANOARROW_TYPE_TIME64:
+ out << R"("name": "time")";
+ NANOARROW_RETURN_NOT_OK(WriteTimeUnit(out, field));
+ out << R"(, "bitWidth": 64)";
+ break;
+ case NANOARROW_TYPE_TIMESTAMP:
+ out << R"("name": "timestamp")";
+ NANOARROW_RETURN_NOT_OK(WriteTimeUnit(out, field));
+ if (strlen(field->timezone) > 0) {
+ out << R"(, "timezone": )";
+ WriteString(out, ArrowCharView(field->timezone));
+ }
+ break;
+ case NANOARROW_TYPE_INTERVAL_MONTHS:
+ out << R"("name": "interval", "unit": "YEAR_MONTH")";
+ break;
+ case NANOARROW_TYPE_INTERVAL_DAY_TIME:
+ out << R"("name": "interval", "unit": "DAY_TIME")";
+ break;
+ case NANOARROW_TYPE_INTERVAL_MONTH_DAY_NANO:
+ out << R"("name": "interval", "unit": "MONTH_DAY_NANO")";
+ break;
case NANOARROW_TYPE_STRUCT:
out << R"("name": "struct")";
break;
@@ -612,6 +649,25 @@ class TestingJSONWriter {
return NANOARROW_OK;
}
+ ArrowErrorCode WriteTimeUnit(std::ostream& out, const ArrowSchemaView*
field) {
+ switch (field->time_unit) {
+ case NANOARROW_TIME_UNIT_NANO:
+ out << R"(, "unit": "NANOSECOND")";
+ return NANOARROW_OK;
+ case NANOARROW_TIME_UNIT_MICRO:
+ out << R"(, "unit": "MICROSECOND")";
+ return NANOARROW_OK;
+ case NANOARROW_TIME_UNIT_MILLI:
+ out << R"(, "unit": "MILLISECOND")";
+ return NANOARROW_OK;
+ case NANOARROW_TIME_UNIT_SECOND:
+ out << R"(, "unit": "SECOND")";
+ return NANOARROW_OK;
+ default:
+ return EINVAL;
+ }
+ }
+
ArrowErrorCode WriteFieldDictionary(std::ostream& out, int32_t dictionary_id,
bool is_ordered,
const ArrowSchemaView* indices_field) {
@@ -713,6 +769,7 @@ class TestingJSONWriter {
case NANOARROW_TYPE_UINT16:
case NANOARROW_TYPE_INT32:
case NANOARROW_TYPE_UINT32:
+ case NANOARROW_TYPE_INTERVAL_MONTHS:
// Regular JSON integers (i.e., 123456)
WriteIntMaybeNull(out, value, 0);
for (int64_t i = 1; i < value->length; i++) {
@@ -771,6 +828,28 @@ class TestingJSONWriter {
break;
}
+ case NANOARROW_TYPE_INTERVAL_DAY_TIME: {
+ ArrowInterval interval;
+ ArrowIntervalInit(&interval, value->storage_type);
+ WriteIntervalDayTimeMaybeNull(out, value, 0, &interval);
+ for (int64_t i = 1; i < value->length; i++) {
+ out << ", ";
+ WriteIntervalDayTimeMaybeNull(out, value, i, &interval);
+ }
+ break;
+ }
+
+ case NANOARROW_TYPE_INTERVAL_MONTH_DAY_NANO: {
+ ArrowInterval interval;
+ ArrowIntervalInit(&interval, value->storage_type);
+ WriteIntervalMonthDayNanoMaybeNull(out, value, 0, &interval);
+ for (int64_t i = 1; i < value->length; i++) {
+ out << ", ";
+ WriteIntervalMonthDayNanoMaybeNull(out, value, i, &interval);
+ }
+ break;
+ }
+
default:
// Not supported
return ENOTSUP;
@@ -834,6 +913,28 @@ class TestingJSONWriter {
}
}
+ void WriteIntervalDayTimeMaybeNull(std::ostream& out, const ArrowArrayView*
view,
+ int64_t i, ArrowInterval* interval) {
+ if (ArrowArrayViewIsNull(view, i)) {
+ out << R"({"days": 0, "milliseconds": 0})";
+ } else {
+ ArrowArrayViewGetIntervalUnsafe(view, i, interval);
+ out << R"({"days": )" << interval->days << R"(, "milliseconds": )" <<
interval->ms
+ << "}";
+ }
+ }
+
+ void WriteIntervalMonthDayNanoMaybeNull(std::ostream& out, const
ArrowArrayView* view,
+ int64_t i, ArrowInterval* interval) {
+ if (ArrowArrayViewIsNull(view, i)) {
+ out << R"({"months": 0, "days": 0, "nanoseconds": "0"})";
+ } else {
+ ArrowArrayViewGetIntervalUnsafe(view, i, interval);
+ out << R"({"months": )" << interval->months << R"(, "days": )" <<
interval->days
+ << R"(, "nanoseconds": ")" << interval->ns << R"("})";
+ }
+ }
+
void WriteString(std::ostream& out, ArrowStringView value) {
out << R"(")";
@@ -1289,6 +1390,16 @@ class TestingJSONReader {
NANOARROW_RETURN_NOT_OK_WITH_ERROR(ArrowSchemaSetFormat(schema, "+L"),
error);
} else if (name_str == "fixedsizelist") {
NANOARROW_RETURN_NOT_OK(SetTypeFixedSizeList(schema, value, error));
+ } else if (name_str == "date") {
+ NANOARROW_RETURN_NOT_OK(SetTypeDate(schema, value, error));
+ } else if (name_str == "time") {
+ NANOARROW_RETURN_NOT_OK(SetTypeTime(schema, value, error));
+ } else if (name_str == "timestamp") {
+ NANOARROW_RETURN_NOT_OK(SetTypeTimestamp(schema, value, error));
+ } else if (name_str == "duration") {
+ NANOARROW_RETURN_NOT_OK(SetTypeDuration(schema, value, error));
+ } else if (name_str == "interval") {
+ NANOARROW_RETURN_NOT_OK(SetTypeInterval(schema, value, error));
} else if (name_str == "map") {
NANOARROW_RETURN_NOT_OK(SetTypeMap(schema, value, error));
} else if (name_str == "union") {
@@ -1452,6 +1563,151 @@ class TestingJSONReader {
return NANOARROW_OK;
}
+ ArrowErrorCode SetTypeDate(ArrowSchema* schema, const json& value,
ArrowError* error) {
+ NANOARROW_RETURN_NOT_OK(
+ Check(value.contains("unit"), error, "Type[name=='date'] missing key
'unit'"));
+ const auto& unit = value["unit"];
+ NANOARROW_RETURN_NOT_OK(
+ Check(unit.is_string(), error, "Type[name=='date'] unit must be
string"));
+ std::string unit_str = unit.get<std::string>();
+
+ if (unit_str == "DAY") {
+ NANOARROW_RETURN_NOT_OK_WITH_ERROR(
+ ArrowSchemaSetType(schema, NANOARROW_TYPE_DATE32), error);
+ } else if (unit_str == "MILLISECOND") {
+ NANOARROW_RETURN_NOT_OK_WITH_ERROR(
+ ArrowSchemaSetType(schema, NANOARROW_TYPE_DATE64), error);
+ } else {
+ ArrowErrorSet(error, "Type[name=='date'] unit must be 'DAY' or
'MILLISECOND'");
+ return EINVAL;
+ }
+
+ return NANOARROW_OK;
+ }
+
+ ArrowErrorCode SetTypeTime(ArrowSchema* schema, const json& value,
ArrowError* error) {
+ ArrowTimeUnit time_unit;
+ NANOARROW_RETURN_NOT_OK(SetTimeUnit(value, &time_unit, error));
+
+ const auto& bit_width = value["bitWidth"];
+ NANOARROW_RETURN_NOT_OK(Check(bit_width.is_number_integer(), error,
+ "Type[name=='time'] bitWidth must be
integer"));
+ auto bit_width_int = bit_width.get<int>();
+
+ if (bit_width_int == 32) {
+ NANOARROW_RETURN_NOT_OK(Check(
+ time_unit == NANOARROW_TIME_UNIT_SECOND ||
+ time_unit == NANOARROW_TIME_UNIT_MILLI,
+ error, "Expected time unit of 'SECOND' or 'MILLISECOND' for bitWidth
32"));
+
+ NANOARROW_RETURN_NOT_OK_WITH_ERROR(
+ ArrowSchemaSetTypeDateTime(schema, NANOARROW_TYPE_TIME32, time_unit,
nullptr),
+ error);
+ return NANOARROW_OK;
+ } else if (bit_width_int == 64) {
+ NANOARROW_RETURN_NOT_OK(Check(
+ time_unit == NANOARROW_TIME_UNIT_MICRO || time_unit ==
NANOARROW_TIME_UNIT_NANO,
+ error, "Expected time unit of 'MICROSECOND' or 'NANOSECOND' for
bitWidth 64"));
+ NANOARROW_RETURN_NOT_OK_WITH_ERROR(
+ ArrowSchemaSetTypeDateTime(schema, NANOARROW_TYPE_TIME64, time_unit,
nullptr),
+ error);
+ return NANOARROW_OK;
+ } else {
+ ArrowErrorSet(error, "Expected Type[name=='time'] bitWidth of 32 or 64");
+ return EINVAL;
+ }
+
+ return NANOARROW_OK;
+ }
+
+ ArrowErrorCode SetTypeTimestamp(ArrowSchema* schema, const json& value,
+ ArrowError* error) {
+ ArrowTimeUnit time_unit;
+ NANOARROW_RETURN_NOT_OK(SetTimeUnit(value, &time_unit, error));
+
+ std::string timezone_str;
+ if (value.contains("timezone")) {
+ const auto& timezone = value["timezone"];
+ NANOARROW_RETURN_NOT_OK(Check(timezone.is_string(), error,
+ "Type[name=='timestamp'] timezone must be
string"));
+ timezone_str = timezone.get<std::string>();
+ }
+
+ NANOARROW_RETURN_NOT_OK_WITH_ERROR(
+ ArrowSchemaSetTypeDateTime(schema, NANOARROW_TYPE_TIMESTAMP, time_unit,
+ timezone_str.c_str()),
+ error);
+
+ return NANOARROW_OK;
+ }
+
+ ArrowErrorCode SetTypeDuration(ArrowSchema* schema, const json& value,
+ ArrowError* error) {
+ ArrowTimeUnit time_unit;
+ NANOARROW_RETURN_NOT_OK(SetTimeUnit(value, &time_unit, error));
+
+ NANOARROW_RETURN_NOT_OK_WITH_ERROR(
+ ArrowSchemaSetTypeDateTime(schema, NANOARROW_TYPE_DURATION, time_unit,
nullptr),
+ error);
+
+ return NANOARROW_OK;
+ }
+
+ ArrowErrorCode SetTimeUnit(const json& value, ArrowTimeUnit* time_unit,
+ ArrowError* error) {
+ NANOARROW_RETURN_NOT_OK(
+ Check(value.contains("unit"), error, "Time-like type missing key
'unit'"));
+ const auto& unit = value["unit"];
+ NANOARROW_RETURN_NOT_OK(
+ Check(unit.is_string(), error, "Time-like type unit must be string"));
+ std::string unit_str = unit.get<std::string>();
+
+ if (unit_str == "SECOND") {
+ *time_unit = NANOARROW_TIME_UNIT_SECOND;
+ } else if (unit_str == "MILLISECOND") {
+ *time_unit = NANOARROW_TIME_UNIT_MILLI;
+ } else if (unit_str == "MICROSECOND") {
+ *time_unit = NANOARROW_TIME_UNIT_MICRO;
+ } else if (unit_str == "NANOSECOND") {
+ *time_unit = NANOARROW_TIME_UNIT_NANO;
+ } else {
+ ArrowErrorSet(
+ error,
+ "TimeUnit must be 'SECOND' or 'MILLISECOND', 'MICROSECOND', or
'NANOSECOND'");
+ return EINVAL;
+ }
+
+ return NANOARROW_OK;
+ }
+
+ ArrowErrorCode SetTypeInterval(ArrowSchema* schema, const json& value,
+ ArrowError* error) {
+ NANOARROW_RETURN_NOT_OK(Check(value.contains("unit"), error,
+ "Type[name=='interval'] missing key
'unit'"));
+ const auto& unit = value["unit"];
+ NANOARROW_RETURN_NOT_OK(
+ Check(unit.is_string(), error, "Type[name=='interval'] unit must be
string"));
+ std::string unit_str = unit.get<std::string>();
+
+ if (unit_str == "YEAR_MONTH") {
+ NANOARROW_RETURN_NOT_OK_WITH_ERROR(
+ ArrowSchemaSetType(schema, NANOARROW_TYPE_INTERVAL_MONTHS), error);
+ } else if (unit_str == "DAY_TIME") {
+ NANOARROW_RETURN_NOT_OK_WITH_ERROR(
+ ArrowSchemaSetType(schema, NANOARROW_TYPE_INTERVAL_DAY_TIME), error);
+ } else if (unit_str == "MONTH_DAY_NANO") {
+ NANOARROW_RETURN_NOT_OK_WITH_ERROR(
+ ArrowSchemaSetType(schema, NANOARROW_TYPE_INTERVAL_MONTH_DAY_NANO),
error);
+ } else {
+ ArrowErrorSet(error,
+ "Type[name=='interval'] unit must be 'YEAR_MONTH',
'DAY_TIME', or "
+ "'MONTH_DAY_NANO'");
+ return EINVAL;
+ }
+
+ return NANOARROW_OK;
+ }
+
ArrowErrorCode SetTypeMap(ArrowSchema* schema, const json& value,
ArrowError* error) {
NANOARROW_RETURN_NOT_OK(Check(value.contains("keysSorted"), error,
"Type[name=='map'] missing key
'keysSorted'"));
@@ -1826,6 +2082,7 @@ class TestingJSONReader {
case NANOARROW_TYPE_UINT16:
return SetBufferInt<uint16_t>(data, buffer, error);
case NANOARROW_TYPE_INT32:
+ case NANOARROW_TYPE_INTERVAL_MONTHS:
return SetBufferInt<int32_t>(data, buffer, error);
case NANOARROW_TYPE_UINT32:
return SetBufferInt<uint32_t>(data, buffer, error);
@@ -1854,7 +2111,10 @@ class TestingJSONReader {
case NANOARROW_TYPE_FIXED_SIZE_BINARY:
return SetBufferFixedSizeBinary(
data, buffer, array_view->layout.element_size_bits[buffer_i] /
8, error);
-
+ case NANOARROW_TYPE_INTERVAL_DAY_TIME:
+ return SetBufferIntervalDayTime(data, buffer, error);
+ case NANOARROW_TYPE_INTERVAL_MONTH_DAY_NANO:
+ return SetBufferIntervalMonthDayNano(data, buffer, error);
default:
ArrowErrorSet(error, "storage type %s DATA buffer not supported",
ArrowTypeString(array_view->storage_type));
@@ -2073,6 +2333,52 @@ class TestingJSONReader {
return NANOARROW_OK;
}
+ ArrowErrorCode SetBufferIntervalDayTime(const json& value, ArrowBuffer*
buffer,
+ ArrowError* error) {
+ NANOARROW_RETURN_NOT_OK(
+ Check(value.is_array(), error, "interval_day_time buffer must be
array"));
+
+ for (const auto& item : value) {
+ NANOARROW_RETURN_NOT_OK(
+ Check(item.is_object(), error, "interval_day_time buffer item must
be object"));
+ NANOARROW_RETURN_NOT_OK(Check(item.contains("days"), error,
+ "interval_day_time buffer item missing key
'days'"));
+ NANOARROW_RETURN_NOT_OK(
+ Check(item.contains("milliseconds"), error,
+ "interval_day_time buffer item missing key 'milliseconds'"));
+
+ NANOARROW_RETURN_NOT_OK(SetBufferIntItem<int32_t>(item["days"], buffer,
error));
+ NANOARROW_RETURN_NOT_OK(
+ SetBufferIntItem<int32_t>(item["milliseconds"], buffer, error));
+ }
+
+ return NANOARROW_OK;
+ }
+
+ ArrowErrorCode SetBufferIntervalMonthDayNano(const json& value, ArrowBuffer*
buffer,
+ ArrowError* error) {
+ NANOARROW_RETURN_NOT_OK(
+ Check(value.is_array(), error, "interval buffer must be array"));
+
+ for (const auto& item : value) {
+ NANOARROW_RETURN_NOT_OK(
+ Check(item.is_object(), error, "interval buffer item must be
object"));
+ NANOARROW_RETURN_NOT_OK(Check(item.contains("months"), error,
+ "interval buffer item missing key
'months'"));
+ NANOARROW_RETURN_NOT_OK(
+ Check(item.contains("days"), error, "interval buffer item missing
key 'days'"));
+ NANOARROW_RETURN_NOT_OK(Check(item.contains("nanoseconds"), error,
+ "interval buffer item missing key
'nanoseconds'"));
+
+ NANOARROW_RETURN_NOT_OK(SetBufferIntItem<int32_t>(item["months"],
buffer, error));
+ NANOARROW_RETURN_NOT_OK(SetBufferIntItem<int32_t>(item["days"], buffer,
error));
+ NANOARROW_RETURN_NOT_OK(
+ SetBufferIntItem<int64_t>(item["nanoseconds"], buffer, error));
+ }
+
+ return NANOARROW_OK;
+ }
+
void SetArrayAllocatorRecursive(ArrowArray* array) {
for (int i = 0; i < array->n_buffers; i++) {
ArrowArrayBuffer(array, i)->allocator = allocator_;
diff --git a/src/nanoarrow/nanoarrow_testing_test.cc
b/src/nanoarrow/nanoarrow_testing_test.cc
index 248ec691..b0323547 100644
--- a/src/nanoarrow/nanoarrow_testing_test.cc
+++ b/src/nanoarrow/nanoarrow_testing_test.cc
@@ -1159,6 +1159,75 @@ TEST(NanoarrowTestingTest,
NanoarrowTestingTestFieldDecimal) {
EXPECT_STREQ(schema->format, "d:10,3");
}
+TEST(NanoarrowTestingTest, NanoarrowTestingTestFieldDate) {
+ TestTypeRoundtrip(R"({"name": "date", "unit": "DAY"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA":
[1, 0]})");
+
+ TestTypeRoundtrip(
+ R"({"name": "date", "unit": "MILLISECOND"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": ["86400000",
"0"]})");
+}
+
+TEST(NanoarrowTestingTest, NanoarrowTestingTestFieldTime) {
+ TestTypeRoundtrip(R"({"name": "time", "unit": "SECOND", "bitWidth": 32})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA":
[1, 0]})");
+ TestTypeRoundtrip(R"({"name": "time", "unit": "MILLISECOND", "bitWidth":
32})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA":
[1, 0]})");
+ TestTypeRoundtrip(
+ R"({"name": "time", "unit": "MICROSECOND", "bitWidth": 64})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": ["1", "0"]})");
+ TestTypeRoundtrip(
+ R"({"name": "time", "unit": "NANOSECOND", "bitWidth": 64})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": ["1", "0"]})");
+}
+
+TEST(NanoarrowTestingTest, NanoarrowTestingTestFieldTimestamp) {
+ TestTypeRoundtrip(
+ R"({"name": "timestamp", "unit": "SECOND", "timezone":
"America/Halifax"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": ["1", "0"]})");
+
+ TestTypeRoundtrip(
+ R"({"name": "timestamp", "unit": "SECOND"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": ["1", "0"]})");
+ TestTypeRoundtrip(
+ R"({"name": "timestamp", "unit": "MILLISECOND"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": ["1", "0"]})");
+ TestTypeRoundtrip(
+ R"({"name": "timestamp", "unit": "MICROSECOND"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": ["1", "0"]})");
+ TestTypeRoundtrip(
+ R"({"name": "timestamp", "unit": "NANOSECOND"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": ["1", "0"]})");
+}
+
+TEST(NanoarrowTestingTest, NanoarrowTestingTestFieldDuration) {
+ TestTypeRoundtrip(
+ R"({"name": "duration", "unit": "SECOND"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": ["1", "0"]})");
+ TestTypeRoundtrip(
+ R"({"name": "duration", "unit": "MILLISECOND"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": ["1", "0"]})");
+ TestTypeRoundtrip(
+ R"({"name": "duration", "unit": "MICROSECOND"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": ["1", "0"]})");
+ TestTypeRoundtrip(
+ R"({"name": "duration", "unit": "NANOSECOND"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": ["1", "0"]})");
+}
+
+TEST(NanoarrowTestingTest, NanoarrowTestingTestFieldInterval) {
+ TestTypeRoundtrip(R"({"name": "interval", "unit": "YEAR_MONTH"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA":
[1, 0]})");
+
+ TestTypeRoundtrip(
+ R"({"name": "interval", "unit": "DAY_TIME"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": [{"days": 1,
"milliseconds": 2}, {"days": 0, "milliseconds": 0}]})");
+
+ TestTypeRoundtrip(
+ R"({"name": "interval", "unit": "MONTH_DAY_NANO"})",
+ R"({"name": null, "count": 2, "VALIDITY": [1, 0], "DATA": [{"months": 1,
"days": 2, "nanoseconds": "3"}, {"months": 0, "days": 0, "nanoseconds":
"0"}]})");
+}
+
TEST(NanoarrowTestingTest, NanoarrowTestingTestFieldMap) {
// Sorted keys
TestFieldRoundtrip(