@@ -294,15 +294,15 @@ impl DBConfig {
294
294
} ) ;
295
295
match epoch_id {
296
296
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 ,
306
306
}
307
307
}
308
308
}
@@ -654,7 +654,7 @@ impl<'a> DerefMut for ChainstateTx<'a> {
654
654
}
655
655
}
656
656
657
- pub const CHAINSTATE_VERSION : & str = "8 " ;
657
+ pub const CHAINSTATE_VERSION : & str = "9 " ;
658
658
659
659
const CHAINSTATE_INITIAL_SCHEMA : & [ & str ] = & [
660
660
"PRAGMA foreign_keys = ON;" ,
@@ -853,6 +853,15 @@ const CHAINSTATE_SCHEMA_3: &[&str] = &[
853
853
"# ,
854
854
] ;
855
855
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
+
856
865
const CHAINSTATE_INDEXES : & [ & str ] = & [
857
866
"CREATE INDEX IF NOT EXISTS index_block_hash_to_primary_key ON block_headers(index_block_hash,consensus_hash,block_hash);" ,
858
867
"CREATE INDEX IF NOT EXISTS block_headers_hash_index ON block_headers(block_hash,block_height);" ,
@@ -877,6 +886,7 @@ const CHAINSTATE_INDEXES: &[&str] = &[
877
886
"CREATE INDEX IF NOT EXISTS index_block_header_by_affirmation_weight ON block_headers(affirmation_weight);" ,
878
887
"CREATE INDEX IF NOT EXISTS index_block_header_by_height_and_affirmation_weight ON block_headers(block_height,affirmation_weight);" ,
879
888
"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);" ,
880
890
] ;
881
891
882
892
pub use stacks_common:: consts:: MINER_REWARD_MATURITY ;
@@ -1104,6 +1114,14 @@ impl StacksChainState {
1104
1114
tx. execute_batch ( cmd) ?;
1105
1115
}
1106
1116
}
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
+ }
1107
1125
_ => {
1108
1126
error ! (
1109
1127
"Invalid chain state database: expected version = {}, got {}" ,
0 commit comments