You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Eugene Koifman (JIRA)" <ji...@apache.org> on 2017/02/13 20:19:41 UTC

[jira] [Updated] (HIVE-14949) Add Cardinality Violation check in SQL MERGE stmt

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

Eugene Koifman updated HIVE-14949:
----------------------------------
    Summary: Add Cardinality Violation check in SQL MERGE stmt  (was: Enforce that target:source is not 1:N)

> Add Cardinality Violation check in SQL MERGE stmt
> -------------------------------------------------
>
>                 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
>              Labels: TODOC2.2
>             Fix For: 2.2.0
>
>         Attachments: HIVE-14949.01.patch, HIVE-14949.02.patch, HIVE-14949.03.patch, HIVE-14949.03.patch, HIVE-14949.04.patch, HIVE-14949.05.patch
>
>
> 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
> ISO/IEC 9075-2:2011(E)
> Section 14.2 under "General Rules" Item 6/Subitem a/Subitem 2/Subitem B
> 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.15#6346)