From b1207f34c1e466b197a5bae1a141127517b4f172 Mon Sep 17 00:00:00 2001 From: Eric Long Date: Mon, 14 Mar 2022 09:25:59 -0400 Subject: [PATCH] 0005238: Bulk loaders should report missing table --- .../io/AbstractBulkDatabaseWriter.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/symmetric-client/src/main/java/org/jumpmind/symmetric/io/AbstractBulkDatabaseWriter.java b/symmetric-client/src/main/java/org/jumpmind/symmetric/io/AbstractBulkDatabaseWriter.java index b7d07d15b1..b293022310 100644 --- a/symmetric-client/src/main/java/org/jumpmind/symmetric/io/AbstractBulkDatabaseWriter.java +++ b/symmetric-client/src/main/java/org/jumpmind/symmetric/io/AbstractBulkDatabaseWriter.java @@ -21,9 +21,12 @@ package org.jumpmind.symmetric.io; import org.jumpmind.db.platform.IDatabasePlatform; +import org.jumpmind.db.sql.SqlException; +import org.jumpmind.db.sql.TableNotFoundException; import org.jumpmind.symmetric.common.ContextConstants; import org.jumpmind.symmetric.io.data.Batch; import org.jumpmind.symmetric.io.data.CsvData; +import org.jumpmind.symmetric.io.data.DataEventType; import org.jumpmind.symmetric.io.data.writer.DatabaseWriterSettings; import org.jumpmind.symmetric.io.data.writer.DynamicDefaultDatabaseWriter; import org.slf4j.Logger; @@ -56,6 +59,20 @@ public void start(Batch batch) { } public final void write(CsvData data) { + if (data.requiresTable() && data.getDataEventType() != DataEventType.SQL) { + if (sourceTable == null) { + throw new SqlException("The target table was not specified"); + } else if (targetTable == null) { + String qualifiedName = sourceTable.getFullyQualifiedTableName(); + if (writerSettings.isIgnoreMissingTables() || batch.getBatchId() == IoConstants.IGNORE_TABLES_BATCH) { + if (missingTables.add(qualifiedName)) { + log.info("Did not find the {} table in the target database", qualifiedName); + } + } else { + throw new TableNotFoundException(String.format("Could not find the target table '%s'", qualifiedName)); + } + } + } if (isFallBackToDefault()) { writeDefault(data); } else {