Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 0 additions & 34 deletions src/columnar.h
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,6 @@ typedef struct PgColumnarMetapage
} PgColumnarMetapage;



/* -------------------------------------------------------------------------
* Native format catalog row shapes (re-origination line, PGCN v1). These map
* to pgcolumnar.storage / row_group / column_chunk (native spec section 11).
Expand Down Expand Up @@ -424,19 +423,9 @@ typedef struct PgColumnarRowRange

/* row groups every one of whose rows is deleted as-of oldestXmin. Returns a
* List of palloc'd uint64 group numbers. */
extern void PgColumnarRetireGroup(uint64 storageId, uint64 groupNumber);
extern int64 PgColumnarRetireFullyDeletedGroups(Relation rel);
extern void PgColumnarLockChunkGroup(uint64 storageId, uint64 groupNumber);
extern bool PgColumnarAllocateFreeSpace(uint64 storageId, uint64 dataLength,
TransactionId oldestXmin, uint64 *fileOffset);
extern bool PgColumnarTrailingFreeSpaceSafe(uint64 storageId, uint64 liveEnd,
TransactionId oldestXmin);
extern void PgColumnarDeleteFreeSpaceAtOrAbove(uint64 storageId, uint64 liveEnd);
extern void PgColumnarReconcileFreeList(Relation dataRel);
/* all-visible chunk-group row ranges: stripe committed past the horizon and no
* deletes (committed or in-progress). Returns a List of PgColumnarRowRange *. */
extern List *PgColumnarComputeAllVisibleGroups(uint64 storageId,
TransactionId oldestXmin);

/* physical reclaim: split freed ranges on allocate and coalesce on free (GUC) */
extern bool pgcolumnar_reclaim_coalesce;
Expand All @@ -463,52 +452,30 @@ extern void PgColumnarCheckFreeSpaceNoOverlap(uint64 storageId);
* metadata layer (pgcolumnar_metadata.c)
* ------------------------------------------------------------------------- */
extern uint64 PgColumnarNextStorageId(void);
extern void PgColumnarInsertNativeStorageRow(const NativeStorageMetadata *s);

/* projection: needed attnos (pull_varattnos form) -> the reader's 0-based set */
extern Bitmapset *PgColumnarProjectionFromAttnos(Bitmapset *needed, int natts,
int *nProjected);
extern void PgColumnarSetSortedExtent(uint64 storageId, int64 firstGroup,
int64 lastGroup);
extern void PgColumnarCheckNativeFormatVersion(uint64 storageId, const char *relName);
extern void PgColumnarInsertRowGroupRow(const NativeRowGroupMetadata *rg);
extern void PgColumnarInsertColumnChunkRow(const NativeColumnChunkMetadata *cc);
extern void PgColumnarInsertZoneMapRow(const NativeZoneMapMetadata *z);
extern void PgColumnarInsertBloomRow(const NativeBloomMetadata *b);
extern List *PgColumnarReadRowGroupList(uint64 storageId, Snapshot snapshot);
extern List *PgColumnarReadColumnChunkList(uint64 storageId, uint64 groupNumber,
Snapshot snapshot);
extern List *PgColumnarReadZoneMapList(uint64 storageId, uint64 groupNumber,
Snapshot snapshot);
extern List *PgColumnarReadZoneMapVectors(uint64 storageId, uint64 groupNumber,
Snapshot snapshot);
extern NativeBloomMetadata *PgColumnarReadBloomForColumn(uint64 storageId,
uint64 groupNumber,
int columnIndex,
Snapshot snapshot);
extern void PgColumnarDeleteMetadata(uint64 storageId);

/* per-table options catalog (spec 7.4) */
extern bool PgColumnarReadOptions(Oid relid, PgColumnarOptions *opts);
extern void PgColumnarDeleteOptions(Oid relid);

/* declared physical sort key (#288); List of pstrdup'd column names, NIL if
* none is declared. Names (not attnums) so the value survives dump/restore. */
extern List *PgColumnarReadSortBy(Oid relid);

/* projection catalog (gap 26, format 2.2). List entries are PgColumnarProjection*
* palloc'd in the current context, ordered by projection_id. */
extern List *PgColumnarListProjections(uint64 storageId);
extern void PgColumnarInsertProjectionRow(const PgColumnarProjection *proj);
/* The dumpable declaration behind a projection, keyed by regclass and stored as
* column names so a dump and restore can carry it (#266). */
extern void PgColumnarRecordProjectionDeclaration(Oid relid, const char *name,
ArrayType *columns,
ArrayType *sortKey);
extern void PgColumnarDeleteProjectionDeclaration(Oid relid, const char *name);
/* Every declaration for a relation, for the drop hook: a dropped table must not
* leave rows behind whose regclass no longer resolves (#304). */
extern void PgColumnarDeleteProjectionDeclarationsForRel(Oid relid);
extern void PgColumnarDeleteProjectionRow(uint64 storageId, int projectionId);

/* whether a relation uses the columnar table access method */
Expand All @@ -529,7 +496,6 @@ extern Snapshot PgColumnarCatalogSnapshot(Snapshot base);
/* delete_vector catalog access (spec 7.5) */
extern List *PgColumnarReadDeleteVectorList(uint64 storageId, uint64 stripeId,
Snapshot snapshot);
extern bool PgColumnarStorageHasDeleteVector(uint64 storageId, Snapshot snapshot);
extern void PgColumnarUpsertDeleteVector(uint64 storageId, DeleteVectorMetadata *rm);

