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(


Reply via email to