(seq dag.Seq)
| 57 | } |
| 58 | |
| 59 | func matchSource(seq dag.Seq) (*dag.ListerScan, *dag.SlicerOp, dag.Seq) { |
| 60 | lister, ok := seq[0].(*dag.ListerScan) |
| 61 | if !ok { |
| 62 | return nil, nil, nil |
| 63 | } |
| 64 | seq = seq[1:] |
| 65 | slicer, ok := seq[0].(*dag.SlicerOp) |
| 66 | if ok { |
| 67 | seq = seq[1:] |
| 68 | } |
| 69 | if _, ok := seq[0].(*dag.SeqScan); !ok { |
| 70 | panic("parseSource: no SeqScan") |
| 71 | } |
| 72 | return lister, slicer, seq |
| 73 | } |
| 74 | |
| 75 | func (o *Optimizer) parallelizeFileScan(seq dag.Seq, replicas int) (dag.Seq, error) { |
| 76 | // Prepend a pass so we can parallelize seq[0]. |