Line data Source code
1 : // Copyright 2018 The LevelDB-Go and Pebble Authors. All rights reserved. Use 2 : // of this source code is governed by a BSD-style license that can be found in 3 : // the LICENSE file. 4 : 5 : package pebble 6 : 7 : import ( 8 : "context" 9 : 10 : "github.com/cockroachdb/pebble/internal/base" 11 : "github.com/cockroachdb/pebble/internal/keyspan" 12 : "github.com/cockroachdb/pebble/internal/treeprinter" 13 : ) 14 : 15 : type errorIter struct { 16 : err error 17 : } 18 : 19 : // errorIter implements the base.InternalIterator interface. 20 : var _ internalIterator = (*errorIter)(nil) 21 : 22 1 : func (c *errorIter) SeekGE(key []byte, flags base.SeekGEFlags) *base.InternalKV { 23 1 : return nil 24 1 : } 25 : 26 1 : func (c *errorIter) SeekPrefixGE(prefix, key []byte, flags base.SeekGEFlags) *base.InternalKV { 27 1 : return c.SeekPrefixGEStrict(prefix, key, flags) 28 1 : } 29 : 30 : func (c *errorIter) SeekPrefixGEStrict( 31 : prefix, key []byte, flags base.SeekGEFlags, 32 1 : ) *base.InternalKV { 33 1 : return nil 34 1 : } 35 : 36 1 : func (c *errorIter) SeekLT(key []byte, flags base.SeekLTFlags) *base.InternalKV { 37 1 : return nil 38 1 : } 39 : 40 1 : func (c *errorIter) First() *base.InternalKV { 41 1 : return nil 42 1 : } 43 : 44 1 : func (c *errorIter) Last() *base.InternalKV { 45 1 : return nil 46 1 : } 47 : 48 1 : func (c *errorIter) Next() *base.InternalKV { 49 1 : return nil 50 1 : } 51 : 52 1 : func (c *errorIter) Prev() *base.InternalKV { 53 1 : return nil 54 1 : } 55 : 56 0 : func (c *errorIter) NextPrefix([]byte) *base.InternalKV { 57 0 : return nil 58 0 : } 59 : 60 1 : func (c *errorIter) Error() error { 61 1 : return c.err 62 1 : } 63 : 64 1 : func (c *errorIter) Close() error { 65 1 : return c.err 66 1 : } 67 : 68 0 : func (c *errorIter) String() string { 69 0 : return "error" 70 0 : } 71 : 72 1 : func (c *errorIter) SetBounds(lower, upper []byte) {} 73 : 74 0 : func (c *errorIter) SetContext(_ context.Context) {} 75 : 76 0 : func (c *errorIter) DebugTree(tp treeprinter.Node) { 77 0 : tp.Childf("%T(%p)", c, c) 78 0 : } 79 : 80 : type errorKeyspanIter struct { 81 : err error 82 : } 83 : 84 : // errorKeyspanIter implements the keyspan.FragmentIterator interface. 85 : var _ keyspan.FragmentIterator = (*errorKeyspanIter)(nil) 86 : 87 1 : func (i *errorKeyspanIter) SeekGE(key []byte) (*keyspan.Span, error) { return nil, i.err } 88 1 : func (i *errorKeyspanIter) SeekLT(key []byte) (*keyspan.Span, error) { return nil, i.err } 89 1 : func (i *errorKeyspanIter) First() (*keyspan.Span, error) { return nil, i.err } 90 1 : func (i *errorKeyspanIter) Last() (*keyspan.Span, error) { return nil, i.err } 91 0 : func (i *errorKeyspanIter) Next() (*keyspan.Span, error) { return nil, i.err } 92 0 : func (i *errorKeyspanIter) Prev() (*keyspan.Span, error) { return nil, i.err } 93 0 : func (i *errorKeyspanIter) SetContext(ctx context.Context) {} 94 1 : func (i *errorKeyspanIter) Close() {} 95 0 : func (*errorKeyspanIter) String() string { return "error" } 96 0 : func (*errorKeyspanIter) WrapChildren(wrap keyspan.WrapFn) {} 97 0 : func (i *errorKeyspanIter) DebugTree(tp treeprinter.Node) { tp.Childf("%T(%p)", i, i) }