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

Eduardo Ponce commented on ARROW-15211:
---------------------------------------

[~apitrou] I agree, that since it is public facing it is most likely being used 
in user code and making such a change would not be desirable. The 
issue/discussion with ChunkedArray constructor sprouts from ARROW-15194 (see PR 
for more discussions).

In summary, the ChunkedArray long-form constructor was allowing empty and 
nullptr data type, while the single argument constructor and {{Make()}} 
provided checks to prevent this. {{Make()}} performs an extra validation to 
ensure that chunks are of the same type but the constructors do not perform 
this check.

> Deprecate ChunkedArray public constructors
> ------------------------------------------
>
>                 Key: ARROW-15211
>                 URL: https://issues.apache.org/jira/browse/ARROW-15211
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: C++
>            Reporter: Eduardo Ponce
>            Priority: Minor
>
> The convention for the higher-level Arrow data structures (Table, 
> RecordBatch) is to provide a public {{Make()}} method for creating objects 
> with validation checks. The constructors are set to {{protected}} and do not 
> perform validation checks, so they should be only invoked with valid inputs. 
> {{ChunkedArray}} provides both public constructors and {{Make()}}. We should 
> deprecate the public constructors and be consistent with the other data 
> structures.
> For more details on the Arrow data structures, [see this 
> discussion|https://github.com/apache/arrow/pull/12036#issuecomment-1002242875].
> Note: The codebase has many statements of the form 
> {{std::make_shared<ChunkedArray>(...)}} which should be changed to 
> {{ChunkedArray::Make(...)}}.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to