@@ -35,7 +35,7 @@ func NewMergeJoinPlan(tx *tx.Transaction, p1, p2 Plan, fieldName1, fieldName2 st
3535}
3636
3737func (m * MergeJoinPlan ) Open () (scan.Scan , error ) {
38- s1 , err := m .p1 .Open ()
38+ rawS1 , err := m .p1 .Open ()
3939 if err != nil {
4040 return nil , err
4141 }
@@ -44,6 +44,10 @@ func (m *MergeJoinPlan) Open() (scan.Scan, error) {
4444 if err != nil {
4545 return nil , err
4646 }
47+ s1 , ok := rawS1 .(* query.SortScan )
48+ if ! ok {
49+ return nil , fmt .Errorf ("failed to cast rawS1(%v) to *query.SortScan" , rawS1 )
50+ }
4751 s2 , ok := rawS2 .(* query.SortScan )
4852 if ! ok {
4953 return nil , fmt .Errorf ("failed to cast rawS2(%v) to *query.SortScan" , rawS2 )
@@ -52,8 +56,16 @@ func (m *MergeJoinPlan) Open() (scan.Scan, error) {
5256 return query .NewMergeJoinScan (s1 , s2 , m .fieldName1 , m .fieldName2 ), nil
5357}
5458
55- func (m * MergeJoinPlan ) BlocksAccessed () int {
56- return m .p1 .BlocksAccessed () + m .p2 .BlocksAccessed ()
59+ func (m * MergeJoinPlan ) BlocksAccessed () (int , error ) {
60+ p1BlockAccesses , err := m .p1 .BlocksAccessed ()
61+ if err != nil {
62+ return 0 , err
63+ }
64+ p2BlockAccesses , err := m .p2 .BlocksAccessed ()
65+ if err != nil {
66+ return 0 , err
67+ }
68+ return p1BlockAccesses + p2BlockAccesses , nil
5769}
5870
5971func (m * MergeJoinPlan ) RecordsOutput () int {
0 commit comments