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 D33AF10610 for ; Mon, 10 Feb 2014 16:20:37 +0000 (UTC) Received: (qmail 62693 invoked by uid 500); 10 Feb 2014 16:20:36 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 62672 invoked by uid 500); 10 Feb 2014 16:20:35 -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 62620 invoked by uid 99); 10 Feb 2014 16:20:32 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 10 Feb 2014 16:20:32 +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; Mon, 10 Feb 2014 16:20:31 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 206BC2388860; Mon, 10 Feb 2014 16:20:11 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1566673 - in /db/derby/code/trunk/java: engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj testing/org/apache/derbyTesting/functionTests/tests/lang/MergeStatementTest.java Date: Mon, 10 Feb 2014 16:20:10 -0000 To: derby-commits@db.apache.org From: rhillegas@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140210162011.206BC2388860@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: rhillegas Date: Mon Feb 10 16:20:10 2014 New Revision: 1566673 URL: http://svn.apache.org/r1566673 Log: DERBY-3155: Add support for ? parameters to MERGE statements; commit derby-3155-24-aa-supportParameters.diff. Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj 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/sqlgrammar.jj URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj?rev=1566673&r1=1566672&r2=1566673&view=diff ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj Mon Feb 10 16:20:10 2014 @@ -3661,6 +3661,8 @@ mergeStatement() throws StandardExceptio searchCondition = joinCondition() matchingClauses = matchingClauseList() { + setUpAndLinkParameters(); + return new MergeNode ( targetTable, 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=1566673&r1=1566672&r2=1566673&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 Mon Feb 10 16:20:10 2014 @@ -74,6 +74,7 @@ public class MergeStatementTest extends private static final String NO_SUBQUERIES_IN_MATCHED_CLAUSE = "42XAO"; private static final String NO_SYNONYMS_IN_MERGE = "42XAP"; private static final String NO_DCL_IN_MERGE = "42XAQ"; + private static final String PARAMETER_NOT_SET = "07000"; private static final String[] TRIGGER_HISTORY_COLUMNS = new String[] { "ACTION", "ACTION_VALUE" }; @@ -5176,6 +5177,73 @@ public class MergeStatementTest extends goodStatement( dboConnection, "drop table t1_036" ); } + /** + *

+ * Verify that you can use ? parameters in MERGE statements. + *

+ */ + public void test_037_parameters() + throws Exception + { + Connection dboConnection = openUserConnection( TEST_DBO ); + + // + // create schema + // + goodStatement + ( + dboConnection, + "create table t1_037( x int )" + ); + goodStatement + ( + dboConnection, + "create table t2_037( x int )" + ); + goodStatement + ( + dboConnection, + "insert into t2_037 values ( 100 ), ( 200 )" + ); + + // + // No verify the setting of a ? parameter. + // + PreparedStatement ps = chattyPrepare + ( + dboConnection, + "merge into t1_037 using t2_037 on ? when not matched then insert values ( t2_037.x )" + ); + try { + ps.execute(); + fail( "Expected statement to raise an error because a parameter isn't set." ); + } + catch (SQLException se) + { + assertEquals( PARAMETER_NOT_SET, se.getSQLState() ); + } + + ps.setBoolean( 1, true ); + ps.execute(); + assertResults + ( + dboConnection, + "select * from t1_037 order by x", + new String[][] + { + { "100" }, + { "200" }, + }, + false + ); + + // + // drop schema + // + goodStatement( dboConnection, "drop table t2_037" ); + goodStatement( dboConnection, "drop table t1_037" ); + } + /////////////////////////////////////////////////////////////////////////////////// // // ROUTINES