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

Krisztian Kasa commented on HIVE-27754:
---------------------------------------

If the expression in the where clause has logical operators ({{{}OR{}}}, 
{{{}AND{}}}, ...) the operands are implicitly casted to boolean
https://github.com/apache/hive/blob/85f6162becb8723ff6c9f85875048ced6ca7ae89/ql/src/java/org/apache/hadoop/hive/ql/parse/type/TypeCheckProcFactory.java#L842-L847

> Query Filter with OR condition updates every record in the table
> ----------------------------------------------------------------
>
>                 Key: HIVE-27754
>                 URL: https://issues.apache.org/jira/browse/HIVE-27754
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Simhadri Govindappa
>            Assignee: Simhadri Govindappa
>            Priority: Major
>
>  
> {noformat}
> UPDATE customers_man SET customer_id=22 WHERE last_name='Pierce' OR 'Taylor' 
> ;{noformat}
>  After the above statement, all the records are updated. The condition 
> {{'Taylor'}} is a constant string, and it will always evaluate to true 
> because it's a non-empty string. So, effectively,  {{UPDATE}} statement is 
> updating all rows in the {{customers_man.}}
> {{}}
> {{Repro: }}
> {noformat}
> create  table customers_man (customer_id bigint, first_name string) 
> PARTITIONED BY (last_name string) STORED AS orc TBLPROPERTIES 
> ('transactional'='true');
>  insert into customers_man values(1, "Joanna", "Pierce"),(1, "Sharon", 
> "Taylor"), (2, "Joanna", "Silver"), (2, "Bob", "Silver"), (2, "Susan", 
> "Morrison") ,(2, "Jake", "Donnel") , (3, "Blake", "Burr"), (3, "Trudy", 
> "Johnson"), (3, "Trudy", "Henderson");
>  select * from customers_man;
>  
> +----------------------------+---------------------------+--------------------------+
>  | customers_man.customer_id  | customers_man.first_name  | 
> customers_man.last_name  |
>  
> +----------------------------+---------------------------+--------------------------+
>  | 3                          | Blake                     | Burr              
>        |
>  | 2                          | Jake                      | Donnel            
>        |
>  | 3                          | Trudy                     | Henderson         
>        |
>  | 3                          | Trudy                     | Johnson           
>        |
>  | 2                          | Susan                     | Morrison          
>        |
>  | 1                          | Joanna                    | Pierce            
>        |
>  | 2                          | Joanna                    | Silver            
>        |
>  | 2                          | Bob                       | Silver            
>        |
>  | 1                          | Sharon                    | Taylor            
>        |
>  
> +----------------------------+---------------------------+--------------------------+
>  UPDATE customers_man SET customer_id=22 WHERE last_name='Pierce' OR 
> last_name='Taylor' ;
>  select * from customers_man;
>  
> +----------------------------+---------------------------+--------------------------+
>  | customers_man.customer_id  | customers_man.first_name  | 
> customers_man.last_name  |
>  
> +----------------------------+---------------------------+--------------------------+
>  | 3                          | Blake                     | Burr              
>        |
>  | 2                          | Jake                      | Donnel            
>        |
>  | 3                          | Trudy                     | Henderson         
>        |
>  | 3                          | Trudy                     | Johnson           
>        |
>  | 2                          | Susan                     | Morrison          
>        |
>  | 22                         | Joanna                    | Pierce            
>        |
>  | 2                          | Joanna                    | Silver            
>        |
>  | 2                          | Bob                       | Silver            
>        |
>  | 22                         | Sharon                    | Taylor            
>        |
>  
> +----------------------------+---------------------------+--------------------------+
>   UPDATE customers_man SET customer_id=22 WHERE last_name='Pierce' OR 
> 'Taylor' ;
>   select * from customers_man;
>   
> +----------------------------+---------------------------+--------------------------+
>   | customers_man.customer_id  | customers_man.first_name  | 
> customers_man.last_name  |
>   
> +----------------------------+---------------------------+--------------------------+
>   | 22                         | Blake                     | Burr             
>         |
>   | 22                         | Jake                      | Donnel           
>         |
>   | 22                         | Trudy                     | Henderson        
>         |
>   | 22                         | Trudy                     | Johnson          
>         |
>   | 22                         | Susan                     | Morrison         
>         |
>   | 22                         | Joanna                    | Pierce           
>         |
>   | 22                         | Joanna                    | Silver           
>         |
>   | 22                         | Bob                       | Silver           
>         |
>   | 22                         | Sharon                    | Taylor           
>         |
>   
> +----------------------------+---------------------------+--------------------------+
> --- simpler repro
> UPDATE customers_man SET customer_id=23 WHERE true;
> select * from customers_man; 
> +----------------------------+---------------------------+--------------------------+
> | customers_man.customer_id  | customers_man.first_name  | 
> customers_man.last_name  |
> +----------------------------+---------------------------+--------------------------+
> | 23                         | Blake                     | Burr               
>       |
> | 23                         | Jake                      | Donnel             
>       |
> | 23                         | Trudy                     | Henderson          
>       |
> | 23                         | Trudy                     | Johnson            
>       |
> | 23                         | Susan                     | Morrison           
>       |
> | 23                         | Joanna                    | Pierce             
>       |
> | 23                         | Joanna                    | Silver             
>       |
> | 23                         | Bob                       | Silver             
>       |
> | 23                         | Sharon                    | Taylor             
>       |
> +----------------------------+---------------------------+--------------------------+{noformat}



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

Reply via email to