From 673e636615e07b7803a0a092010b09f7075e18a5 Mon Sep 17 00:00:00 2001 From: chenson42 Date: Thu, 23 Apr 2015 23:03:09 +0000 Subject: [PATCH] 0002282: Add create.table.without.foreign.keys setting that prevents foreign keys to be create on target databases --- .../org/jumpmind/symmetric/common/ParameterConstants.java | 1 + .../symmetric/service/impl/DataExtractorService.java | 4 ++++ .../src/main/resources/symmetric-default.properties | 7 +++++++ 3 files changed, 12 insertions(+) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/common/ParameterConstants.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/common/ParameterConstants.java index 260c8000ef..ae18490a3e 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/common/ParameterConstants.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/common/ParameterConstants.java @@ -120,6 +120,7 @@ private ParameterConstants() { public final static String INITIAL_LOAD_SCHEMA_LOAD_COMMAND = "initial.load.schema.load.command"; public final static String CREATE_TABLE_WITHOUT_DEFAULTS = "create.table.without.defaults"; + public final static String CREATE_TABLE_WITHOUT_FOREIGN_KEYS = "create.table.without.foreign.keys"; public final static String STREAM_TO_FILE_ENABLED = "stream.to.file.enabled"; public final static String STREAM_TO_FILE_THRESHOLD = "stream.to.file.threshold.bytes"; diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java index 5459849f62..5ab2eb8a16 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java @@ -1439,6 +1439,7 @@ public CsvData next() { if (data.getDataEventType() == DataEventType.CREATE && StringUtils.isBlank(data.getCsvData(CsvData.ROW_DATA))) { boolean excludeDefaults = parameterService.is(ParameterConstants.CREATE_TABLE_WITHOUT_DEFAULTS, false); + boolean excludeForeignKeys = parameterService.is(ParameterConstants.CREATE_TABLE_WITHOUT_FOREIGN_KEYS, false); /* * Force a reread of table so new columns are picked up. A create @@ -1469,6 +1470,9 @@ public CsvData next() { } } } + if (excludeForeignKeys) { + targetTable.removeAllForeignKeys(); + } data.setRowData(CsvUtils.escapeCsvData(DatabaseXmlUtil.toXml(db))); } } diff --git a/symmetric-core/src/main/resources/symmetric-default.properties b/symmetric-core/src/main/resources/symmetric-default.properties index 77830b7305..e5819d25f4 100644 --- a/symmetric-core/src/main/resources/symmetric-default.properties +++ b/symmetric-core/src/main/resources/symmetric-default.properties @@ -1000,6 +1000,13 @@ dataloader.create.table.alter.to.match.db.case=true # Type: boolean create.table.without.defaults=false +# If set to true, when a table's schema is sent to the target database foreign keys will not +# be included. +# +# DatabaseOverridable: true +# Type: boolean +create.table.without.foreign.keys=false + # Indicates that the current value of the row should be recorded in the incoming_error table # # DatabaseOverridable: true