Return-Path: X-Original-To: apmail-openjpa-commits-archive@www.apache.org Delivered-To: apmail-openjpa-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 D88BE11130 for ; Thu, 31 Jul 2014 17:16:36 +0000 (UTC) Received: (qmail 21190 invoked by uid 500); 31 Jul 2014 17:16:36 -0000 Delivered-To: apmail-openjpa-commits-archive@openjpa.apache.org Received: (qmail 21158 invoked by uid 500); 31 Jul 2014 17:16:36 -0000 Mailing-List: contact commits-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list commits@openjpa.apache.org Received: (qmail 21149 invoked by uid 99); 31 Jul 2014 17:16:36 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 31 Jul 2014 17:16:36 +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; Thu, 31 Jul 2014 17:16:37 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 1E784238919C; Thu, 31 Jul 2014 17:16:12 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1614939 - in /openjpa/branches/2.2.x: ./ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java Date: Thu, 31 Jul 2014 17:16:12 -0000 To: commits@openjpa.apache.org From: hthomann@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140731171612.1E784238919C@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: hthomann Date: Thu Jul 31 17:16:11 2014 New Revision: 1614939 URL: http://svn.apache.org/r1614939 Log: OPENJPA-2131: Missing IN or OUT parameter exception with OracleDictionary - back ported Albert Lee's trunk commit. Modified: openjpa/branches/2.2.x/ (props changed) openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java Propchange: openjpa/branches/2.2.x/ ------------------------------------------------------------------------------ Merged /openjpa/branches/2.1.x:r1614935 Modified: openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java URL: http://svn.apache.org/viewvc/openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java?rev=1614939&r1=1614938&r2=1614939&view=diff ============================================================================== --- openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java (original) +++ openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java Thu Jul 31 17:16:11 2014 @@ -362,10 +362,12 @@ public class OracleDictionary for (Iterator itr = aliases.iterator(); itr.hasNext(); i++) { alias = itr.next(); String asString = null; - if (alias instanceof SQLBuffer) + if (alias instanceof SQLBuffer) { asString = ((SQLBuffer) alias).getSQL(); - else + selectSQL.appendParamOnly((SQLBuffer) alias); + } else { asString = alias.toString(); + } selectSQL.append(asString); if (asString.indexOf(" AS ") == -1) selectSQL.append(" AS c").append(String.valueOf(i)); Modified: openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java URL: http://svn.apache.org/viewvc/openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java?rev=1614939&r1=1614938&r2=1614939&view=diff ============================================================================== --- openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java (original) +++ openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SQLBuffer.java Thu Jul 31 17:16:11 2014 @@ -103,16 +103,23 @@ public final class SQLBuffer * Append all SQL and parameters of the given buffer. */ public SQLBuffer append(SQLBuffer buf) { - append(buf, _sql.length(), (_params == null) ? 0 : _params.size(), - true); + append(buf, _sql.length(), (_params == null) ? 0 : _params.size(), true, false); return this; } /** - * Append all SQL and parameters of the given buffer at the given positions. + * Append parameters only if the given buffer at the given positions. + */ + public SQLBuffer appendParamOnly(SQLBuffer buf) { + append(buf, _sql.length(), (_params == null) ? 0 : _params.size(), true, true); + return this; + } + + /** + * Append parameters and/or SQL of the given buffer at the given positions. */ private void append(SQLBuffer buf, int sqlIndex, int paramIndex, - boolean subsels) { + boolean subsels, boolean paramOnly) { if (subsels) { // only allow appending of buffers with subselects, not insertion if (_subsels != null && !_subsels.isEmpty() @@ -129,10 +136,12 @@ public final class SQLBuffer } } - if (sqlIndex == _sql.length()) - _sql.append(buf._sql.toString()); - else - _sql.insert(sqlIndex, buf._sql.toString()); + if (!paramOnly) { + if (sqlIndex == _sql.length()) + _sql.append(buf._sql.toString()); + else + _sql.insert(sqlIndex, buf._sql.toString()); + } if (buf._params != null) { if (_params == null) @@ -435,7 +444,7 @@ public final class SQLBuffer else buf = sub.select.toSelect(false, sub.fetch); buf.resolveSubselects(); - append(buf, sub.sqlIndex, sub.paramIndex, false); + append(buf, sub.sqlIndex, sub.paramIndex, false, false); } _subsels.clear(); }