/* -------------------------------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions src/columnar_metadata.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
*/
#include "columnar.h"

#include "columnar_metadata.h"
#include "fmgr.h"
#include "columnar_compat.h"
#include "access/genam.h"
Expand Down
80 changes: 80 additions & 0 deletions src/columnar_metadata.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/*-------------------------------------------------------------------------
*
* columnar_metadata.h
* The catalog side of pgColumnar: what columnar_metadata.c offers the
* modules that read and write our own catalog tables.
*
* Split out of columnar.h (#496). Every declaration here had exactly ONE
* consumer outside its defining file, so it was a private arrangement between
* two files that the other twenty were forced to recompile for, and that anyone
* reading columnar.h had to scan past to reach the interface that is genuinely
* shared.
*
* The shared vocabulary -- the Native*Metadata structs these signatures take,
* the GUCs, the format constants -- stays in columnar.h, which this includes.
*
* Written fresh for pgColumnar.
*
*-------------------------------------------------------------------------
*/
#ifndef PGCOLUMNAR_METADATA_H
#define PGCOLUMNAR_METADATA_H

#include "columnar.h"

extern void PgColumnarRetireGroup(uint64 storageId, uint64 groupNumber);

extern void PgColumnarLockChunkGroup(uint64 storageId, uint64 groupNumber);

extern bool PgColumnarAllocateFreeSpace(uint64 storageId, uint64 dataLength,
TransactionId oldestXmin, uint64 *fileOffset);

extern bool PgColumnarTrailingFreeSpaceSafe(uint64 storageId, uint64 liveEnd,
TransactionId oldestXmin);

extern void PgColumnarDeleteFreeSpaceAtOrAbove(uint64 storageId, uint64 liveEnd);

extern void PgColumnarReconcileFreeList(Relation dataRel);

extern List *PgColumnarComputeAllVisibleGroups(uint64 storageId,
TransactionId oldestXmin);

extern void PgColumnarInsertNativeStorageRow(const NativeStorageMetadata *s);

extern void PgColumnarSetSortedExtent(uint64 storageId, int64 firstGroup,
int64 lastGroup);

extern void PgColumnarInsertRowGroupRow(const NativeRowGroupMetadata *rg);

extern void PgColumnarInsertColumnChunkRow(const NativeColumnChunkMetadata *cc);

extern void PgColumnarInsertZoneMapRow(const NativeZoneMapMetadata *z);

extern void PgColumnarInsertBloomRow(const NativeBloomMetadata *b);

extern List *PgColumnarReadColumnChunkList(uint64 storageId, uint64 groupNumber,
Snapshot snapshot);

extern List *PgColumnarReadZoneMapVectors(uint64 storageId, uint64 groupNumber,
Snapshot snapshot);

extern NativeBloomMetadata *PgColumnarReadBloomForColumn(uint64 storageId,
uint64 groupNumber,
int columnIndex,
Snapshot snapshot);

extern void PgColumnarDeleteOptions(Oid relid);

extern List *PgColumnarReadSortBy(Oid relid);

extern void PgColumnarRecordProjectionDeclaration(Oid relid, const char *name,
ArrayType *columns,
ArrayType *sortKey);

extern void PgColumnarDeleteProjectionDeclaration(Oid relid, const char *name);

extern void PgColumnarDeleteProjectionDeclarationsForRel(Oid relid);

extern bool PgColumnarStorageHasDeleteVector(uint64 storageId, Snapshot snapshot);

#endif /* PGCOLUMNAR_METADATA_H */
1 change: 1 addition & 0 deletions src/columnar_projection.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
*/
#include "columnar.h"

#include "columnar_metadata.h"
#include "access/table.h"
#include "catalog/pg_type.h"
#include "funcapi.h"
Expand Down
1 change: 1 addition & 0 deletions src/columnar_reader.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
*/
#include "columnar.h"

#include "columnar_metadata.h"
#include "fmgr.h"
#include "access/detoast.h"
#include "access/htup_details.h"
Expand Down
1 change: 1 addition & 0 deletions src/columnar_tableam.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
*/
#include "columnar.h"

#include "columnar_metadata.h"
#include "access/multixact.h"
#include "access/genam.h"
#include "access/table.h"
Expand Down
1 change: 1 addition & 0 deletions src/columnar_vacuum.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
*-------------------------------------------------------------------------
*/
#include "columnar.h"
#include "columnar_metadata.h"
#include "columnar_compat.h"

#include "fmgr.h"
Expand Down
1 change: 1 addition & 0 deletions src/columnar_vector.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
*/
#include "columnar.h"

#include "columnar_metadata.h"
#include <math.h>

#include "miscadmin.h"
Expand Down
1 change: 1 addition & 0 deletions src/columnar_visibilitymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
*/
#include "columnar.h"

#include "columnar_metadata.h"
#include "fmgr.h"
#include "columnar_compat.h"

Expand Down
1 change: 1 addition & 0 deletions src/columnar_write_state.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
*/
#include "columnar.h"

#include "columnar_metadata.h"
#include "columnar_compat.h"
#include "access/htup_details.h"
#include "access/table.h"
Expand Down
Loading