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 2 : func (c *errorIter) SeekGE(key []byte, flags base.SeekGEFlags) *base.InternalKV { 23 2 : return nil 24 2 : } 25 : 26 2 : func (c *errorIter) SeekPrefixGE(prefix, key []byte, flags base.SeekGEFlags) *base.InternalKV { 27 2 : return c.SeekPrefixGEStrict(prefix, key, flags) 28 2 : } 29 : 30 : func (c *errorIter) SeekPrefixGEStrict( 31 : prefix, key []byte, flags base.SeekGEFlags, 32 2 : ) *base.InternalKV { 33 2 : return nil 34 2 : } 35 : 36 2 : func (c *errorIter) SeekLT(key []byte, flags base.SeekLTFlags) *base.InternalKV { 37 2 : return nil 38 2 : } 39 : 40 2 : func (c *errorIter) First() *base.InternalKV { 41 2 : return nil 42 2 : } 43 : 44 2 : func (c *errorIter) Last() *base.InternalKV { 45 2 : return nil 46 2 : } 47 : 48 2 : func (c *errorIter) Next() *base.InternalKV { 49 2 : return nil 50 2 : } 51 : 52 2 : func (c *errorIter) Prev() *base.InternalKV { 53 2 : return nil 54 2 : } 55 : 56 0 : func (c *errorIter) NextPrefix([]byte) *base.InternalKV { 57 0 : return nil 58 0 : } 59 : 60 2 : func (c *errorIter) Error() error { 61 2 : return c.err 62 2 : } 63 : 64 2 : func (c *errorIter) Close() error { 65 2 : return c.err 66 2 : } 67 : 68 0 : func (c *errorIter) String() string { 69 0 : return "error" 70 0 : } 71 : 72 2 : 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 2 : func (i *errorKeyspanIter) SeekGE(key []byte) (*keyspan.Span, error) { return nil, i.err } 88 2 : func (i *errorKeyspanIter) SeekLT(key []byte) (*keyspan.Span, error) { return nil, i.err } 89 2 : func (i *errorKeyspanIter) First() (*keyspan.Span, error) { return nil, i.err } 90 2 : 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 2 : 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) }