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 7A495D11A for ; Thu, 9 Aug 2012 16:02:21 +0000 (UTC) Received: (qmail 9218 invoked by uid 500); 9 Aug 2012 16:02:21 -0000 Delivered-To: apmail-openjpa-commits-archive@openjpa.apache.org Received: (qmail 9195 invoked by uid 500); 9 Aug 2012 16:02:21 -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 9188 invoked by uid 99); 9 Aug 2012 16:02:21 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Aug 2012 16:02:21 +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, 09 Aug 2012 16:02:18 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id EDE6023889CB for ; Thu, 9 Aug 2012 16:01:34 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1371270 - /openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java Date: Thu, 09 Aug 2012 16:01:34 -0000 To: commits@openjpa.apache.org From: allee8285@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120809160134.EDE6023889CB@eris.apache.org> Author: allee8285 Date: Thu Aug 9 16:01:34 2012 New Revision: 1371270 URL: http://svn.apache.org/viewvc?rev=1371270&view=rev Log: OPENJPA-2242 - Extends procedure call parameter String cast length if value length is greater than the default length Modified: openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java Modified: openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java URL: http://svn.apache.org/viewvc/openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java?rev=1371270&r1=1371269&r2=1371270&view=diff ============================================================================== --- openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java (original) +++ openjpa/branches/2.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java Thu Aug 9 16:01:34 2012 @@ -222,7 +222,7 @@ public class DB2Dictionary // if the literal is a string, use the default char col size // in the cast statement. if (String.class.equals(c)) - selectSQL.append("(" + characterColumnSize + ")"); + selectSQL.append("(" + getCastStringColumnSize(val) + ")"); selectSQL.append(")"); } @@ -767,7 +767,7 @@ public class DB2Dictionary String type = getTypeName(getJDBCType(JavaTypes.getTypeCode(val .getType()), false)); if (String.class.equals(val.getType())) - type = type + "(" + characterColumnSize + ")"; + type = type + "(" + getCastStringColumnSize(val) + ")"; fstring = "CAST(? AS " + type + ")"; return fstring; } @@ -895,7 +895,7 @@ public class DB2Dictionary // case "(?" - convert to "CAST(? AS type" String typeName = getTypeName(type); if (String.class.equals(val.getType())) - typeName = typeName + "(" + characterColumnSize + ")"; + typeName = typeName + "(" + getCastStringColumnSize(val) + ")"; String str = "CAST(? AS " + typeName + ")"; buf.replaceSqlString(sqlString.length() - 1, sqlString.length(), str); @@ -1044,6 +1044,20 @@ public class DB2Dictionary } } + private int getCastStringColumnSize(Object val) { + int colSize = characterColumnSize; + if (val instanceof Lit) { + String literal = (String) ((Lit) val).getValue(); + if (literal != null) { + int literalLen = literal.length(); + if (literalLen > characterColumnSize) { + colSize = literalLen; + } + } + } + return colSize; + } + @Override public void insertBlobForStreamingLoad(Row row, Column col, JDBCStore store, Object ob, Select sel) throws SQLException { @@ -1075,7 +1089,7 @@ public class DB2Dictionary throws SQLException { //NO-OP } - + /** * Set the given date value as a parameter to the statement. */