Skip to content

Commit

Permalink
0002010: Initial load failing on Firebird because of "Implementation …
Browse files Browse the repository at this point in the history
…limit exceeded. Block size exceeds implementation restriction"
  • Loading branch information
chenson42 committed Oct 20, 2014
1 parent b3462bb commit 938c47b
Show file tree
Hide file tree
Showing 7 changed files with 20 additions and 12 deletions.
Expand Up @@ -43,13 +43,17 @@
import org.jumpmind.symmetric.service.IParameterService;
import org.jumpmind.symmetric.util.SymmetricUtils;
import org.jumpmind.util.FormatUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Responsible for generating dialect specific SQL such as trigger bodies and
* functions
*/
abstract public class AbstractTriggerTemplate {

protected final Logger log = LoggerFactory.getLogger(getClass());

protected static final String ORIG_TABLE_ALIAS = "orig";

static final String INSERT_TRIGGER_TEMPLATE = "insertTriggerTemplate";
Expand Down Expand Up @@ -193,13 +197,13 @@ public String createInitalLoadSql(Node node, TriggerRouter triggerRouter, Table
columnList.append(columnExpression).append(" as ").append("x__").append(i);

} else {
columnList.append(" '' as ").append("x__").append(i);
columnList.append(" ").append(emptyColumnTemplate).append(" as ").append("x__").append(i);
}
}
}
sql = FormatUtils.replace("columns", columnList.toString(), sql);
}

String initialLoadSelect = StringUtils.isBlank(triggerRouter.getInitialLoadSelect()) ? Constants.ALWAYS_TRUE_CONDITION
: triggerRouter.getInitialLoadSelect();
if (StringUtils.isNotBlank(overrideSelectSql)) {
Expand Down
Expand Up @@ -1607,7 +1607,7 @@ public Data mapRow(Row row) {
} else if (objectValuesWillNeedEscaped) {
String[] rowData = platform.getStringValues(
symmetricDialect.getBinaryEncoding(), sourceTable.getColumns(),
row, false);
row, false, true);
csvRow = CsvUtils.escapeCsvData(rowData, '\0', '"');
} else {
csvRow = row.csvValue();
Expand Down
Expand Up @@ -34,6 +34,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Base64;
Expand Down Expand Up @@ -470,13 +471,14 @@ protected String cleanNumber(String value) {
// TODO: this should be AbstractDdlBuilder.getInsertSql(Table table,
// Map<String, Object> columnValues, boolean genPlaceholders)
public String[] getStringValues(BinaryEncoding encoding, Column[] metaData, Row row,
boolean useVariableDates) {
boolean useVariableDates, boolean indexByPosition) {
String[] values = new String[metaData.length];
for (int i = 0; i < metaData.length; i++) {
Set<String> keys = row.keySet();
int i = 0;
for (String key : keys) {
Column column = metaData[i];
String name = column.getName();
int type = column.getJdbcTypeCode();

String name = indexByPosition ? key : column.getName();
int type = column.getJdbcTypeCode();
if (row.get(name) != null) {
if (type == Types.BOOLEAN || type == Types.BIT) {
values[i] = row.getBoolean(name) ? "1" : "0";
Expand All @@ -498,6 +500,8 @@ public String[] getStringValues(BinaryEncoding encoding, Column[] metaData, Row
values[i] = row.getString(name);
}
}

i++;
}
return values;
}
Expand Down
Expand Up @@ -129,7 +129,7 @@ public Object[] getObjectValues(BinaryEncoding encoding, Table table, String[] c
public Object[] getObjectValues(BinaryEncoding encoding, String[] values,
Column[] orderedMetaData, boolean useVariableDates, boolean fitToColumn);

public String[] getStringValues(BinaryEncoding encoding, Column[] metaData, Row row, boolean useVariableDates);
public String[] getStringValues(BinaryEncoding encoding, Column[] metaData, Row row, boolean useVariableDates, boolean indexByPosition);

public Database readDatabaseFromXml(String filePath, boolean alterCaseToMatchDatabaseDefaultCase);

Expand Down
Expand Up @@ -508,7 +508,7 @@ protected void writeComment(String commentStr) {
protected void writeRow(Row row) {
Column[] columns = table.getColumns();
String[] values = platform.getStringValues(BinaryEncoding.HEX, columns, row,
useVariableDates);
useVariableDates, false);
try {
if (format == Format.CSV) {
csvWriter.writeRecord(values, true);
Expand Down
Expand Up @@ -902,7 +902,7 @@ public Row mapRow(Row row) {

if (row != null) {
String[] existData = platform.getStringValues(context.getBatch().getBinaryEncoding(),
columns, row, false);
columns, row, false, false);
if (existData != null) {
curVal = CsvUtils.escapeCsvData(existData);
}
Expand Down
Expand Up @@ -200,7 +200,7 @@ protected List<String[]> readData(final Table table, String[] args) {
@Override
public String[] mapRow(Row row) {
return platform.getStringValues(engine.getSymmetricDialect()
.getBinaryEncoding(), table.getColumns(), row, false);
.getBinaryEncoding(), table.getColumns(), row, false, false);
}
}, argObjs);
}
Expand Down

0 comments on commit 938c47b

Please sign in to comment.