Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 2232A200C0F for ; Thu, 19 Jan 2017 01:17:32 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 20A76160B43; Thu, 19 Jan 2017 00:17:32 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 6BEEB160B44 for ; Thu, 19 Jan 2017 01:17:31 +0100 (CET) Received: (qmail 5889 invoked by uid 500); 19 Jan 2017 00:17:30 -0000 Mailing-List: contact issues-help@hive.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hive.apache.org Delivered-To: mailing list issues@hive.apache.org Received: (qmail 5880 invoked by uid 99); 19 Jan 2017 00:17:30 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 19 Jan 2017 00:17:30 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 12FED185E8F for ; Thu, 19 Jan 2017 00:17:30 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -1.999 X-Spam-Level: X-Spam-Status: No, score=-1.999 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RP_MATCHES_RCVD=-2.999] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id LlSPFrXzBhzj for ; Thu, 19 Jan 2017 00:17:29 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTP id D4DA85FB73 for ; Thu, 19 Jan 2017 00:17:28 +0000 (UTC) Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id CC9EBE0309 for ; Thu, 19 Jan 2017 00:17:26 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 857EA20D39 for ; Thu, 19 Jan 2017 00:17:26 +0000 (UTC) Date: Thu, 19 Jan 2017 00:17:26 +0000 (UTC) From: "Eugene Koifman (JIRA)" To: issues@hive.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (HIVE-14949) Enforce that target:source is not 1:N MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Thu, 19 Jan 2017 00:17:32 -0000 [ https://issues.apache.org/jira/browse/HIVE-14949?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Eugene Koifman updated HIVE-14949: ---------------------------------- Description: 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. was: 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. > 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 > 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.4#6332)