public String[] getPkData(Table table, String key) { Map<String, String> data = toColumnNameValuePairs(table.getPrimaryKeyColumnNames(), key); String[] keyNames = table.getPrimaryKeyColumnNames(); if (keyNames != null && data.size() > 0) { String[] keyValues = new String[keyNames.length]; for (int i = 0; i < keyNames.length; i++) { keyValues[i] = data.get(keyNames[i]); } return keyValues; } else { return null; } }
protected static String message(CsvData data, Table table, boolean fallbackOperationFailed) { Map<String, String> pks = data.toColumnNameValuePairs(table.getPrimaryKeyColumnNames(), CsvData.PK_DATA); if (pks == null || pks.size() == 0) { pks = data.toColumnNameValuePairs(table.getPrimaryKeyColumnNames(), CsvData.OLD_DATA); } if (pks == null || pks.size() == 0) { pks = data.toColumnNameValuePairs(table.getPrimaryKeyColumnNames(), CsvData.ROW_DATA); } return String.format( "Detected conflict while executing %s on %s. The primary key data was: %s. %s", data.getDataEventType().toString(), table.getFullyQualifiedTableName(), pks, fallbackOperationFailed ? "Failed to fallback." : ""); }
protected Map<String, String> getLookupDataMap(CsvData data) { Map<String, String> keyData = null; if (data.getDataEventType() == DataEventType.INSERT) { keyData = data.toColumnNameValuePairs(sourceTable.getColumnNames(), CsvData.ROW_DATA); } else { keyData = data.toColumnNameValuePairs(sourceTable.getColumnNames(), CsvData.OLD_DATA); if (keyData == null || keyData.size() == 0) { keyData = data.toColumnNameValuePairs(sourceTable.getPrimaryKeyColumnNames(), CsvData.PK_DATA); } if (keyData == null || keyData.size() == 0) { keyData = data.toColumnNameValuePairs(sourceTable.getColumnNames(), CsvData.ROW_DATA); } } return keyData; }
sourceKeyValues = data.toColumnNameValuePairs(this.sourceTable.getPrimaryKeyColumnNames(), CsvData.PK_DATA); } else if (oldSourceValues.size() > 0) { sourceKeyValues = data.toColumnNameValuePairs(this.sourceTable.getPrimaryKeyColumnNames(), CsvData.OLD_DATA); } else { sourceKeyValues = data.toColumnNameValuePairs(this.sourceTable.getPrimaryKeyColumnNames(), CsvData.ROW_DATA);
if (table != null) { table = table.copyAndFilterColumns(sourceTable.getColumnNames(), sourceTable.getPrimaryKeyColumnNames(), this.writerSettings.isUsePrimaryKeysFromSource());
public boolean start(Table table) { /* * in the case when the target schema or catalog is set then we need to * use the previous schema or catalog to look up the table locally. */ this.currentTable = platform.getTableFromCache(table.getOldCatalog(), table.getOldSchema(), table.getName(), false); this.currentTable = currentTable.copyAndFilterColumns(table.getColumnNames(), table.getPrimaryKeyColumnNames(), true); /* * restore the schema and catalog from the passed in table because they * might have not been originally set, but were set when looking up the table locally */ this.currentTable.setSchema(table.getSchema()); this.currentTable.setCatalog(table.getCatalog()); this.currentTable.setName(table.getName()); return true; }