You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Joris Van den Bossche (Jira)" <ji...@apache.org> on 2021/10/28 10:52:00 UTC

[jira] [Created] (ARROW-14500) [C++] Support casting from storage type to extension type

Joris Van den Bossche created ARROW-14500:
---------------------------------------------

             Summary: [C++] Support casting from storage type to extension type
                 Key: ARROW-14500
                 URL: https://issues.apache.org/jira/browse/ARROW-14500
             Project: Apache Arrow
          Issue Type: Improvement
          Components: C++
            Reporter: Joris Van den Bossche


We already support casting an extension array to its storage type (https://issues.apache.org/jira/browse/ARROW-7858):

{code}
>>> from pyarrow.tests.test_extension_type import IntegerType
>>> arr = pa.array([1, 2, 3], pa.int64())
>>> arr_ext = pa.ExtensionArray.from_storage(IntegerType(), arr)
>>> arr_ext.cast(arr.type)
Out[29]: 
<pyarrow.lib.Int64Array object at 0x7f7b0d4739a0>
[
  1,
  2,
  3
]
{code}

but we don't support the cast the other way around from storage type to extension type:

{code}
>>> arr.cast(arr_ext.type)
...
ArrowNotImplementedError: Unsupported cast from int64 to extension<arrow.py_extension_type<IntegerType>> (no available cast function for target type)
../src/arrow/compute/cast.cc:119  GetCastFunctionInternal(cast_options->to_type, args[0].type().get())
{code}




--
This message was sent by Atlassian Jira
(v8.3.4#803005)