Skip to content

Commit e979816

Browse files
committed
add index for processable_block in staging_blocks
1 parent 69b89a1 commit e979816

File tree

1 file changed

+28
-10
lines changed
  • stackslib/src/chainstate/stacks/db

1 file changed

+28
-10
lines changed

stackslib/src/chainstate/stacks/db/mod.rs

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -294,15 +294,15 @@ impl DBConfig {
294294
});
295295
match epoch_id {
296296
StacksEpochId::Epoch10 => true,
297-
StacksEpochId::Epoch20 => version_u32 >= 1 && version_u32 <= 8,
298-
StacksEpochId::Epoch2_05 => version_u32 >= 2 && version_u32 <= 8,
299-
StacksEpochId::Epoch21 => version_u32 >= 3 && version_u32 <= 8,
300-
StacksEpochId::Epoch22 => version_u32 >= 3 && version_u32 <= 8,
301-
StacksEpochId::Epoch23 => version_u32 >= 3 && version_u32 <= 8,
302-
StacksEpochId::Epoch24 => version_u32 >= 3 && version_u32 <= 8,
303-
StacksEpochId::Epoch25 => version_u32 >= 3 && version_u32 <= 8,
304-
StacksEpochId::Epoch30 => version_u32 >= 3 && version_u32 <= 8,
305-
StacksEpochId::Epoch31 => version_u32 >= 3 && version_u32 <= 8,
297+
StacksEpochId::Epoch20 => version_u32 >= 1 && version_u32 <= 9,
298+
StacksEpochId::Epoch2_05 => version_u32 >= 2 && version_u32 <= 9,
299+
StacksEpochId::Epoch21 => version_u32 >= 3 && version_u32 <= 9,
300+
StacksEpochId::Epoch22 => version_u32 >= 3 && version_u32 <= 9,
301+
StacksEpochId::Epoch23 => version_u32 >= 3 && version_u32 <= 9,
302+
StacksEpochId::Epoch24 => version_u32 >= 3 && version_u32 <= 9,
303+
StacksEpochId::Epoch25 => version_u32 >= 3 && version_u32 <= 9,
304+
StacksEpochId::Epoch30 => version_u32 >= 3 && version_u32 <= 9,
305+
StacksEpochId::Epoch31 => version_u32 >= 3 && version_u32 <= 9,
306306
}
307307
}
308308
}
@@ -654,7 +654,7 @@ impl<'a> DerefMut for ChainstateTx<'a> {
654654
}
655655
}
656656

657-
pub const CHAINSTATE_VERSION: &str = "8";
657+
pub const CHAINSTATE_VERSION: &str = "9";
658658

659659
const CHAINSTATE_INITIAL_SCHEMA: &[&str] = &[
660660
"PRAGMA foreign_keys = ON;",
@@ -853,6 +853,15 @@ const CHAINSTATE_SCHEMA_3: &[&str] = &[
853853
"#,
854854
];
855855

856+
const CHAINSTATE_SCHEMA_4: &[&str] = &[
857+
// schema change is JUST a new index, so just bump db_config.version
858+
// and add the index to `CHAINSTATE_INDEXES` (which gets re-execed
859+
// on every schema change)
860+
r#"
861+
UPDATE db_config SET version = "9";
862+
"#,
863+
];
864+
856865
const CHAINSTATE_INDEXES: &[&str] = &[
857866
"CREATE INDEX IF NOT EXISTS index_block_hash_to_primary_key ON block_headers(index_block_hash,consensus_hash,block_hash);",
858867
"CREATE INDEX IF NOT EXISTS block_headers_hash_index ON block_headers(block_hash,block_height);",
@@ -877,6 +886,7 @@ const CHAINSTATE_INDEXES: &[&str] = &[
877886
"CREATE INDEX IF NOT EXISTS index_block_header_by_affirmation_weight ON block_headers(affirmation_weight);",
878887
"CREATE INDEX IF NOT EXISTS index_block_header_by_height_and_affirmation_weight ON block_headers(block_height,affirmation_weight);",
879888
"CREATE INDEX IF NOT EXISTS index_headers_by_consensus_hash ON block_headers(consensus_hash);",
889+
"CREATE INDEX IF NOT EXISTS processable_block ON staging_blocks(processed, orphaned, attachable);",
880890
];
881891

882892
pub use stacks_common::consts::MINER_REWARD_MATURITY;
@@ -1104,6 +1114,14 @@ impl StacksChainState {
11041114
tx.execute_batch(cmd)?;
11051115
}
11061116
}
1117+
"8" => {
1118+
info!(
1119+
"Migrating chainstate schema from version 8 to 9: add index for staging_blocks"
1120+
);
1121+
for cmd in CHAINSTATE_SCHEMA_4.iter() {
1122+
tx.execute_batch(cmd)?;
1123+
}
1124+
}
11071125
_ => {
11081126
error!(
11091127
"Invalid chain state database: expected version = {}, got {}",

0 commit comments

Comments
 (0)