Skip to content

Commit

Permalink
0001808: '0000-00-00 00:00:00' fails when initial.load.concat.csv.in.…
Browse files Browse the repository at this point in the history
…sql.enabled=false and db.treat.date.time.as.varchar.enabled=true
  • Loading branch information
chenson42 committed Jul 14, 2014
1 parent 7d72f2c commit c8e8648
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 8 deletions.
Expand Up @@ -24,6 +24,7 @@

import org.jumpmind.symmetric.db.AbstractTriggerTemplate;
import org.jumpmind.symmetric.db.ISymmetricDialect;
import org.jumpmind.symmetric.util.SymmetricUtils;

public class MySqlTriggerTemplate extends AbstractTriggerTemplate {

Expand Down Expand Up @@ -114,5 +115,10 @@ public MySqlTriggerTemplate(ISymmetricDialect symmetricDialect) {
sqlTemplates.put("initialLoadSqlTemplate" ,
"select concat($(columns)) from $(schemaName)$(tableName) t where $(whereClause) " );
}

@Override
protected String castDatetimeColumnToString(String columnName) {
return "cast(" + SymmetricUtils.quote(symmetricDialect, columnName) + " as char) as " + columnName;
}

}
Expand Up @@ -127,6 +127,8 @@ public String createInitalLoadSql(Node node, TriggerRouter triggerRouter, Table
false, channel, triggerRouter.getTrigger()).columnString;
sql = FormatUtils.replace("columns", columnsText, sql);
} else {
boolean dateTimeAsString = symmetricDialect.getParameterService().is(
ParameterConstants.DATA_LOADER_TREAT_DATETIME_AS_VARCHAR);
sql = "select $(columns) from $(schemaName)$(tableName) t where $(whereClause)";
StringBuilder columnList = new StringBuilder();
for (int i = 0; i < columns.length; i++) {
Expand All @@ -136,7 +138,12 @@ public String createInitalLoadSql(Node node, TriggerRouter triggerRouter, Table
if (i > 0) {
columnList.append(",");
}
columnList.append(SymmetricUtils.quote(symmetricDialect, column.getName()));

if (dateTimeAsString && TypeMap.isDateTimeType(column.getMappedTypeCode())) {
columnList.append(castDatetimeColumnToString(column.getName()));
} else {
columnList.append(SymmetricUtils.quote(symmetricDialect, column.getName()));
}
}
}
sql = FormatUtils.replace("columns", columnList.toString(), sql);
Expand Down Expand Up @@ -173,6 +180,10 @@ public String createInitalLoadSql(Node node, TriggerRouter triggerRouter, Table

return sql;
}

protected String castDatetimeColumnToString(String columnName) {
return SymmetricUtils.quote(symmetricDialect, columnName);
}

protected String getSourceTablePrefix(Table table) {
String schemaPlus = (table.getSchema() != null ? table.getSchema()
Expand Down
Expand Up @@ -482,14 +482,18 @@ public String[] getStringValues(BinaryEncoding encoding, Column[] metaData, Row
return values;
}

protected String getDateTimeStringValue(String name, int type, Row row,
boolean useVariableDates) {
Date date = row.getDateTime(name);
if (useVariableDates) {
long diff = date.getTime() - System.currentTimeMillis();
return "${curdate" + diff + "}";
protected String getDateTimeStringValue(String name, int type, Row row, boolean useVariableDates) {
Object dateObj = row.get(name);
if (dateObj instanceof String) {
return (String) dateObj;
} else {
return FormatUtils.TIMESTAMP_FORMATTER.format(date);
Date date = row.getDateTime(name);
if (useVariableDates) {
long diff = date.getTime() - System.currentTimeMillis();
return "${curdate" + diff + "}";
} else {
return FormatUtils.TIMESTAMP_FORMATTER.format(date);
}
}
}

Expand Down

0 comments on commit c8e8648

Please sign in to comment.