@@ -35,7 +35,7 @@ use crate::chainstate::stacks::{Error as ChainstateError, StacksBlock, StacksBlo
35
35
use crate :: stacks_common:: codec:: StacksMessageCodec ;
36
36
use crate :: util_lib:: db:: {
37
37
query_int, query_row, query_row_columns, query_row_panic, query_rows, sqlite_open,
38
- tx_begin_immediate, u64_to_sql, DBConn , Error as DBError , FromRow ,
38
+ table_exists , tx_begin_immediate, u64_to_sql, DBConn , Error as DBError , FromRow ,
39
39
} ;
40
40
41
41
/// The means by which a block is obtained.
@@ -666,13 +666,17 @@ impl StacksChainState {
666
666
pub fn get_nakamoto_staging_blocks_db_version (
667
667
conn : & Connection ,
668
668
) -> Result < u32 , ChainstateError > {
669
+ let db_version_exists = table_exists ( & conn, "db_version" ) ?;
670
+ if !db_version_exists {
671
+ return Ok ( 1 ) ;
672
+ }
669
673
let qry = "SELECT version FROM db_version ORDER BY version DESC LIMIT 1" ;
670
674
let args = NO_PARAMS ;
671
675
let version: Option < i64 > = match query_row ( & conn, qry, args) {
672
676
Ok ( x) => x,
673
677
Err ( e) => {
674
678
debug ! ( "Failed to get Nakamoto staging blocks DB version: {:?}" , & e) ;
675
- return Ok ( 1 ) ;
679
+ return Err ( ChainstateError :: DBError ( DBError :: Corruption ) ) ;
676
680
}
677
681
} ;
678
682
@@ -684,7 +688,7 @@ impl StacksChainState {
684
688
}
685
689
None => {
686
690
debug ! ( "No version present in Nakamoto staging blocks DB; defaulting to 1" ) ;
687
- Ok ( 1 )
691
+ Err ( ChainstateError :: DBError ( DBError :: Corruption ) )
688
692
}
689
693
}
690
694
}
0 commit comments