Rename funcs and variables for Idx to Height.

The Db interface is intended to work with block heights as opposed to
specific database ids which may or may not be the same as the block
height.  This commits changes the function names to make that distinction
a little more clear.
This commit is contained in:
Dave Collins 2013-05-30 17:27:39 -05:00
parent bea4ccbeef
commit 7416e9a71d
4 changed files with 24 additions and 23 deletions

16
db.go
View file

@ -54,15 +54,15 @@ type Db interface {
// cache the underlying object if desired.
FetchBlockBySha(sha *btcwire.ShaHash) (blk *btcutil.Block, err error)
// FetchBlockShaByIdx returns a block hash based on its height in the
// blockchain.
FetchBlockShaByIdx(blkid int64) (sha *btcwire.ShaHash, err error)
// FetchBlockShaByHeight returns a block hash based on its height in the
// block chain.
FetchBlockShaByHeight(height int64) (sha *btcwire.ShaHash, err error)
// FetchIdxRange looks up a range of blocks by the start and ending
// FetchHeightRange looks up a range of blocks by the start and ending
// heights. Fetch is inclusive of the start height and exclusive of the
// ending height. To fetch all hashes from the start height until no
// more are present, use the special id `AllShas'.
FetchIdxRange(startid, endid int64) (rshalist []btcwire.ShaHash, err error)
FetchHeightRange(startHeight, endHeight int64) (rshalist []btcwire.ShaHash, err error)
// FetchTxAllBySha returns several pieces of data for a given
// transaction hash.
@ -85,7 +85,7 @@ type Db interface {
// InsertBlock inserts raw block and transaction data from a block
// into the database.
InsertBlock(block *btcutil.Block) (blockid int64, err error)
InsertBlock(block *btcutil.Block) (height int64, err error)
// InsertBlockData stores a block hash and its associated data block
// with the given previous hash and protocol version into the database.
@ -93,7 +93,7 @@ type Db interface {
// InsertTx stores a transaction hash and its associated data into the
// database.
InsertTx(txsha *btcwire.ShaHash, blockidx int64, txoff int, txlen int, usedbuf []byte) (err error)
InsertTx(txsha *btcwire.ShaHash, blockHeight int64, txoff int, txlen int, usedbuf []byte) (err error)
// InvalidateBlockCache releases all cached blocks.
InvalidateBlockCache()
@ -109,7 +109,7 @@ type Db interface {
// NewestSha provides an interface to quickly look up the hash of
// the most recent (end) block of the block chain.
NewestSha() (sha *btcwire.ShaHash, blkid int64, err error)
NewestSha() (sha *btcwire.ShaHash, height int64, err error)
// RollbackClose discards the recent database changes to the previously
// saved data at last Sync and closes the database.

View file

@ -151,13 +151,14 @@ func (db *SqliteDb) blkExistsSha(sha *btcwire.ShaHash) bool {
return true
}
// FetchBlockShaByIdx returns a block sha based on its height in the blockchain.
func (db *SqliteDb) FetchBlockShaByIdx(blkid int64) (sha *btcwire.ShaHash, err error) {
// FetchBlockShaByHeight returns a block hash based on its height in the
// block chain.
func (db *SqliteDb) FetchBlockShaByHeight(height int64) (sha *btcwire.ShaHash, err error) {
var row *sql.Row
db.dbLock.Lock()
defer db.dbLock.Unlock()
blockidx := blkid + 1 // skew between btc blockid and sql
blockidx := height + 1 // skew between btc blockid and sql
row = db.blkStmts[blkFetchIdx].QueryRow(blockidx)
@ -171,21 +172,21 @@ func (db *SqliteDb) FetchBlockShaByIdx(blkid int64) (sha *btcwire.ShaHash, err e
return &shaval, nil
}
// FetchIdxRange looks up a range of block by the start and ending ids.
// Fetch is inclusive of the start id and exclusive of the ending id. If the
// special id `AllShas' is provided as endid then FetchIdxRange will fetch all
// shas from startid until no more shas are present.
func (db *SqliteDb) FetchIdxRange(startid, endid int64) (rshalist []btcwire.ShaHash, err error) {
// FetchHeightRange looks up a range of blocks by the start and ending
// heights. Fetch is inclusive of the start height and exclusive of the
// ending height. To fetch all hashes from the start height until no
// more are present, use the special id `AllShas'.
func (db *SqliteDb) FetchHeightRange(startHeight, endHeight int64) (rshalist []btcwire.ShaHash, err error) {
db.dbLock.Lock()
defer db.dbLock.Unlock()
startidx := startid + 1 // skew between btc blockid and sql
startidx := startHeight + 1 // skew between btc block height and sql
var endidx int64
if endid == btcdb.AllShas {
if endHeight == btcdb.AllShas {
endidx = btcdb.AllShas // no skew if asking for all
} else {
endidx = endid + 1 // skew between btc blockid and sql
endidx = endHeight + 1 // skew between btc block height and sql
}
rows, err := db.blkStmts[blkFetchIdxList].Query(startidx, endidx)
if err != nil {
@ -209,7 +210,7 @@ func (db *SqliteDb) FetchIdxRange(startid, endid int64) (rshalist []btcwire.ShaH
if err == nil {
rshalist = shalist
}
log.Tracef("FetchIdxRange idx %v %v returned %v shas err %v", startid, endid, len(shalist), err)
log.Tracef("FetchIdxRange idx %v %v returned %v shas err %v", startHeight, endHeight, len(shalist), err)
return
}

View file

@ -141,7 +141,7 @@ func testFetch(t *testing.T, db btcdb.Db, shas []btcwire.ShaHash,
}
// Fetch the sha by index and ensure it matches.
tsha, err := db.FetchBlockShaByIdx(int64(i))
tsha, err := db.FetchBlockShaByHeight(int64(i))
if err != nil {
t.Errorf("can't fetch sha at index %d: %v", i, err)
continue
@ -174,7 +174,7 @@ func testFetch(t *testing.T, db btcdb.Db, shas []btcwire.ShaHash,
for _, test := range fetchIdxTests {
t.Logf("numSha: %d - Fetch from %d to %d\n", numShas, test.start, test.end)
if shalist, err := db.FetchIdxRange(test.start, test.end); err == nil {
if shalist, err := db.FetchHeightRange(test.start, test.end); err == nil {
compareArray(t, shalist, test.exp, test.test, sync)
} else {
t.Errorf("failed to fetch index range for %s (%s)",

View file

@ -137,7 +137,7 @@ func (db *SqliteDb) FetchTxAllBySha(txsha *btcwire.ShaHash) (rtx *btcwire.MsgTx,
return
}
blksha, err := db.FetchBlockShaByIdx(bidx)
blksha, err := db.FetchBlockShaByHeight(bidx)
if err != nil {
log.Warnf("block idx lookup %v to %v", bidx, err)
return