Defect #23318 » mysql-deadlock-02.diff
| lib/redmine/nested_set/issue_nested_set.rb | ||
|---|---|---|
| 158 | 158 |
self.class.reorder(:id).where(:root_id => sets_to_lock).lock(lock).ids |
| 159 | 159 |
else |
| 160 | 160 |
sets_to_lock = [id, parent_id].compact |
| 161 |
self.class.reorder(:id).where("root_id IN (SELECT root_id FROM #{self.class.table_name} WHERE id IN (?))", sets_to_lock).lock.ids
|
|
| 161 |
if Redmine::Database.postgresql? |
|
| 162 |
self.class.reorder(:id). |
|
| 163 |
where("root_id IN (SELECT root_id FROM #{self.class.table_name} WHERE id IN (?))", sets_to_lock).
|
|
| 164 |
lock.ids |
|
| 165 |
else |
|
| 166 |
inner_join_statement = self.class.select(:root_id).where(id: sets_to_lock).distinct(:root_id).to_sql |
|
| 167 |
self.class.reorder(:id). |
|
| 168 |
joins("INNER JOIN (#{inner_join_statement}) as i2 ON #{self.class.table_name}.root_id = i2.root_id").
|
|
| 169 |
lock.ids |
|
| 170 |
end |
|
| 162 | 171 |
end |
| 163 | 172 |
end |
| 164 | 173 | |
- « Previous
- 1
- 2
- Next »