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

Alan Gates updated HIVE-7788:
-----------------------------

    Attachment: HIVE-7788.WIP.patch

Attaching a work in progress patch.  This is lacking a couple of things:
* I can't test it end to end until the other patches it depends on are in
* It doesn't generate plans for INSERT...VALUES yet

It incorporates earlier versions of patches for HIVE-7078 and HIVE-7646 which 
I'll remove once those are checked in.

The basic approach is as follows:
For tables whose OutputFormat extends AcidOutputFormat, the plan generated for 
inserts is changed to remove the stages in the middle that handle merging 
files.  This is done because ACID depends on writing delta files, and merging 
those would break the system.
For updates and deletes, queries are rewritten into inserts...selects.  This 
works because that's how updates and deletes are actually implemented 
underneath. So updates are rewritten into:
insert into table _tabname_ [partition (_partcols_)] select ROW__ID, 
_all_cols_, _partcols_ from _tabname_
In the _all_cols_ the expressions from the updates set clause replace those 
columns specifically mentioned in the set clause.  All other columns are 
identity mapped.  For example, given a table T with columns x and y:
update T set x = 5;
would be rewritten to
insert into table T select 5, y from T;
Delete are rewritten to be
insert into table _tabname_ [partition (_partcols_)] select ROW__ID, _partcols_ 
from tabname;
For example, 
delete from T;
will be written as
insert into table T select ROW__ID from T;



> Generate plans for insert, update, and delete
> ---------------------------------------------
>
>                 Key: HIVE-7788
>                 URL: https://issues.apache.org/jira/browse/HIVE-7788
>             Project: Hive
>          Issue Type: Sub-task
>          Components: Query Processor
>            Reporter: Alan Gates
>            Assignee: Alan Gates
>         Attachments: HIVE-7788.WIP.patch
>
>
> Insert plans needs to be generated differently for ACID tables, plus we need 
> to be able to generate plans in the semantic analyzer for update and delete.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to