[ 
https://issues.apache.org/jira/browse/ARROW-18411?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Will Jones resolved ARROW-18411.
--------------------------------
    Resolution: Fixed

> [Python] MapType comparison ignores nullable flag of item_field
> ---------------------------------------------------------------
>
>                 Key: ARROW-18411
>                 URL: https://issues.apache.org/jira/browse/ARROW-18411
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Python
>         Environment: pyarrow==10.0.1
>            Reporter: &res
>            Assignee: Will Jones
>            Priority: Minor
>
> By default MapType value fields are nullable:
> {code:java}
>  pa.map_(pa.string(), pa.int32()).item_field.nullable == True {code}
> It is possible to mark the value field of a MapType as not-nullable:
> {code:java}
>  pa.map_(pa.string(), pa.field("value", pa.int32(), 
> nullable=False)).item_field.nullable == False{code}
> But comparing these two types, that are semantically different, returns True:
> {code:java}
> pa.map_(pa.string(), pa.int32()) == pa.map_(pa.string(), pa.field("value", 
> pa.int32(), nullable=False)) # Returns True {code}
> So it looks like the comparison omits the nullable flag. 
> {code:java}
> import pyarrow as pa
> map_type = pa.map_(pa.string(), pa.int32())
> non_null_map_type = pa.map_(pa.string(), pa.field("value", pa.int32(), 
> nullable=False))
> nullable_map_type = pa.map_(pa.string(), pa.field("value", pa.int32(), 
> nullable=True))
> map_type_different_field_name = pa.map_(pa.string(), pa.field("value", 
> pa.int32(), nullable=True))
> assert nullable_map_type == map_type  # Wrong
> assert str(nullable_map_type) == str(map_type)
> assert str(non_null_map_type) == str(map_type) # Wrong
> assert non_null_map_type == map_type
> assert non_null_map_type.item_type == map_type.item_type
> assert non_null_map_type.item_field != map_type.item_field
> assert non_null_map_type.item_field.nullable != map_type.item_field.nullable
> assert non_null_map_type.item_field.name == map_type.item_field.name
> assert map_type == map_type_different_field_name # This makes sense
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to