github.com/matrixorigin/matrixone@v0.7.0/pkg/vm/engine/tae/iface/handle/segment.go (about)

     1  // Copyright 2021 Matrix Origin
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package handle
    16  
    17  import (
    18  	"io"
    19  
    20  	"github.com/matrixorigin/matrixone/pkg/vm/engine/tae/containers"
    21  )
    22  
    23  type SegmentIt interface {
    24  	Iterator
    25  	GetSegment() Segment
    26  }
    27  
    28  type SegmentReader interface {
    29  	io.Closer
    30  	GetID() uint64
    31  	IsUncommitted() bool
    32  	IsAppendable() bool
    33  	MakeBlockIt() BlockIt
    34  	// GetByFilter(filter Filter, offsetOnly bool) (map[uint64]*batch.Batch, error)
    35  	String() string
    36  	GetMeta() any
    37  
    38  	GetBlock(id uint64) (Block, error)
    39  	GetRelation() Relation
    40  
    41  	BatchDedup(pks containers.Vector) error
    42  }
    43  
    44  type SegmentWriter interface {
    45  	io.Closer
    46  	String() string
    47  	Update(blk uint64, row uint32, col uint16, v any) error
    48  	RangeDelete(blk uint64, start, end uint32, dt DeleteType) error
    49  
    50  	PushDeleteOp(filter Filter) error
    51  	PushUpdateOp(filter Filter, attr string, val any) error
    52  
    53  	CreateBlock(bool) (Block, error)
    54  	CreateNonAppendableBlock() (Block, error)
    55  	CreateNonAppendableBlockWithMeta(string, string) (Block, error)
    56  
    57  	SoftDeleteBlock(id uint64) (err error)
    58  }
    59  
    60  type Segment interface {
    61  	SegmentReader
    62  	SegmentWriter
    63  }