Documentation ¶
Index ¶
- type Storage
- type StorageRC
- func (s *StorageRC) ActionSpill() *chunk.SpillDiskAction
- func (s *StorageRC) ActionSpillForTest() *chunk.SpillDiskAction
- func (s *StorageRC) Add(chk *chunk.Chunk) (err error)
- func (s *StorageRC) DerefAndClose() (err error)
- func (s *StorageRC) Done() bool
- func (s *StorageRC) Error() error
- func (s *StorageRC) GetChunk(chkIdx int) (*chunk.Chunk, error)
- func (s *StorageRC) GetDiskTracker() *memory.Tracker
- func (s *StorageRC) GetIter() int
- func (s *StorageRC) GetMemTracker() *memory.Tracker
- func (s *StorageRC) GetRow(ptr chunk.RowPtr) (chunk.Row, error)
- func (s *StorageRC) Lock()
- func (s *StorageRC) NumChunks() int
- func (s *StorageRC) NumRows() int
- func (s *StorageRC) OpenAndRef() (err error)
- func (s *StorageRC) Reopen() (err error)
- func (s *StorageRC) SetDone()
- func (s *StorageRC) SetError(err error)
- func (s *StorageRC) SetIter(iter int)
- func (s *StorageRC) SwapData(other Storage) (err error)
- func (s *StorageRC) Unlock()
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Storage ¶
type Storage interface { // If is first called, will open underlying storage. Otherwise will add ref count by one. OpenAndRef() error // Minus ref count by one, if ref count is zero, close underlying storage. DerefAndClose() (err error) // SwapData swaps data of two storage. // Other metainfo is not touched, such ref count/done flag etc. SwapData(other Storage) error // Reopen reset storage and related info. // So the status of Storage is like a new created one. Reopen() error // Add chunk into underlying storage. // Should return directly if chk is empty. Add(chk *chunk.Chunk) error // Get Chunk by index. GetChunk(chkIdx int) (*chunk.Chunk, error) // Get row by RowPtr. GetRow(ptr chunk.RowPtr) (chunk.Row, error) // NumChunks return chunk number of the underlying storage. NumChunks() int // NumRows return row number of the underlying storage. NumRows() int // Storage is not thread-safe. // By using Lock(), users can achieve the purpose of ensuring thread safety. Lock() Unlock() // Usually, Storage is filled first, then user can read it. // User can check whether Storage is filled first, if not, they can fill it. Done() bool SetDone() // Store error message, so we can return directly. Error() error SetError(err error) // Readers use iter information to determine // whether they need to read data from the beginning. SetIter(iter int) GetIter() int GetMemTracker() *memory.Tracker GetDiskTracker() *disk.Tracker ActionSpill() *chunk.SpillDiskAction }
Storage is a temporary storage to store the intermidate data of CTE.
Common usage as follows:
storage.Lock() if !storage.Done() { fill all data into storage } storage.UnLock() read data from storage
type StorageRC ¶
type StorageRC struct {
// contains filtered or unexported fields
}
StorageRC implements Storage interface using RowContainer.
func NewStorageRowContainer ¶
NewStorageRowContainer create a new StorageRC.
func (*StorageRC) ActionSpill ¶
func (s *StorageRC) ActionSpill() *chunk.SpillDiskAction
ActionSpill impls Storage ActionSpill interface.
func (*StorageRC) ActionSpillForTest ¶
func (s *StorageRC) ActionSpillForTest() *chunk.SpillDiskAction
ActionSpillForTest is for test.
func (*StorageRC) DerefAndClose ¶
DerefAndClose impls Storage DerefAndClose interface.
func (*StorageRC) GetDiskTracker ¶
GetDiskTracker impls Storage GetDiskTracker interface.
func (*StorageRC) GetMemTracker ¶
GetMemTracker impls Storage GetMemTracker interface.
func (*StorageRC) OpenAndRef ¶
OpenAndRef impls Storage OpenAndRef interface.
Click to show internal directories.
Click to hide internal directories.