You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Wes McKinney (JIRA)" <ji...@apache.org> on 2017/08/23 14:21:00 UTC

[jira] [Comment Edited] (ARROW-229) [C++] Implement safe casts for primitive types

    [ https://issues.apache.org/jira/browse/ARROW-229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16138406#comment-16138406 ] 

Wes McKinney edited comment on ARROW-229 at 8/23/17 2:20 PM:
-------------------------------------------------------------

Thank you for your patch. The scope of what I am intending here is fairly large. I am expecting to add a new public API:

{code}
Status SafeCast(const Array& input, const std::shared_ptr<DataType>& target_type,
                MemoryPool* pool,
                std::shared_ptr<Array>* out);
{code}

This will mean some dynamic dispatch work and significantly more testing to check casts that would cause data loss.


was (Author: wesmckinn):
Thank you for your patch. The scope of what I am intending here is fairly large. I am expecting to add a new public API:

{code}
Status CastSafe(const Array& input, const std::shared_ptr<DataType>& target_type,
                std::shared_ptr<Array>* out);
{code}

This will mean some dynamic dispatch work and significantly more testing to check casts that would cause data loss.

> [C++] Implement safe casts for primitive types
> ----------------------------------------------
>
>                 Key: ARROW-229
>                 URL: https://issues.apache.org/jira/browse/ARROW-229
>             Project: Apache Arrow
>          Issue Type: New Feature
>          Components: C++
>            Reporter: Uwe L. Korn
>             Fix For: 0.7.0
>
>
> In some situations, you want to cast the data in a PrimitiveArray to a different (but similar) data type, e.g. from {{uint32_t}} to {{int32_t}} or {{uint32_t}} to {{uint8_t}}. This can either be done by reinterpreting the data or needs to involve a copy if the size of the underlying type changes. There is already an implementation for this in {{parquet-cpp}} that could be pulled out into Arrow: https://github.com/apache/parquet-cpp/blob/9a0407e684c0a6299d0e6ab98c11c1162915c0ee/src/parquet/arrow/writer.cc#L71



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)