fix: improve rewrite block command

This commit is contained in:
Ludo Galabru
2023-04-17 10:33:00 -04:00
parent abf70e7204
commit d52477142a
2 changed files with 29 additions and 3 deletions

View File

@@ -74,6 +74,13 @@ pub fn initialize_hord_db(path: &PathBuf, ctx: &Context) -> Connection {
) {
ctx.try_log(|logger| slog::error!(logger, "{}", e.to_string()));
}
if let Err(e) = conn.execute(
"CREATE INDEX IF NOT EXISTS index_inscriptions_on_block_height ON inscriptions(block_height);",
[],
) {
ctx.try_log(|logger| slog::error!(logger, "{}", e.to_string()));
}
conn
}
@@ -512,6 +519,25 @@ pub fn find_latest_inscription_block_height(
Ok(None)
}
pub fn find_latest_inscription_number_at_block_height(
block_height: &u64,
inscriptions_db_conn: &Connection,
_ctx: &Context,
) -> Result<Option<u64>, String> {
let args: &[&dyn ToSql] = &[&block_height.to_sql().unwrap()];
let mut stmt = inscriptions_db_conn
.prepare(
"SELECT inscription_number FROM inscriptions WHERE block_height < ? ORDER BY inscription_number DESC LIMIT 1",
)
.unwrap();
let mut rows = stmt.query(args).unwrap();
while let Ok(Some(row)) = rows.next() {
let inscription_number: u64 = row.get(0).unwrap();
return Ok(Some(inscription_number));
}
Ok(None)
}
pub fn find_latest_inscription_number(
inscriptions_db_conn: &Connection,
_ctx: &Context,

View File

@@ -20,7 +20,7 @@ use crate::{
hord::{
db::{
find_inscription_with_ordinal_number, find_inscriptions_at_wached_outpoint,
find_latest_inscription_number, insert_entry_in_blocks,
insert_entry_in_blocks,
retrieve_satoshi_point_using_local_storage, store_new_inscription,
update_transfered_inscription, CompactedBlock,
},
@@ -31,7 +31,7 @@ use crate::{
use self::db::{
find_inscription_with_id, open_readonly_hord_db_conn_rocks_db, remove_entry_from_blocks,
remove_entry_from_inscriptions, TraversalResult, WatchedSatpoint,
remove_entry_from_inscriptions, TraversalResult, WatchedSatpoint, find_latest_inscription_number_at_block_height,
};
pub fn get_inscriptions_revealed_in_block(
@@ -249,7 +249,7 @@ pub fn update_storage_and_augment_bitcoin_block_with_inscription_reveal_data(
ordinals_events_indexes_to_discard.push_front(ordinal_event_index);
} else {
inscription.inscription_number =
match find_latest_inscription_number(&inscription_db_conn, &ctx) {
match find_latest_inscription_number_at_block_height(&block.block_identifier.index, &inscription_db_conn, &ctx) {
Ok(None) => 0,
Ok(Some(inscription_number)) => inscription_number + 1,
Err(e) => {