fix deadlock
This commit is contained in:
parent
46ff036c38
commit
8df92fde73
1 changed files with 65 additions and 14 deletions
|
|
@ -139,21 +139,55 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<update id="updateIdCachedData" parameterType="string">
|
<update id="updateIdCachedData" parameterType="string">
|
||||||
update signals_phones_map dst
|
WITH src AS (SELECT DISTINCT ON (phone) phone,
|
||||||
set ser_num = src.ser_num,
|
ser_num,
|
||||||
id_type = src.id_type
|
id_type
|
||||||
FROM json_to_recordset(#{json}::json) AS src(
|
FROM json_to_recordset(#{json}::json) AS src(
|
||||||
phone bigint,
|
phone bigint,
|
||||||
ser_num varchar(255),
|
ser_num varchar(255),
|
||||||
id_type varchar(255)
|
id_type varchar(255)
|
||||||
)
|
)
|
||||||
where dst.phone = src.phone;
|
order by phone),
|
||||||
|
|
||||||
|
to_lock AS (select dst.id
|
||||||
|
from signals_phones_map dst
|
||||||
|
join src on src.phone = dst.phone
|
||||||
|
order by dst.phone
|
||||||
|
for update)
|
||||||
|
|
||||||
|
update signals_phones_map dst
|
||||||
|
set ser_num = src.ser_num,
|
||||||
|
id_type = src.id_type
|
||||||
|
FROM src
|
||||||
|
where dst.phone = src.phone
|
||||||
|
AND dst.id in (select id from to_lock);
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="updateNameCachedData" parameterType="string">
|
<update id="updateNameCachedData" parameterType="string">
|
||||||
|
WITH src AS (SELECT DISTINCT ON (phone) fid,
|
||||||
|
phone,
|
||||||
|
name_1,
|
||||||
|
first,
|
||||||
|
middle,
|
||||||
|
birth_dt
|
||||||
|
FROM json_to_recordset(#{json}::json) AS src(
|
||||||
|
fid int,
|
||||||
|
phone bigint,
|
||||||
|
name_1 varchar(255),
|
||||||
|
first varchar(255),
|
||||||
|
middle varchar(255),
|
||||||
|
birth_dt timestamp
|
||||||
|
)
|
||||||
|
order by phone),
|
||||||
|
|
||||||
|
to_lock AS (select dst.id
|
||||||
|
from signals_phones_map dst
|
||||||
|
join src on src.phone = dst.phone
|
||||||
|
order by dst.phone
|
||||||
|
for update)
|
||||||
|
|
||||||
update signals_phones_map dst
|
update signals_phones_map dst
|
||||||
set
|
set fid = src.fid,
|
||||||
fid = src.fid,
|
|
||||||
name_1 = src.name_1,
|
name_1 = src.name_1,
|
||||||
first = src.first,
|
first = src.first,
|
||||||
middle = src.middle,
|
middle = src.middle,
|
||||||
|
|
@ -167,10 +201,26 @@
|
||||||
middle varchar(255),
|
middle varchar(255),
|
||||||
birth_dt timestamp
|
birth_dt timestamp
|
||||||
)
|
)
|
||||||
where dst.phone = src.phone;
|
where dst.phone = src.phone
|
||||||
|
AND dst.id in (select id from to_lock);
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="updateFlagCachedData" parameterType="string">
|
<update id="updateFlagCachedData" parameterType="string">
|
||||||
|
WITH src AS (SELECT DISTINCT ON (phone) phone,
|
||||||
|
flag_debt5000,
|
||||||
|
flag_90_12
|
||||||
|
FROM json_to_recordset(#{json}::json) AS src(
|
||||||
|
phone bigint,
|
||||||
|
flag_debt5000 smallint,
|
||||||
|
flag_90_12 smallint
|
||||||
|
)
|
||||||
|
order by phone),
|
||||||
|
to_lock AS (select dst.id
|
||||||
|
from signals_phones_map dst
|
||||||
|
join src on src.phone = dst.phone
|
||||||
|
order by dst.phone
|
||||||
|
for update)
|
||||||
|
|
||||||
update signals_phones_map dst
|
update signals_phones_map dst
|
||||||
set flag_debt5000 = src.flag_debt5000,
|
set flag_debt5000 = src.flag_debt5000,
|
||||||
flag_90_12 = src.flag_90_12,
|
flag_90_12 = src.flag_90_12,
|
||||||
|
|
@ -180,7 +230,8 @@
|
||||||
flag_debt5000 smallint,
|
flag_debt5000 smallint,
|
||||||
flag_90_12 smallint
|
flag_90_12 smallint
|
||||||
)
|
)
|
||||||
where dst.phone = src.phone;
|
where dst.phone = src.phone
|
||||||
|
AND dst.id in (select id from to_lock);
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="setFidJson" parameterType="string">
|
<update id="setFidJson" parameterType="string">
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue