citus/src/include/columnar/columnar_metadata.h

70 lines
1.7 KiB
C

/*-------------------------------------------------------------------------
*
* columnar_metadata.h
*
* Type and function declarations for Columnar metadata.
*
* Copyright (c) Citus Data, Inc.
*
*-------------------------------------------------------------------------
*/
#ifndef COLUMNAR_METADATA_H
#define COLUMNAR_METADATA_H
#include "postgres.h"
#include "pg_version_compat.h"
#include "pg_version_constants.h"
#if PG_VERSION_NUM >= PG_VERSION_16
#include "storage/relfilelocator.h"
#else
#include "storage/relfilenode.h"
#endif
/*
* StripeMetadata represents information about a stripe. This information is
* stored in the metadata table "columnar.stripe".
*/
typedef struct StripeMetadata
{
uint64 fileOffset;
uint64 dataLength;
uint32 columnCount;
uint32 chunkCount;
uint32 chunkGroupRowCount;
uint64 rowCount;
uint64 id;
uint64 firstRowNumber;
/* see StripeWriteState */
bool aborted;
/*
* If write operation is in-progress (i.e. StripeWriteState returned
* STRIPE_WRITE_IN_PROGRESS), then insertedByCurrentXact is used to
* distinguish whether it's being written by current transaction or
* not.
*/
bool insertedByCurrentXact;
} StripeMetadata;
/*
* EmptyStripeReservation represents information for an empty stripe
* reservation.
*/
typedef struct EmptyStripeReservation
{
uint64 stripeId;
uint64 stripeFirstRowNumber;
} EmptyStripeReservation;
extern List * StripesForRelfilelocator(Relation rel);
extern void ColumnarStorageUpdateIfNeeded(Relation rel, bool isUpgrade);
extern List * ExtractColumnarRelOptions(List *inOptions, List **outColumnarOptions);
extern void SetColumnarRelOptions(RangeVar *rv, List *reloptions);
#endif /* COLUMNAR_METADATA_H */