Skip to content

Commit 0021a4f

Browse files
committed
change signature of MultiBufferProductPlan
1 parent 644f129 commit 0021a4f

1 file changed

Lines changed: 17 additions & 3 deletions

File tree

plan/multi_buffer_product_plan.go

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,26 @@ func (m *MultiBufferProductPlan) copyRecordsFrom(p Plan) (*query.TempTable, erro
8989
return tt, nil
9090
}
9191

92-
func (m *MultiBufferProductPlan) BlocksAccessed() int {
92+
func (m *MultiBufferProductPlan) BlocksAccessed() (int, error) {
9393
// this guesses at the # of chunks
9494
availabble := m.tx.AvailableBuffs()
95-
size := NewMaterializePlan(m.tx, m.rhs).BlocksAccessed()
95+
size, err := NewMaterializePlan(m.tx, m.rhs).BlocksAccessed()
96+
if err != nil {
97+
return 0, fmt.Errorf("failed to calculate MaterializedPlan's block access in MultiBufferProductPlan#BlockAccess: %w", err)
98+
}
9699
numChunks := size / int(availabble)
97-
return m.rhs.BlocksAccessed() + (m.lhs.BlocksAccessed() * numChunks)
100+
101+
rhsBlockAccesses, err := m.rhs.BlocksAccessed()
102+
if err != nil {
103+
return 0, fmt.Errorf("failed to calculate rhs block access in MultiBufferProductPlan#BlockAccess: %w", err)
104+
}
105+
106+
lhsBlockAccesses, err := m.lhs.BlocksAccessed()
107+
if err != nil {
108+
return 0, fmt.Errorf("failed to calculate lhs block access in MultiBufferProductPlan#BlockAccess: %w", err)
109+
}
110+
111+
return rhsBlockAccesses + (lhsBlockAccesses * numChunks), nil
98112
}
99113

100114
func (m *MultiBufferProductPlan) DistinctValues(fldName string) int {

0 commit comments

Comments
 (0)