From 8bf37acc2e78a96c9de37846293f2adafd6e8682 Mon Sep 17 00:00:00 2001 From: perekopskiy <53865202+perekopskiy@users.noreply.github.com> Date: Wed, 20 Mar 2024 12:12:32 +0200 Subject: [PATCH] fix(dal): correct `tx_index_in_l1_batch` in `get_vm_events_for_l1_batch` (#1463) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What ❔ Fix calculation for `tx_index_in_l1_batch` in `get_vm_events_for_l1_batch` method. ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `zk fmt` and `zk lint`. - [ ] Spellcheck has been run via `zk spellcheck`. - [ ] Linkcheck has been run via `zk linkcheck`. --- ...6da956727233a36e018fe5c0651995b876053a6a054.json} | 10 ++++++++-- core/lib/dal/src/events_dal.rs | 12 ++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) rename core/lib/dal/.sqlx/{query-de55102189196905a7dadb5a8b599acee63cae615e16007cccb0ed0cbe903467.json => query-26bc9b315c4c57bcff1f46da956727233a36e018fe5c0651995b876053a6a054.json} (64%) diff --git a/core/lib/dal/.sqlx/query-de55102189196905a7dadb5a8b599acee63cae615e16007cccb0ed0cbe903467.json b/core/lib/dal/.sqlx/query-26bc9b315c4c57bcff1f46da956727233a36e018fe5c0651995b876053a6a054.json similarity index 64% rename from core/lib/dal/.sqlx/query-de55102189196905a7dadb5a8b599acee63cae615e16007cccb0ed0cbe903467.json rename to core/lib/dal/.sqlx/query-26bc9b315c4c57bcff1f46da956727233a36e018fe5c0651995b876053a6a054.json index 24fd849f8a96..8653732e45c1 100644 --- a/core/lib/dal/.sqlx/query-de55102189196905a7dadb5a8b599acee63cae615e16007cccb0ed0cbe903467.json +++ b/core/lib/dal/.sqlx/query-26bc9b315c4c57bcff1f46da956727233a36e018fe5c0651995b876053a6a054.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n SELECT\n address,\n topic1,\n topic2,\n topic3,\n topic4,\n value\n FROM\n events\n WHERE\n miniblock_number BETWEEN $1 AND $2\n ORDER BY\n miniblock_number ASC,\n event_index_in_block ASC\n ", + "query": "\n SELECT\n address,\n topic1,\n topic2,\n topic3,\n topic4,\n value,\n event_index_in_tx\n FROM\n events\n WHERE\n miniblock_number BETWEEN $1 AND $2\n ORDER BY\n miniblock_number ASC,\n event_index_in_block ASC\n ", "describe": { "columns": [ { @@ -32,6 +32,11 @@ "ordinal": 5, "name": "value", "type_info": "Bytea" + }, + { + "ordinal": 6, + "name": "event_index_in_tx", + "type_info": "Int4" } ], "parameters": { @@ -46,8 +51,9 @@ false, false, false, + false, false ] }, - "hash": "de55102189196905a7dadb5a8b599acee63cae615e16007cccb0ed0cbe903467" + "hash": "26bc9b315c4c57bcff1f46da956727233a36e018fe5c0651995b876053a6a054" } diff --git a/core/lib/dal/src/events_dal.rs b/core/lib/dal/src/events_dal.rs index 1300108021c6..f8ab1ed7b67f 100644 --- a/core/lib/dal/src/events_dal.rs +++ b/core/lib/dal/src/events_dal.rs @@ -343,6 +343,7 @@ impl EventsDal<'_, '_> { else { return Ok(None); }; + let mut tx_index_in_l1_batch = -1; let events = sqlx::query!( r#" SELECT @@ -351,7 +352,8 @@ impl EventsDal<'_, '_> { topic2, topic3, topic4, - value + value, + event_index_in_tx FROM events WHERE @@ -368,8 +370,7 @@ impl EventsDal<'_, '_> { .fetch_all(self.storage) .await? .into_iter() - .enumerate() - .map(|(index_in_l1_batch, row)| { + .map(|row| { let indexed_topics = vec![row.topic1, row.topic2, row.topic3, row.topic4] .into_iter() .filter_map(|topic| { @@ -380,8 +381,11 @@ impl EventsDal<'_, '_> { } }) .collect(); + if row.event_index_in_tx == 0 { + tx_index_in_l1_batch += 1; + } VmEvent { - location: (l1_batch_number, index_in_l1_batch as u32), + location: (l1_batch_number, tx_index_in_l1_batch as u32), address: Address::from_slice(&row.address), indexed_topics, value: row.value,