Return-Path: Delivered-To: apmail-db-ddlutils-dev-archive@www.apache.org Received: (qmail 6081 invoked from network); 3 Jul 2006 23:21:02 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 3 Jul 2006 23:21:02 -0000 Received: (qmail 62824 invoked by uid 500); 3 Jul 2006 23:21:02 -0000 Delivered-To: apmail-db-ddlutils-dev-archive@db.apache.org Received: (qmail 62767 invoked by uid 500); 3 Jul 2006 23:21:01 -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 62756 invoked by uid 500); 3 Jul 2006 23:21:01 -0000 Delivered-To: apmail-db-ddlutils-commits@db.apache.org Received: (qmail 62753 invoked by uid 99); 3 Jul 2006 23:21:01 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 03 Jul 2006 16:21:01 -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-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 03 Jul 2006 16:21:00 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id D05F61A9842; Mon, 3 Jul 2006 16:20:40 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r418871 - in /db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase: SybaseBuilder.java SybaseModelReader.java Date: Mon, 03 Jul 2006 23:20:40 -0000 To: ddlutils-commits@db.apache.org From: tomdz@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060703232040.D05F61A9842@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: tomdz Date: Mon Jul 3 16:20:39 2006 New Revision: 418871 URL: http://svn.apache.org/viewvc?rev=418871&view=rev Log: Fixed/enhanced Sybase platform Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java?rev=418871&r1=418870&r2=418871&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 Mon Jul 3 16:20:39 2006 @@ -202,6 +202,14 @@ } /** + * {@inheritDoc} + */ + public String getSelectLastIdentityValues(Table table) + { + return "SELECT @@IDENTITY"; + } + + /** * Writes the statement that turns on the ability to write delimited identifiers. */ private void writeQuotationOnStatement() throws IOException @@ -224,6 +232,30 @@ print("'"); print(identifier); print("'"); + } + + /** + * {@inheritDoc} + */ + protected void writeCopyDataStatement(Table sourceTable, Table targetTable) throws IOException + { + boolean hasIdentity = targetTable.getAutoIncrementColumns().length > 0; + + if (hasIdentity) + { + print("SET IDENTITY_INSERT "); + printIdentifier(getTableName(targetTable)); + print(" ON"); + printEndOfStatement(); + } + super.writeCopyDataStatement(sourceTable, targetTable); + if (hasIdentity) + { + print("SET IDENTITY_INSERT "); + printIdentifier(getTableName(targetTable)); + print(" OFF"); + printEndOfStatement(); + } } /** Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java?rev=418871&r1=418870&r2=418871&view=diff ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java Mon Jul 3 16:20:39 2006 @@ -35,6 +35,7 @@ import org.apache.ddlutils.model.Index; import org.apache.ddlutils.model.Reference; import org.apache.ddlutils.model.Table; +import org.apache.ddlutils.model.TypeMap; import org.apache.ddlutils.platform.DatabaseMetaDataWrapper; import org.apache.ddlutils.platform.JdbcModelReader; import org.apache.oro.text.regex.MalformedPatternException; @@ -109,26 +110,33 @@ // Back-mapping to BIGINT column.setTypeCode(Types.BIGINT); } - else if ((column.getTypeCode() == Types.TIMESTAMP) && (column.getDefaultValue() != null)) - { - // Sybase maintains the default values for DATE/TIME jdbc types, so we have to - // migrate the default value to TIMESTAMP - PatternMatcher matcher = new Perl5Matcher(); - Timestamp timestamp = null; - - if (matcher.matches(column.getDefaultValue(), _isoDatePattern)) - { - timestamp = new Timestamp(Date.valueOf(matcher.getMatch().group(1)).getTime()); - } - else if (matcher.matches(column.getDefaultValue(), _isoTimePattern)) - { - timestamp = new Timestamp(Time.valueOf(matcher.getMatch().group(1)).getTime()); - } - if (timestamp != null) - { - column.setDefaultValue(timestamp.toString()); - } - } + else if (column.getDefaultValue() != null) + { + if (column.getTypeCode() == Types.TIMESTAMP) + { + // Sybase maintains the default values for DATE/TIME jdbc types, so we have to + // migrate the default value to TIMESTAMP + PatternMatcher matcher = new Perl5Matcher(); + Timestamp timestamp = null; + + if (matcher.matches(column.getDefaultValue(), _isoDatePattern)) + { + timestamp = new Timestamp(Date.valueOf(matcher.getMatch().group(1)).getTime()); + } + else if (matcher.matches(column.getDefaultValue(), _isoTimePattern)) + { + timestamp = new Timestamp(Time.valueOf(matcher.getMatch().group(1)).getTime()); + } + if (timestamp != null) + { + column.setDefaultValue(timestamp.toString()); + } + } + else if (TypeMap.isTextType(column.getTypeCode())) + { + column.setDefaultValue(unescape(column.getDefaultValue(), "'", "''")); + } + } return column; }