Skip to content

Commit 73435cb

Browse files
authored
Merge pull request #2821 from nervosnetwork/develop
Deploy to testnet
2 parents 94c7db1 + ef538fd commit 73435cb

File tree

1 file changed

+35
-6
lines changed

1 file changed

+35
-6
lines changed

app/models/ckb_sync/new_node_data_processor.rb

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -883,12 +883,41 @@ def build_cells_and_locks!(
883883

884884
CellInput.import cell_inputs_attributes, validate: false, batch_size: 500
885885
if prev_cell_outputs_attributes.present?
886-
cell_ouput_ids = prev_cell_outputs_attributes.pluck(:id)
887-
CellOutput.live.where(id: cell_ouput_ids).update_all(status: :dead)
888886
prev_cell_outputs_attributes.each_slice(500) do |batch|
889-
CellOutput.upsert_all(batch,
890-
unique_by: %i[tx_hash cell_index status],
891-
record_timestamps: true)
887+
updates = batch.map do |attr|
888+
[attr[:id], attr.slice(:status, :consumed_by_id, :consumed_block_timestamp)]
889+
end.to_h
890+
891+
case_clauses = { status: [], consumed_by_id: [], consumed_block_timestamp: [] }
892+
ids = []
893+
894+
updates.each do |id, attrs|
895+
ids << id
896+
attrs.each do |column, value|
897+
case_clauses[column] << "WHEN #{id} THEN '#{ActiveRecord::Base.connection.quote(value)}'"
898+
end
899+
end
900+
901+
set_clauses = case_clauses.map do |column, clauses|
902+
if clauses.any?
903+
" #{column} = CASE id\n #{clauses.join("\n ")}\n ELSE #{column}\n END"
904+
else
905+
nil
906+
end
907+
end.compact.join(",\n")
908+
909+
id_list = ids.join(', ')
910+
911+
sql = <<-SQL
912+
UPDATE cell_outputs
913+
SET
914+
#{set_clauses}
915+
WHERE id IN (#{id_list})
916+
SQL
917+
918+
# puts sql
919+
920+
ActiveRecord::Base.connection.execute(sql)
892921
end
893922
end
894923

@@ -1277,7 +1306,7 @@ def cell_input_attributes(input, ckb_transaction_id, local_block_id,
12771306
cell_type: previous_output.cell_type,
12781307
tx_hash: input.previous_output.tx_hash,
12791308
cell_index: input.previous_output.index,
1280-
status: "dead",
1309+
status: 1,
12811310
consumed_by_id: ckb_transaction_id,
12821311
consumed_block_timestamp: @local_block.timestamp,
12831312
},

0 commit comments

Comments
 (0)