Simhadri Govindappa created HIVE-27754:
------------------------------------------
Summary: 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
{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)