From 87de30901ce4c4039bd845624e3fdb2e7a8e8e35 Mon Sep 17 00:00:00 2001 From: chenson42 Date: Thu, 29 Nov 2007 12:29:25 +0000 Subject: [PATCH] 1825800 - MS SQL SERVER DIALECT DEVELOPMENT. Passes IntegrationTest --- .../symmetric/db/AbstractDbDialect.java | 10 ++++-- .../src/main/resources/dialects/mssql.xml | 32 +++++++++++-------- symmetric/src/test/resources/log4j.xml | 6 ++++ 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/db/AbstractDbDialect.java b/symmetric/src/main/java/org/jumpmind/symmetric/db/AbstractDbDialect.java index d9f555250c..6b202241e8 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/db/AbstractDbDialect.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/db/AbstractDbDialect.java @@ -95,7 +95,7 @@ protected AbstractDbDialect() { _defaultSizes.put(new Integer(3), "15,15"); _defaultSizes.put(new Integer(2), "15,15"); } - + protected boolean allowsNullForIdentityColumn() { return true; } @@ -516,13 +516,17 @@ public Object doInConnection(Connection conn) throws SQLException, DataAccessExc ps = conn.prepareStatement(sql, new int[] { 1 }); } else { String replaceSql = sql.replaceFirst("\\(\\w*,", "(").replaceFirst("\\(null,", "("); - ps = conn.prepareStatement(replaceSql); + if (supportsGetGeneratedKeys) { + ps = conn.prepareStatement(replaceSql, Statement.RETURN_GENERATED_KEYS); + } else { + ps = conn.prepareStatement(replaceSql); + } } ps.setQueryTimeout(jdbcTemplate.getQueryTimeout()); if (callback != null) { callback.doInPreparedStatement(ps); } - ps.execute(); + ps.executeUpdate(); if (supportsGetGeneratedKeys) { ResultSet rs = ps.getGeneratedKeys(); diff --git a/symmetric/src/main/resources/dialects/mssql.xml b/symmetric/src/main/resources/dialects/mssql.xml index d290ef48c4..f50e45c2b2 100644 --- a/symmetric/src/main/resources/dialects/mssql.xml +++ b/symmetric/src/main/resources/dialects/mssql.xml @@ -9,7 +9,7 @@ - + @@ -36,7 +36,7 @@ - + @@ -58,8 +58,10 @@ if (@SyncEnabled <> 0x1) begin insert into $(defaultSchema)$(prefixName)_data (table_name, channel_id, event_type, trigger_hist_id, transaction_id, row_data, create_time) (select '$(targetTableName)','$(channelName)','I', $(triggerHistoryId), $(txIdExpression), $(columns), current_timestamp from inserted where $(syncOnInsertCondition)); - insert into $(defaultSchema)$(prefixName)_data_event (node_id, data_id) (select node_id, @@IDENTITY from $(defaultSchema)$(prefixName)_node c where - c.node_group_id='$(targetGroupId)' and c.sync_enabled=1 $(nodeSelectWhere)); + if (@@ROWCOUNT > 0) begin + insert into $(defaultSchema)$(prefixName)_data_event (node_id, data_id) (select node_id, @@IDENTITY from $(defaultSchema)$(prefixName)_node c where + c.node_group_id='$(targetGroupId)' and c.sync_enabled=1 $(nodeSelectWhere)); + end end end ]]> @@ -79,13 +81,15 @@ if (@SyncEnabled <> 0x1) begin insert into $(defaultSchema)$(prefixName)_data (table_name, channel_id, event_type, trigger_hist_id, transaction_id, row_data, pk_data, create_time) (select '$(targetTableName)','$(channelName)','U', $(triggerHistoryId), $(txIdExpression), $(columns), $(oldKeys), current_timestamp from inserted left outer join deleted on $(oldNewPrimaryKeyJoin) where $(syncOnUpdateCondition)); - if (@@ROWCOUNT = 1) begin - declare @OldKeys varchar(1000) - select @OldKeys=$(oldKeys) from deleted; - update $(defaultSchema)$(prefixName)_data set pk_data=@OldKeys where data_id=@@IDENTITY; - end - insert into $(defaultSchema)$(prefixName)_data_event (node_id, data_id) (select node_id, @@IDENTITY from $(defaultSchema)$(prefixName)_node c where - c.node_group_id='$(targetGroupId)' and c.sync_enabled=1 $(nodeSelectWhere)); + if (@@ROWCOUNT > 0) begin + if (@@ROWCOUNT = 1) begin + declare @OldKeys varchar(1000) + select @OldKeys=$(oldKeys) from deleted; + update $(defaultSchema)$(prefixName)_data set pk_data=@OldKeys where data_id=@@IDENTITY; + end + insert into $(defaultSchema)$(prefixName)_data_event (node_id, data_id) (select node_id, @@IDENTITY from $(defaultSchema)$(prefixName)_node c where + c.node_group_id='$(targetGroupId)' and c.sync_enabled=1 $(nodeSelectWhere)); + end end end ]]> @@ -105,8 +109,10 @@ if (@SyncEnabled <> 0x1) begin insert into $(defaultSchema)$(prefixName)_data (table_name, channel_id, event_type, trigger_hist_id, transaction_id, pk_data, create_time) (select '$(targetTableName)','$(channelName)','D', $(triggerHistoryId), $(txIdExpression), $(oldKeys), current_timestamp from deleted where $(syncOnDeleteCondition)); - insert into $(defaultSchema)$(prefixName)_data_event (node_id, data_id) (select node_id, @@IDENTITY from $(defaultSchema)$(prefixName)_node c where - c.node_group_id='$(targetGroupId)' and c.sync_enabled=1 $(nodeSelectWhere)); + if (@@ROWCOUNT > 0) begin + insert into $(defaultSchema)$(prefixName)_data_event (node_id, data_id) (select node_id, @@IDENTITY from $(defaultSchema)$(prefixName)_node c where + c.node_group_id='$(targetGroupId)' and c.sync_enabled=1 $(nodeSelectWhere)); + end end end ]]> diff --git a/symmetric/src/test/resources/log4j.xml b/symmetric/src/test/resources/log4j.xml index 1e953660c4..10fa9b8351 100644 --- a/symmetric/src/test/resources/log4j.xml +++ b/symmetric/src/test/resources/log4j.xml @@ -20,6 +20,12 @@ + +