From 79776dcdbedc24267f80eae1b5a46c5e2212bfa6 Mon Sep 17 00:00:00 2001 From: elong Date: Wed, 25 Jul 2018 14:20:25 -0400 Subject: [PATCH] 0003646: Auto resolve foreign key can fail on Oracle RAC in noorder mode --- .../symmetric/service/impl/AcknowledgeService.java | 2 +- .../symmetric/service/impl/AcknowledgeServiceSqlMap.java | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/AcknowledgeService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/AcknowledgeService.java index 40f257b310..01d7de1320 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/AcknowledgeService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/AcknowledgeService.java @@ -113,7 +113,7 @@ public BatchAckResult ack(final BatchAck batch) { if (!batch.isOk() && batch.getErrorLine() != 0) { String sql = getSql("selectDataIdSql"); if (parameterService.is(ParameterConstants.DBDIALECT_ORACLE_SEQUENCE_NOORDER, false)) { - sql += getSql("orderByCreateTime"); + sql = getSql("selectDataIdByCreateTimeSql"); } else if (parameterService.is(ParameterConstants.ROUTING_DATA_READER_ORDER_BY_DATA_ID_ENABLED, true)) { sql += getSql("orderByDataId"); } diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/AcknowledgeServiceSqlMap.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/AcknowledgeServiceSqlMap.java index a2f8c80f44..9709b3ab88 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/AcknowledgeServiceSqlMap.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/AcknowledgeServiceSqlMap.java @@ -30,10 +30,12 @@ public AcknowledgeServiceSqlMap(IDatabasePlatform platform, Map replacementTokens) { super(platform, replacementTokens); putSql("selectDataIdSql", "select data_id from $(data_event) b where batch_id = ?"); - + + putSql("selectDataIdByCreateTimeSql", + "select d.data_id from $(data) d " + + "inner join $(data_event) e on d.data_id = e.data_id where e.batch_id = ? order by d.create_time asc, d.data_id asc"); + putSql("orderByDataId", " order by data_id asc"); - - putSql("orderByCreateTime", " order by create_time asc, data_id asc "); }