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

Roman Karlstetter updated ARROW-11412:
--------------------------------------
    Description: 
There's a problem with boolean "and", "or" and "not" expressions when creating 
them in python (or I'm doing something completely stupid).

 
{code:java}
>>> import pyarrow
>>> pyarrow.__version__
'3.0.0'
>>> import pyarrow.dataset as ds
>>> ds. scalar(False) and ds.scalar(True) # <--- I expect false
<pyarrow.dataset.Expression true>
>>> ds.scalar(True) and ds.scalar(False) # this works
<pyarrow.dataset.Expression false>

>>> ds.scalar(True) or ds.scalar(False) # this works
<pyarrow.dataset.Expression true>
>>> ds.scalar(False) or ds.scalar(True) # <--- I expect true
<pyarrow.dataset.Expression false>

>>> not ds.scalar(True)   # this works                                          
>>>                                                                             
>>>                                                                             
False                                                                           
                                                                                
                                                            
>>> not ds.scalar(False)      <--- I expect true                                
>>>                                                                             
>>>                                                                             
>>>       
False  
{code}
I tried to figure out what goes wrong here, but there are no obvious problems 
in the python code, same for C++ (but I didn't quite understand everything of 
it yet).

 

This happens with pyarrow3 and pyarrow2

 

 

  was:
There's a problem with boolean "and" and "or" expressions when creating them in 
python (or I'm doing something completely stupid).

 
{code:java}

>>> import pyarrow.dataset as ds
>>> ds. scalar(False) and ds.scalar(True) # <--- I expect false
<pyarrow.dataset.Expression true>
>>> ds.scalar(True) and ds.scalar(False) # this works
<pyarrow.dataset.Expression false>

>>> ds.scalar(True) or ds.scalar(False) # this works
<pyarrow.dataset.Expression true>
>>> ds.scalar(False) or ds.scalar(True) # <--- I expect true
<pyarrow.dataset.Expression false>

>>> not ds.scalar(True)   # this works                                          
>>>                                                                             
>>>                                                                             
False                                                                           
                                                                                
                                                            
>>> not ds.scalar(False)      <--- I expect true                                
>>>                                                                             
>>>                                                                             
>>>       
False  
{code}
I tried to figure out what goes wrong here, but there are no obvious problems 
in the python code, same for C++ (but I didn't quite understand everything of 
it yet).

 

 

        Summary: [Python] (C++?) Expression evaluation problem for logical 
boolean expressions (and, or, not)  (was: [Python] (C++?) Expression evaluation 
problem for "and" and "or" expressions)

> [Python] (C++?) Expression evaluation problem for logical boolean expressions 
> (and, or, not)
> --------------------------------------------------------------------------------------------
>
>                 Key: ARROW-11412
>                 URL: https://issues.apache.org/jira/browse/ARROW-11412
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: C++, Python
>    Affects Versions: 2.0.0, 3.0.0
>            Reporter: Roman Karlstetter
>            Priority: Major
>
> There's a problem with boolean "and", "or" and "not" expressions when 
> creating them in python (or I'm doing something completely stupid).
>  
> {code:java}
> >>> import pyarrow
> >>> pyarrow.__version__
> '3.0.0'
> >>> import pyarrow.dataset as ds
> >>> ds. scalar(False) and ds.scalar(True) # <--- I expect false
> <pyarrow.dataset.Expression true>
> >>> ds.scalar(True) and ds.scalar(False) # this works
> <pyarrow.dataset.Expression false>
> >>> ds.scalar(True) or ds.scalar(False) # this works
> <pyarrow.dataset.Expression true>
> >>> ds.scalar(False) or ds.scalar(True) # <--- I expect true
> <pyarrow.dataset.Expression false>
> >>> not ds.scalar(True)   # this works                                        
> >>>                                                                           
> >>>                                                                           
> >>>       
> False                                                                         
>                                                                               
>                                                                 
> >>> not ds.scalar(False)      <--- I expect true                              
> >>>                                                                           
> >>>                                                                           
> >>>             
> False  
> {code}
> I tried to figure out what goes wrong here, but there are no obvious problems 
> in the python code, same for C++ (but I didn't quite understand everything of 
> it yet).
>  
> This happens with pyarrow3 and pyarrow2
>  
>  



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

Reply via email to