greenplumn appendonly_visimap_entry 源码
greenplumn appendonly_visimap_entry 代码
文件路径:/src/include/access/appendonly_visimap_entry.h
/*------------------------------------------------------------------------------
*
* appendonly_visimap_entry
* responsibly for the internal handling and the usage
* of a single tuple in the visimap relation.
*
* Copyright (c) 2013-Present VMware, Inc. or its affiliates.
*
*
* IDENTIFICATION
* src/include/access/appendonly_visimap_entry.h
*
*------------------------------------------------------------------------------
*/
#ifndef APPENDONLY_VISIMAP_ENTRY_H
#define APPENDONLY_VISIMAP_ENTRY_H
#include "access/appendonlytid.h"
#include "access/htup.h"
#include "access/tableam.h"
#include "nodes/bitmapset.h"
#include "utils/bitmap_compression.h"
#define APPENDONLY_VISIMAP_DATA_BUFFER_SIZE (offsetof(AppendOnlyVisimapData, data) + \
APPENDONLY_VISIMAP_MAX_BITMAP_SIZE + \
BITMAP_COMPRESSION_HEADER_SIZE)
/*
* On-disk (or in-tuple) data structure of the visibility map
* data.
*/
typedef struct AppendOnlyVisimapData
{
/*
* Total length. Must be the first. Will later be set by
* SET_VARDATA_SIZE()
*/
int32 _len;
/*
* Version number for the VisiMap format. Currently only 1 is supported.
*/
int32 version;
/* Possibily compressed bitmap data */
unsigned char data[1];
} AppendOnlyVisimapData;
typedef struct AppendOnlyVisimapEntry
{
/*
* Current on-disk representation of the visibility entry.
*
* The contents is only defined to offsets smaller than VARSIZE(data);
*
*/
AppendOnlyVisimapData *data;
/*
* Current uncompressed bitmap for the visibility map entry.
*/
Bitmapset *bitmap;
/*
* Current segment file number. -1 indicates not set.
*/
int32 segmentFileNum;
/*
* first row number covered by the current visibility map entry. -1
* indicates not set.
*/
int64 firstRowNum;
/*
* true if the entry has been changed and needs to be persisted.
*/
bool dirty;
/**
* tuple id of the last loaded visibility map entry.
* Is Invalid iff there is no current table or if the
* current table has not been loaded using AppendOnlyVisimapStore_Find.
*/
ItemPointerData tupleTid;
/*
* Memory context to use for all allocations.
*/
MemoryContext memoryContext;
} AppendOnlyVisimapEntry;
void AppendOnlyVisimapEntry_Init(
AppendOnlyVisimapEntry *visi_map_entry,
MemoryContext memoryContext);
void AppendOnlyVisimapEntry_Reset(
AppendOnlyVisimapEntry *visi_map_entry);
void AppendOnlyVisimapEntry_Copyout(
AppendOnlyVisimapEntry *visi_map_entry,
HeapTuple tuple,
TupleDesc tupleDesc);
void AppendOnlyVisimapEntry_New(
AppendOnlyVisimapEntry *visiMapEntry,
AOTupleId *tupleId);
void AppendOnlyVisimapEntry_Write(
AppendOnlyVisimapEntry *visiMapEntry,
Datum *value,
bool *is_null);
void AppendOnlyVisimapEntry_WriteData(
AppendOnlyVisimapEntry *visiMapEntry);
bool AppendOnlyVisimapEntry_CoversTuple(
AppendOnlyVisimapEntry *visiMapEntry,
AOTupleId *aoTupleId);
bool AppendOnlyVisimapEntry_IsVisible(
AppendOnlyVisimapEntry *visiMapEntry,
AOTupleId *aoTupleId);
TM_Result AppendOnlyVisimapEntry_HideTuple(
AppendOnlyVisimapEntry *visiMapEntry,
AOTupleId *aoTupleId);
void AppendOnlyVisimapEntry_Finish(
AppendOnlyVisimapEntry *visiMapEntry);
bool AppendOnlyVisimapEntry_HasChanged(
AppendOnlyVisimapEntry *visiMapEntry);
bool AppendOnlyVisimapEntry_IsValid(
AppendOnlyVisimapEntry *visiMapEntry);
int64 AppendOnlyVisimapEntry_GetFirstRowNum(
AppendOnlyVisimapEntry *visiMapEntry,
AOTupleId *tupleId);
bool AppendOnlyVisimapEntry_GetNextInvisible(
AppendOnlyVisimapEntry *visiMapEntry,
AOTupleId *tupleId);
int64 AppendOnlyVisimapEntry_GetHiddenTupleCount(
AppendOnlyVisimapEntry *visiMapEntry);
void AppendOnlyVisiMapEnty_ReadData(
AppendOnlyVisimapEntry *visiMapEntry, size_t dataSize);
#endif
相关信息
相关文章
greenplumn appendonly_compaction 源码
greenplumn appendonly_visimap 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