Return-Path: X-Original-To: apmail-db-derby-commits-archive@www.apache.org Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1946C10D49 for ; Wed, 22 Jan 2014 20:58:11 +0000 (UTC) Received: (qmail 58485 invoked by uid 500); 22 Jan 2014 20:57:39 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 58452 invoked by uid 500); 22 Jan 2014 20:57:37 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 58084 invoked by uid 99); 22 Jan 2014 20:57:23 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Jan 2014 20:57:23 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Jan 2014 20:57:20 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 630FE2388900; Wed, 22 Jan 2014 20:56:59 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1560507 - in /db/derby/code/trunk/java: engine/org/apache/derby/impl/sql/compile/UpdateNode.java testing/org/apache/derbyTesting/functionTests/tests/lang/MergeStatementTest.java Date: Wed, 22 Jan 2014 20:56:59 -0000 To: derby-commits@db.apache.org From: rhillegas@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140122205659.630FE2388900@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: rhillegas Date: Wed Jan 22 20:56:58 2014 New Revision: 1560507 URL: http://svn.apache.org/r1560507 Log: DERBY-3155: Basic support for views as the source tables of MERGE statements; commit derby-3155-18-aa-basicView.diff. Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UpdateNode.java db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/MergeStatementTest.java Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UpdateNode.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UpdateNode.java?rev=1560507&r1=1560506&r2=1560507&view=diff ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UpdateNode.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UpdateNode.java Wed Jan 22 20:56:58 2014 @@ -381,7 +381,11 @@ public final class UpdateNode extends DM ((FromBaseTable) targetTable).markUpdated( resultSet.getResultColumns()); } - else if (targetTable instanceof FromVTI) + else if + ( + (targetTable instanceof FromVTI) || + (targetTable instanceof FromSubquery) + ) { resultColumnList = resultSet.getResultColumns(); } Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/MergeStatementTest.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/MergeStatementTest.java?rev=1560507&r1=1560506&r2=1560507&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/MergeStatementTest.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/MergeStatementTest.java Wed Jan 22 20:56:58 2014 @@ -4756,6 +4756,75 @@ public class MergeStatementTest extends goodStatement( dboConnection, "drop table t2_030" ); } + /** + *

+ * Verify the fix to a query involving a view. + *

+ */ + public void test_031_view() + throws Exception + { + Connection dboConnection = openUserConnection( TEST_DBO ); + + // + // create schema + // + goodStatement + ( + dboConnection, + "create table t1_031(x int, y int)" + ); + goodStatement + ( + dboConnection, + "create table tv_031(x int, y int)" + ); + goodStatement + ( + dboConnection, + "create view v_031 as select * from tv_031" + ); + goodStatement + ( + dboConnection, + "insert into t1_031 values ( 1, 100 ), ( 2, 200 ), ( 3, 300 )" + ); + goodStatement + ( + dboConnection, + "insert into tv_031 values ( 1, 1000 ), ( 3, 3000 ), ( 4, 4000 )" + ); + + // verify the fix + goodUpdate + ( + dboConnection, + "merge into t1_031\n" + + "using v_031 on t1_031.x = v_031.x\n" + + "when matched then update set t1_031.y = v_031.y\n", + 2 + ); + assertResults + ( + dboConnection, + "select * from t1_031 order by x", + new String[][] + { + { "1", "1000" }, + { "2", "200" }, + { "3", "3000" }, + }, + false + ); + + // + // drop schema + // + goodStatement( dboConnection, "drop view v_031" ); + goodStatement( dboConnection, "drop table t1_031" ); + goodStatement( dboConnection, "drop table tv_031" ); + } + /////////////////////////////////////////////////////////////////////////////////// // // ROUTINES