Return-Path: Delivered-To: apmail-db-ddlutils-dev-archive@www.apache.org Received: (qmail 89971 invoked from network); 12 May 2006 20:33:43 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 12 May 2006 20:33:43 -0000 Received: (qmail 17642 invoked by uid 500); 12 May 2006 20:33:43 -0000 Delivered-To: apmail-db-ddlutils-dev-archive@db.apache.org Received: (qmail 17618 invoked by uid 500); 12 May 2006 20:33:42 -0000 Mailing-List: contact ddlutils-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ddlutils-dev@db.apache.org Delivered-To: mailing list ddlutils-dev@db.apache.org Received: (qmail 17607 invoked by uid 500); 12 May 2006 20:33:42 -0000 Delivered-To: apmail-db-ddlutils-commits@db.apache.org Received: (qmail 17604 invoked by uid 99); 12 May 2006 20:33:42 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 May 2006 13:33:42 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 12 May 2006 13:33:41 -0700 Received: (qmail 89947 invoked by uid 65534); 12 May 2006 20:33:21 -0000 Message-ID: <20060512203321.89946.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r405862 - in /db/ddlutils/trunk/src/java/org/apache/ddlutils: model/Column.java platform/SqlBuilder.java platform/sybase/SybaseBuilder.java Date: Fri, 12 May 2006 20:33:20 -0000 To: ddlutils-commits@db.apache.org From: tomdz@apache.org X-Mailer: svnmailer-1.0.8 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: tomdz Date: Fri May 12 13:33:20 2006 New Revision: 405862 URL: http://svn.apache.org/viewcvs?rev=405862&view=rev Log: Fix for DDLUTILS-104 Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/model/Column.java db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/model/Column.java URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/model/Column.java?rev=405862&r1=405861&r2=405862&view=diff ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/model/Column.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/model/Column.java Fri May 12 13:33:20 2006 @@ -412,7 +412,7 @@ */ public Object getParsedDefaultValue() { - if (_defaultValue != null) + if ((_defaultValue != null) && (_defaultValue.length() > 0)) { try { @@ -451,9 +451,13 @@ } } catch (NumberFormatException ex) - {} + { + return null; + } catch (IllegalArgumentException ex) - {} + { + return null; + } } return _defaultValue; } Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java?rev=405862&r1=405861&r2=405862&view=diff ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java Fri May 12 13:33:20 2006 @@ -1958,18 +1958,7 @@ printIdentifier(getColumnName(column)); print(" "); print(getSqlType(column)); - - if ((column.getDefaultValue() != null) || - (getPlatformInfo().isDefaultValueUsedForIdentitySpec() && column.isAutoIncrement())) - { - if (!getPlatformInfo().isDefaultValuesForLongTypesSupported() && - ((column.getTypeCode() == Types.LONGVARBINARY) || (column.getTypeCode() == Types.LONGVARCHAR))) - { - throw new DynaSqlException("The platform does not support default values for LONGVARCHAR or LONGVARBINARY columns"); - } - print(" DEFAULT "); - writeColumnDefaultValue(table, column); - } + writeColumnDefaultValueStmt(table, column); if (column.isRequired()) { print(" "); @@ -2120,7 +2109,39 @@ } return result; } - + + /** + * Prints the default value stmt part for the column. + * + * @param table The table + * @param column The column + */ + protected void writeColumnDefaultValueStmt(Table table, Column column) throws IOException + { + Object parsedDefault = column.getParsedDefaultValue(); + + if (parsedDefault != null) + { + if (!getPlatformInfo().isDefaultValuesForLongTypesSupported() && + ((column.getTypeCode() == Types.LONGVARBINARY) || (column.getTypeCode() == Types.LONGVARCHAR))) + { + throw new DynaSqlException("The platform does not support default values for LONGVARCHAR or LONGVARBINARY columns"); + } + // we write empty default value strings only if the type is not a numeric or date/time type + if ((column.getDefaultValue().length() > 0) || + (!TypeMap.isNumericType(column.getTypeCode()) && !TypeMap.isDateTimeType(column.getTypeCode()))) + { + print(" DEFAULT "); + writeColumnDefaultValue(table, column); + } + } + else if (getPlatformInfo().isDefaultValueUsedForIdentitySpec() && column.isAutoIncrement()) + { + print(" DEFAULT "); + writeColumnDefaultValue(table, column); + } + } + /** * Prints the default value of the column. * Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java?rev=405862&r1=405861&r2=405862&view=diff ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java Fri May 12 13:33:20 2006 @@ -22,7 +22,6 @@ import java.sql.Types; import java.util.Map; -import org.apache.ddlutils.DynaSqlException; import org.apache.ddlutils.Platform; import org.apache.ddlutils.model.Column; import org.apache.ddlutils.model.Database; @@ -68,17 +67,7 @@ printIdentifier(getColumnName(column)); print(" "); print(getSqlType(column)); - - if (column.getDefaultValue() != null) - { - if (!getPlatformInfo().isDefaultValuesForLongTypesSupported() && - ((column.getTypeCode() == Types.LONGVARBINARY) || (column.getTypeCode() == Types.LONGVARCHAR))) - { - throw new DynaSqlException("The platform does not support default values for LONGVARCHAR or LONGVARBINARY columns"); - } - print(" DEFAULT "); - writeColumnDefaultValue(table, column); - } + writeColumnDefaultValueStmt(table, column); // Sybase does not like NOT NULL and IDENTITY together if (column.isRequired() && !column.isAutoIncrement()) {