Skip to content

Commit

Permalink
use one query for querying transactions in a block
Browse files Browse the repository at this point in the history
  • Loading branch information
chris124567 committed Jan 12, 2024
1 parent dade90e commit cc9a676
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions persist/sqlite/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,22 +109,30 @@ func (s *Store) BlockByID(id types.BlockID) (types.Block, error) {
}

{
rows, err := s.query("SELECT transaction_id FROM block_transactions WHERE block_id = ? ORDER BY block_order", encode(id))
rows, err := s.query(`
SELECT block_transactions.block_order, arbitrary_data.data
FROM block_transactions
LEFT JOIN arbitrary_data ON block_transactions.transaction_id = arbitrary_data.transaction_id
WHERE block_transactions.block_id = ?
ORDER BY block_transactions.block_order
`, encode(id))
if err != nil {
return types.Block{}, err
}
defer rows.Close()

var txnID int64
for rows.Next() {
if err := rows.Scan(&txnID); err != nil {
var data []byte
var blockOrder int
if err := rows.Scan(&blockOrder, &data); err != nil {
return types.Block{}, err
}
txn, err := s.transactionByID(txnID)
if err != nil {
return types.Block{}, err
for len(result.Transactions) <= blockOrder {
result.Transactions = append(result.Transactions, types.Transaction{})
}
if data != nil {
result.Transactions[blockOrder].ArbitraryData = append(result.Transactions[blockOrder].ArbitraryData, data)
}
result.Transactions = append(result.Transactions, txn)
}
}

Expand Down

0 comments on commit cc9a676

Please sign in to comment.