[
https://issues.apache.org/jira/browse/HIVE-14949?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15660054#comment-15660054
]
Eugene Koifman edited comment on HIVE-14949 at 11/12/16 6:32 PM:
-----------------------------------------------------------------
Another thought:
generate another leg of the multi-insert stmt like this
{noformat}
Insert into tmp_table select count(*) where <on clause expr> group by
target.ROW__ID having count(*) > 1
{noformat}
Then in some final task or post hook, check if the tmp_table is not empty.
was (Author: ekoifman):
Another thought:
generate another leg of the multi-insert stmt like this
Insert into tmp_table select count(*) where <on clause expr> group by
target.ROW__ID having count(*) > 1
Then in some final task or post hook, check if the tmp_table is not empty.
> Enforce that target:source is not 1:N
> -------------------------------------
>
> Key: HIVE-14949
> URL: https://issues.apache.org/jira/browse/HIVE-14949
> Project: Hive
> Issue Type: Sub-task
> Components: Transactions
> Reporter: Eugene Koifman
> Assignee: Eugene Koifman
>
> If > 1 row on source side matches the same row on target side that means that
> we are forced update (or delete) the same row in target more than once as
> part of the same SQL statement. This should raise an error per SQL Spec
> There is no sure way to do this via static analysis of the query.
> Can we add something to ROJ operator to pay attention to ROW__ID of target
> side row and compare it with ROW__ID of target side of previous row output?
> If they are the same, that means > 1 source row matched.
> Or perhaps just mark each row in the hash table that it matched. And if it
> matches again, throw an error.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)