[
https://issues.apache.org/jira/browse/HIVE-18154?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eugene Koifman updated HIVE-18154:
----------------------------------
Summary: IOW Acid Load Data/Insert with Overwrite in multi statement
transactions (was: Acid Load Data/Insert with Overwrite in multi statement
transactions)
> IOW Acid Load Data/Insert with Overwrite in multi statement transactions
> ------------------------------------------------------------------------
>
> Key: HIVE-18154
> URL: https://issues.apache.org/jira/browse/HIVE-18154
> Project: Hive
> Issue Type: Bug
> Components: Transactions
> Affects Versions: 3.0.0
> Reporter: Eugene Koifman
> Assignee: Eugene Koifman
> Priority: Major
>
> Consider:
> {noformat}
> START TRANSACTION
> insert into T values(1,2),(3,4)
> load data local inpath '" + getWarehouseDir() + "/1/data' overwrite into
> table T
> update T set a = 0 where a = 6
> COMMIT
> {noformat}
> So what we should have on disk is
> {noformat}
> ├── base_0000028
> │ ├── 000000_0
> │ └── _metadata_acid
> ├── delete_delta_0000028_0000028_0002
> │ └── bucket_00000
> ├── delta_0000028_0000028_0000
> │ └── bucket_00000
> └── delta_0000028_0000028_0002
> └── bucket_00000
> {noformat}
> where base_28 is from overwrite, delta_0000028_0000028_0000 from 1st insert
> nad delta_0000028_0000028_0002/delete_delta_0000028_0000028_0002 is from
> update.
> AcidUtils.getAcidState() only returns base_28 thinking that all other deltas
> are included in it - not what we want here.
> Same applies for Insert Overwrite.
> The simple way to get correct behavior is to disallow commands with Overwrite
> clause in multi-statement txns.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)