Skip to content

Commit

Permalink
0002109: Trigger creation fails on Sybase ASE database for CLOB,BLOB,…
Browse files Browse the repository at this point in the history
…BINARY,VARBINARY,LONGBINARY
  • Loading branch information
chenson42 committed Jan 6, 2015
1 parent 0a5ab7f commit 5e7efa3
Showing 1 changed file with 71 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,12 @@
*/
package org.jumpmind.symmetric.db.sqlanywhere;

import java.sql.Types;
import java.util.HashMap;

import org.apache.commons.lang.NotImplementedException;
import org.jumpmind.db.model.Column;
import org.jumpmind.db.model.ColumnTypes;
import org.jumpmind.db.model.Table;
import org.jumpmind.symmetric.db.AbstractTriggerTemplate;
import org.jumpmind.symmetric.db.ISymmetricDialect;
Expand Down Expand Up @@ -145,5 +148,73 @@ protected String replaceTemplateVariables(DataEventType dml, Trigger trigger,
buildKeyVariablesDeclare(columns, "new"), ddl);
return ddl;
}

@Override
protected String buildKeyVariablesDeclare(Column[] columns, String prefix) {
String text = "";
for (int i = 0; i < columns.length; i++) {
text += "declare @" + prefix + "pk" + i + " ";
switch (columns[i].getMappedTypeCode()) {
case Types.TINYINT:
case Types.SMALLINT:
case Types.INTEGER:
case Types.BIGINT:
text += "bigint\n";
break;
case Types.NUMERIC:
case Types.DECIMAL:
text += "decimal\n";
break;
case Types.FLOAT:
case Types.REAL:
case Types.DOUBLE:
text += "float\n";
break;
case Types.CHAR:
case Types.VARCHAR:
case ColumnTypes.NVARCHAR:
case ColumnTypes.LONGNVARCHAR:
case Types.LONGVARCHAR:
text += "varchar(1000)\n";
break;
case Types.DATE:
text += "date\n";
break;
case Types.TIME:
text += "time\n";
break;
case Types.TIMESTAMP:
text += "datetime\n";
break;
case Types.BOOLEAN:
case Types.BIT:
text += "bit\n";
break;
case Types.CLOB:
text += "varchar(16384)\n";
break;
case Types.BLOB:
case Types.BINARY:
case Types.VARBINARY:
case Types.LONGVARBINARY:
case -10: // SQL-Server ntext binary type
text += "varbinary(16384)\n";
break;
case Types.OTHER:
text += "varbinary(16384)\n";
break;
default:
if (columns[i].getJdbcTypeName() != null
&& columns[i].getJdbcTypeName().equalsIgnoreCase("interval")) {
text += "interval";
break;
}
throw new NotImplementedException(columns[i] + " is of type "
+ columns[i].getMappedType());
}
}

return text;
}

}

0 comments on commit 5e7efa3

Please sign in to comment.