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 @@ } /** + * [EMAIL PROTECTED] + */ + 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("'"); + } + + /** + * [EMAIL PROTECTED] + */ + 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; }