()
| 181 | } |
| 182 | |
| 183 | func (r *pullerReader) Read() (*super.Value, error) { |
| 184 | // Loop handles zero-length batches. |
| 185 | for len(r.vals) == 0 { |
| 186 | if r.batch != nil { |
| 187 | r.batch.Unref() |
| 188 | r.batch = nil |
| 189 | } |
| 190 | batch, err := r.p.Pull(false) |
| 191 | if batch == nil || err != nil { |
| 192 | return nil, err |
| 193 | } |
| 194 | r.batch = batch |
| 195 | r.vals = batch.Values() |
| 196 | } |
| 197 | val := &r.vals[0] |
| 198 | r.vals = r.vals[1:] |
| 199 | return val, nil |
| 200 | } |
| 201 | |
| 202 | type batch struct { |
| 203 | Batch |