diff --git a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobSummaryMapper.xml b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobSummaryMapper.xml index 82009ad4..ac27f9ad 100644 --- a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobSummaryMapper.xml +++ b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobSummaryMapper.xml @@ -19,10 +19,9 @@ - - INSERT INTO - job_summary (namespace_id, group_name, business_id, trigger_at, - success_num,fail_num,fail_reason,stop_num,stop_reason, cancel_num,cancel_reason) + + INSERT INTO job_summary (namespace_id, group_name, business_id, trigger_at, system_task_type, + success_num,fail_num,fail_reason,stop_num,stop_reason, cancel_num,cancel_reason) VALUES ( @@ -40,26 +39,46 @@ #{item.cancelReason} ) - ON DUPLICATE KEY UPDATE - success_num = values(`success_num`), - fail_num = values(`fail_num`), - fail_reason = values(`fail_reason`), - stop_num = values(`stop_num`), - stop_reason = values(`stop_reason`), - cancel_num = values(`cancel_num`), - cancel_reason = values(`cancel_reason`) + + UPDATE job_summary rt, + ( + + SELECT + #{item.successNum} AS success_num, + #{item.failNum} AS fail_num, + #{item.failReason} AS fail_reason, + #{item.stopNum} AS stop_num, + #{item.stopReason} AS stop_reason, + #{item.cancelNum} AS cancel_num, + #{item.cancelReason} AS cancel_reason, + #{item.triggerAt} AS trigger_at, + #{item.businessId} AS business_id + + ) tt + SET + rt.success_num = tt.success_num, + rt.fail_num = tt.fail_num, + rt.fail_reason = tt.fail_reason, + rt.stop_num = tt.stop_num, + rt.stop_reason = tt.stop_reason, + rt.cancel_num = tt.cancel_num, + rt.cancel_reason = tt.cancel_reason + WHERE rt.trigger_at = tt.trigger_at + AND rt.business_id = tt.business_id + + - SELECT ifnull(sum(success_num), 0) AS successNum, - ifnull(sum(stop_num), 0) AS stopNum, - ifnull(sum(cancel_num), 0) AS cancelNum, - ifnull(sum(fail_num), 0) AS failNum, - ifnull(sum(success_num + fail_num + stop_num + cancel_num), 0) AS totalNum + SELECT IFNULL(sum(success_num), 0) AS successNum, + IFNULL(sum(stop_num), 0) AS stopNum, + IFNULL(sum(cancel_num), 0) AS cancelNum, + IFNULL(sum(fail_num), 0) AS failNum, + IFNULL(sum(success_num + fail_num + stop_num + cancel_num), 0) AS totalNum FROM job_summary ${ew.customSqlSegment} diff --git a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/RetrySummaryMapper.xml b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/RetrySummaryMapper.xml index aab261f3..56e0895d 100644 --- a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/RetrySummaryMapper.xml +++ b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/RetrySummaryMapper.xml @@ -15,30 +15,49 @@ - - INSERT INTO - retry_summary (namespace_id, group_name, scene_name, trigger_at, running_num, finish_num, max_count_num, - suspend_num) + + INSERT INTO retry_summary (namespace_id, group_name, scene_name, trigger_at, + running_num, finish_num, max_count_num, suspend_num) VALUES - - ( - #{item.namespaceId}, - #{item.groupName}, - #{item.sceneName}, - #{item.triggerAt}, - #{item.runningNum}, - #{item.finishNum}, - #{item.maxCountNum}, - #{item.suspendNum} - ) - - ON DUPLICATE KEY UPDATE - running_num = values(`running_num`), - finish_num = values(`finish_num`), - max_count_num = values(`max_count_num`), - suspend_num = values(`suspend_num`) + + ( + #{item.namespaceId}, + #{item.groupName}, + #{item.sceneName}, + #{item.triggerAt}, + #{item.runningNum}, + #{item.finishNum}, + #{item.maxCountNum}, + #{item.suspendNum} + ) + + + UPDATE retry_summary rt, + ( + + SELECT + #{item.runningNum} AS running_num, + #{item.finishNum} AS finish_num, + #{item.maxCountNum} AS max_count_num, + #{item.suspendNum} AS suspend_num, + #{item.triggerAt} AS trigger_at, + #{item.sceneName} AS scene_name, + #{item.namespaceId} AS namespace_id, + #{item.groupName} AS group_name + + ) tt + SET rt.running_num = tt.running_num, + rt.finish_num = tt.finish_num, + rt.max_count_num = tt.max_count_num, + rt.suspend_num = tt.suspend_num + WHERE rt.trigger_at = tt.trigger_at + AND rt.group_name = tt.group_name + AND rt.namespace_id = tt.namespace_id + AND rt.scene_name = tt.scene_name + + SELECT node_type as nodeType, count(*) as total from server_node diff --git a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobSummaryMapper.xml b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobSummaryMapper.xml index d79a88d1..d0b4e728 100644 --- a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobSummaryMapper.xml +++ b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobSummaryMapper.xml @@ -40,31 +40,32 @@ ) + UPDATE job_summary rt, - ( - - SELECT - #{item.successNum} AS success_num, - #{item.failNum} AS fail_num, - #{item.failReason} AS fail_reason, - #{item.stopNum} AS stop_num, - #{item.stopReason} AS stop_reason, - #{item.cancelNum} AS cancel_num, - #{item.cancelReason} AS cancel_reason, - #{item.triggerAt} AS trigger_at, - #{item.businessId} AS business_id - - ) tt - SET - rt.success_num = tt.success_num, - rt.fail_num = tt.fail_num, - rt.fail_reason = tt.fail_reason, - rt.stop_num = tt.stop_num, - rt.stop_reason = tt.stop_reason, - rt.cancel_num = tt.cancel_num, - rt.cancel_reason = tt.cancel_reason - WHERE rt.trigger_at = tt.trigger_at and rt.business_id = tt.business_id + ( + + SELECT + #{item.successNum} AS success_num, + #{item.failNum} AS fail_num, + #{item.failReason} AS fail_reason, + #{item.stopNum} AS stop_num, + #{item.stopReason} AS stop_reason, + #{item.cancelNum} AS cancel_num, + #{item.cancelReason} AS cancel_reason, + #{item.triggerAt} AS trigger_at, + #{item.businessId} AS business_id + + ) tt + SET rt.success_num = tt.success_num, + rt.fail_num = tt.fail_num, + rt.fail_reason = tt.fail_reason, + rt.stop_num = tt.stop_num, + rt.stop_reason = tt.stop_reason, + rt.cancel_num = tt.cancel_num, + rt.cancel_reason = tt.cancel_reason + WHERE rt.trigger_at = tt.trigger_at + AND rt.business_id = tt.business_id - id - , namespace_id, group_name, context_path, host_id, host_ip, host_port, expire_at, node_type,create_dt,update_dt + id, namespace_id, group_name, context_path, host_id, host_ip, host_port, + expire_at, node_type,create_dt,update_dt INSERT INTO server_node (namespace_id, group_name, host_id, host_ip, host_port, - expire_at, node_type, ext_attrs, context_path, create_dt) + expire_at, node_type, ext_attrs, context_path, create_dt) VALUES - - ( - #{item.namespaceId,jdbcType=VARCHAR}, - #{item.groupName,jdbcType=VARCHAR}, - #{item.hostId,jdbcType=VARCHAR}, - #{item.hostIp,jdbcType=VARCHAR}, - #{item.hostPort,jdbcType=INTEGER}, - #{item.expireAt,jdbcType=TIMESTAMP}, - #{item.nodeType,jdbcType=TINYINT}, - #{item.extAttrs,jdbcType=VARCHAR}, - #{item.contextPath,jdbcType=VARCHAR}, - #{item.createDt,jdbcType=TIMESTAMP} - ) - + + ( + #{item.namespaceId,jdbcType=VARCHAR}, + #{item.groupName,jdbcType=VARCHAR}, + #{item.hostId,jdbcType=VARCHAR}, + #{item.hostIp,jdbcType=VARCHAR}, + #{item.hostPort,jdbcType=INTEGER}, + #{item.expireAt,jdbcType=TIMESTAMP}, + #{item.nodeType,jdbcType=TINYINT}, + #{item.extAttrs,jdbcType=VARCHAR}, + #{item.contextPath,jdbcType=VARCHAR}, + #{item.createDt,jdbcType=TIMESTAMP} + ) + + UPDATE server_node rt, - ( - - SELECT - #{item.expireAt} AS expire_at, - #{item.contextPath} AS context_path, - #{item.hostId} AS host_id, - #{item.hostIp} AS host_ip - - ) tt - SET rt.expire_at = tt.expire_at, rt.context_path = tt.context_path, - WHERE rt.host_id = tt.host_id and rt.host_ip = tt.host_ip + ( + + SELECT + #{item.expireAt} AS expire_at, + #{item.contextPath} AS context_path, + #{item.hostId} AS host_id, + #{item.hostIp} AS host_ip + + ) tt + SET rt.expire_at = tt.expire_at, + rt.context_path = tt.context_path + WHERE rt.host_id = tt.host_id + AND rt.host_ip = tt.host_ip + diff --git a/easy-retry-datasource/easy-retry-oracle-datasource/src/main/resources/oracle/mapper/JobSummaryMapper.xml b/easy-retry-datasource/easy-retry-oracle-datasource/src/main/resources/oracle/mapper/JobSummaryMapper.xml index 47d3222c..d9118b7e 100644 --- a/easy-retry-datasource/easy-retry-oracle-datasource/src/main/resources/oracle/mapper/JobSummaryMapper.xml +++ b/easy-retry-datasource/easy-retry-oracle-datasource/src/main/resources/oracle/mapper/JobSummaryMapper.xml @@ -19,58 +19,42 @@ - - MERGE INTO job_summary dest - USING ( - - SELECT - #{item.namespaceId} AS namespace_id, - #{item.groupName} AS group_name, - #{item.businessId} AS business_id, - #{item.triggerAt} AS trigger_at, - #{item.systemTaskType} AS system_task_type, - #{item.successNum} AS success_num, - #{item.failNum} AS fail_num, - #{item.failReason} AS fail_reason, - #{item.stopNum} AS stop_num, - #{item.stopReason} AS stop_reason, - #{item.cancelNum} AS cancel_num, - #{item.cancelReason} AS cancel_reason - FROM DUAL - - ) src - ON (dest.business_id = src.business_id AND dest.trigger_at = src.trigger_at AND dest.system_task_type = src.system_task_type) - WHEN MATCHED THEN - UPDATE SET - dest.success_num = src.success_num, - dest.fail_num = src.fail_num, - dest.fail_reason = src.fail_reason, - dest.stop_num = src.stop_num, - dest.stop_reason = src.stop_reason, - dest.cancel_num = src.cancel_num, - dest.cancel_reason = src.cancel_reason - WHEN NOT MATCHED THEN - INSERT (namespace_id, group_name, business_id, trigger_at, system_task_type, - success_num,fail_num,fail_reason,stop_num,stop_reason, cancel_num,cancel_reason) - VALUES - - ( - #{item.namespaceId}, - #{item.groupName}, - #{item.businessId}, - #{item.triggerAt}, - #{item.systemTaskType}, - #{item.successNum}, - #{item.failNum}, - #{item.failReason}, - #{item.stopNum}, - #{item.stopReason}, - #{item.cancelNum}, - #{item.cancelReason} - ) - + + INSERT INTO job_summary (namespace_id, group_name, business_id, trigger_at, system_task_type, + success_num,fail_num,fail_reason,stop_num,stop_reason, cancel_num,cancel_reason) + + SELECT + #{item.namespaceId}, + #{item.groupName}, + #{item.businessId}, + #{item.triggerAt}, + #{item.systemTaskType}, + #{item.successNum}, + #{item.failNum}, + #{item.failReason}, + #{item.stopNum}, + #{item.stopReason}, + #{item.cancelNum}, + #{item.cancelReason} + FROM DUAL + + + + UPDATE job_summary + SET success_num = #{item.successNum}, + fail_num = #{item.failNum}, + fail_reason = #{item.failReason}, + stop_num = #{item.stopNum}, + stop_reason = #{item.stopReason}, + cancel_num = #{item.cancelNum}, + cancel_reason = #{item.cancelReason} + WHERE trigger_at = #{item.triggerAt} + AND business_id = #{item.businessId} + + + SELECT COALESCE(sum(running_num), 0) AS runningNum, @@ -75,8 +62,7 @@ SELECT * FROM ( - SELECT - trigger_at, running_num, finish_num, max_count_num, suspend_num + SELECT trigger_at, running_num, finish_num, max_count_num, suspend_num FROM retry_summary ${ew.customSqlSegment} ) diff --git a/easy-retry-datasource/easy-retry-oracle-datasource/src/main/resources/oracle/mapper/ServerNodeMapper.xml b/easy-retry-datasource/easy-retry-oracle-datasource/src/main/resources/oracle/mapper/ServerNodeMapper.xml index a1df2dfc..27f14909 100644 --- a/easy-retry-datasource/easy-retry-oracle-datasource/src/main/resources/oracle/mapper/ServerNodeMapper.xml +++ b/easy-retry-datasource/easy-retry-oracle-datasource/src/main/resources/oracle/mapper/ServerNodeMapper.xml @@ -19,40 +19,36 @@ id, group_name, context_path, host_id, host_ip, host_port, expire_at, node_type,create_dt,update_dt - - MERGE INTO server_node dest - USING( - - SELECT - #{item.namespaceId,jdbcType=VARCHAR} AS namespace_id, - #{item.groupName,jdbcType=VARCHAR} AS group_name, - #{item.hostId,jdbcType=VARCHAR} AS host_id, - #{item.hostIp,jdbcType=VARCHAR} AS host_ip, - #{item.hostPort,jdbcType=INTEGER} AS host_port, - #{item.expireAt,jdbcType=TIMESTAMP} AS expire_at, - #{item.nodeType,jdbcType=TINYINT} AS node_type, - #{item.extAttrs,jdbcType=VARCHAR} AS ext_attrs, - #{item.contextPath,jdbcType=VARCHAR} AS context_path, - #{item.createDt,jdbcType=TIMESTAMP} AS create_dt - FROM DUAL - - ) src - ON( dest.host_id = src.host_id AND dest.host_ip = src.host_ip) - WHEN MATCHED THEN - UPDATE SET expire_at = src.expire_at - WHEN NOT MATCHED THEN - INSERT (namespace_id, group_name, host_id, host_ip, host_port, - expire_at, node_type, ext_attrs, context_path, create_dt) - VALUES - - (#{item.namespaceId,jdbcType=VARCHAR}, #{item.groupName,jdbcType=VARCHAR}, #{item.hostId,jdbcType=VARCHAR}, #{item.hostIp,jdbcType=VARCHAR}, - #{item.hostPort,jdbcType=INTEGER}, #{item.expireAt,jdbcType=TIMESTAMP}, #{item.nodeType,jdbcType=TINYINT}, - #{item.extAttrs,jdbcType=VARCHAR}, #{item.contextPath,jdbcType=VARCHAR}, #{item.createDt,jdbcType=TIMESTAMP}) - - + + + INSERT INTO server_node (namespace_id, group_name, host_id, host_ip, host_port, + expire_at, node_type, ext_attrs, context_path, create_dt) + + SELECT + #{item.namespaceId,jdbcType=VARCHAR}, + #{item.groupName,jdbcType=VARCHAR}, + #{item.hostId,jdbcType=VARCHAR}, + #{item.hostIp,jdbcType=VARCHAR}, + #{item.hostPort,jdbcType=INTEGER}, + #{item.expireAt,jdbcType=TIMESTAMP}, + #{item.nodeType,jdbcType=TINYINT}, + #{item.extAttrs,jdbcType=VARCHAR}, + #{item.contextPath,jdbcType=VARCHAR}, + #{item.createDt,jdbcType=TIMESTAMP} + FROM DUAL + + + + UPDATE server_node + SET expire_at = #{item.expireAt}, + context_path = #{item.contextPath} + WHERE host_id = #{item.hostId} + AND host_ip = #{item.hostIp} + + + SELECT diff --git a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgresql/mapper/RetrySummaryMapper.xml b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgresql/mapper/RetrySummaryMapper.xml index 04f90469..3b6798f9 100644 --- a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgresql/mapper/RetrySummaryMapper.xml +++ b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgresql/mapper/RetrySummaryMapper.xml @@ -15,30 +15,49 @@ - - INSERT INTO - retry_summary (namespace_id, group_name, scene_name, trigger_at, running_num, finish_num, max_count_num, - suspend_num) + + INSERT INTO retry_summary (namespace_id, group_name, scene_name, trigger_at, + running_num, finish_num, max_count_num, suspend_num) VALUES - - ( - #{item.namespaceId}, - #{item.groupName}, - #{item.sceneName}, - #{item.triggerAt}, - #{item.runningNum}, - #{item.finishNum}, - #{item.maxCountNum}, - #{item.suspendNum} - ) + + ( + #{item.namespaceId}, + #{item.groupName}, + #{item.sceneName}, + #{item.triggerAt}, + #{item.runningNum}, + #{item.finishNum}, + #{item.maxCountNum}, + #{item.suspendNum} + ) - ON CONFLICT (namespace_id, group_name, scene_name, trigger_at) DO UPDATE - SET running_num = EXCLUDED.running_num, - finish_num = EXCLUDED.finish_num, - max_count_num = EXCLUDED.max_count_num, - suspend_num = EXCLUDED.suspend_num + + UPDATE retry_summary AS rt + SET running_num = tt.running_num, + finish_num = tt.finish_num, + max_count_num = tt.max_count_num, + suspend_num = tt.suspend_num + FROM ( + + SELECT + #{item.runningNum} AS running_num, + #{item.finishNum} AS finish_num, + #{item.maxCountNum} AS max_count_num, + #{item.suspendNum} AS suspend_num, + #{item.triggerAt} AS trigger_at, + #{item.sceneName} AS scene_name, + #{item.namespaceId} AS namespace_id, + #{item.groupName} AS group_name + + ) AS tt + WHERE rt.trigger_at = tt.trigger_at + AND rt.group_name = tt.group_name + AND rt.namespace_id = tt.namespace_id + AND rt.scene_name = tt.scene_name + + SELECT node_type as nodeType, count(*) as total diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobMapper.xml index 205020f0..d9d3a7a9 100644 --- a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobMapper.xml +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobMapper.xml @@ -28,14 +28,15 @@ UPDATE job - SET job.next_trigger_at = src.next_trigger_at - FROM job - JOIN ( - - SELECT - #{item.nextTriggerAt} AS next_trigger_at, - #{item.id} AS id - - ) AS src ON job.id = src.id; + SET next_trigger_at = src.next_trigger_at + FROM job AS dest + JOIN ( + + SELECT + #{item.nextTriggerAt} AS next_trigger_at, + #{item.id} AS id + + ) AS src + ON (dest.id = src.id) diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobSummaryMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobSummaryMapper.xml index 80f1db61..3e9d14ab 100644 --- a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobSummaryMapper.xml +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/JobSummaryMapper.xml @@ -19,47 +19,55 @@ - - MERGE INTO job_summary AS target - USING ( - VALUES - - ( - #{item.namespaceId}, - #{item.groupName}, - #{item.businessId}, - #{item.triggerAt}, - #{item.systemTaskType}, - #{item.successNum}, - #{item.failNum}, - #{item.failReason}, - #{item.stopNum}, - #{item.stopReason}, - #{item.cancelNum}, - #{item.cancelReason} - ) - - ) AS source (namespace_id, group_name, business_id, trigger_at, system_task_type, - success_num, fail_num, fail_reason, stop_num, stop_reason, cancel_num, cancel_reason) - ON target.namespace_id = source.namespace_id - AND target.business_id = source.business_id - WHEN MATCHED THEN - UPDATE SET - target.success_num = source.success_num, - target.fail_num = source.fail_num, - target.fail_reason = source.fail_reason, - target.stop_num = source.stop_num, - target.stop_reason = source.stop_reason, - target.cancel_num = source.cancel_num, - target.cancel_reason = source.cancel_reason - WHEN NOT MATCHED THEN - INSERT (namespace_id, group_name, business_id, trigger_at, system_task_type, - success_num, fail_num, fail_reason, stop_num, stop_reason, cancel_num, cancel_reason) - VALUES (source.namespace_id, source.group_name, source.business_id, source.trigger_at, source.system_task_type, - source.success_num, source.fail_num, source.fail_reason, source.stop_num, source.stop_reason, - source.cancel_num, source.cancel_reason); + + INSERT INTO job_summary (namespace_id, group_name, business_id, trigger_at, system_task_type, + success_num,fail_num,fail_reason,stop_num,stop_reason, cancel_num,cancel_reason) + VALUES + + ( + #{item.namespaceId}, + #{item.groupName}, + #{item.businessId}, + #{item.triggerAt}, + #{item.systemTaskType}, + #{item.successNum}, + #{item.failNum}, + #{item.failReason}, + #{item.stopNum}, + #{item.stopReason}, + #{item.cancelNum}, + #{item.cancelReason} + ) + + + UPDATE job_summary + SET success_num = src.success_num, + fail_num = src.fail_num, + fail_reason = src.fail_reason, + stop_num = src.stop_num, + stop_reason = src.stop_reason, + cancel_num = src.cancel_num, + cancel_reason = src.cancel_reason + FROM job_summary AS dest + JOIN ( + + SELECT + #{item.successNum} AS success_num, + #{item.failNum} AS fail_num, + #{item.failReason} AS fail_reason, + #{item.stopNum} AS stop_num, + #{item.stopReason} AS stop_reason, + #{item.cancelNum} AS cancel_num, + #{item.cancelReason} AS cancel_reason, + #{item.triggerAt} AS trigger_at, + #{item.businessId} AS business_id + + ) AS src + ON (dest.trigger_at = src.trigger_at AND dest.business_id = src.business_id) + + SELECT diff --git a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/ServerNodeMapper.xml b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/ServerNodeMapper.xml index a4b139db..4624032f 100644 --- a/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/ServerNodeMapper.xml +++ b/easy-retry-datasource/easy-retry-sqlserver-datasource/src/main/resources/sqlserver/mapper/ServerNodeMapper.xml @@ -20,33 +20,43 @@ id, namespace_id, group_name, context_path, host_id, host_ip, host_port, expire_at, node_type,create_dt,update_dt - - MERGE INTO server_node AS target - USING ( - VALUES + + INSERT INTO server_node (namespace_id, group_name, host_id, host_ip, host_port, + expire_at, node_type, ext_attrs, context_path, create_dt) + VALUES ( - #{item.namespaceId,jdbcType=VARCHAR}, #{item.groupName,jdbcType=VARCHAR}, - #{item.hostId,jdbcType=VARCHAR}, #{item.hostIp,jdbcType=VARCHAR}, #{item.hostPort,jdbcType=INTEGER}, - #{item.expireAt,jdbcType=TIMESTAMP}, #{item.nodeType,jdbcType=TINYINT}, #{item.extAttrs,jdbcType=VARCHAR}, - #{item.contextPath,jdbcType=VARCHAR}, #{item.createDt,jdbcType=TIMESTAMP} + #{item.namespaceId,jdbcType=VARCHAR}, + #{item.groupName,jdbcType=VARCHAR}, + #{item.hostId,jdbcType=VARCHAR}, + #{item.hostIp,jdbcType=VARCHAR}, + #{item.hostPort,jdbcType=INTEGER}, + #{item.expireAt,jdbcType=TIMESTAMP}, + #{item.nodeType,jdbcType=TINYINT}, + #{item.extAttrs,jdbcType=VARCHAR}, + #{item.contextPath,jdbcType=VARCHAR}, + #{item.createDt,jdbcType=TIMESTAMP} ) - ) AS source (namespace_id, group_name, host_id, host_ip, host_port, - expire_at, node_type, ext_attrs, context_path, create_dt) - ON target.namespace_id = source.namespace_id - AND target.group_name = source.group_name - AND target.host_id = source.host_id - WHEN MATCHED THEN - UPDATE SET - target.expire_at = source.expire_at, target.update_dt = GETDATE() - WHEN NOT MATCHED THEN - INSERT (namespace_id, group_name, host_id, host_ip, host_port, - expire_at, node_type, ext_attrs, context_path, create_dt, update_dt) - VALUES (source.namespace_id, source.group_name, source.host_id, source.host_ip, source.host_port, - source.expire_at, source.node_type, source.ext_attrs, source.context_path, source.create_dt, GETDATE()); + + UPDATE server_node + SET expire_at = src.expire_at, + context_path = src.context_path + FROM server_node AS dest + JOIN ( + + SELECT + #{item.expireAt} AS expire_at, + #{item.contextPath} AS context_path, + #{item.hostId} AS host_id, + #{item.hostIp} AS host_ip + + ) AS src + ON (dest.host_id = src.host_id AND dest.host_ip = src.host_ip) + +