header file and include cleanup

merge-cstore-pykello
Jeff Davis 2020-09-02 11:41:01 -07:00
parent 59d5d96170
commit 3089c92103
11 changed files with 101 additions and 129 deletions

View File

@ -13,12 +13,14 @@
#include "postgres.h" #include "postgres.h"
#include <sys/stat.h>
#include <unistd.h>
#include "miscadmin.h" #include "miscadmin.h"
#include "utils/rel.h"
#include "cstore.h" #include "cstore.h"
#include <sys/stat.h>
static void CreateDirectory(StringInfo directoryName); static void CreateDirectory(StringInfo directoryName);
static bool DirectoryExists(StringInfo directoryName); static bool DirectoryExists(StringInfo directoryName);
@ -168,3 +170,35 @@ CreateCStoreDatabaseDirectory(Oid databaseOid)
} }
} }
/*
* DeleteCStoreTableFiles deletes the data and footer files for a cstore table
* whose data filename is given.
*/
void
DeleteCStoreTableFiles(char *filename)
{
int dataFileRemoved = 0;
int footerFileRemoved = 0;
StringInfo tableFooterFilename = makeStringInfo();
appendStringInfo(tableFooterFilename, "%s%s", filename, CSTORE_FOOTER_FILE_SUFFIX);
/* delete the footer file */
footerFileRemoved = unlink(tableFooterFilename->data);
if (footerFileRemoved != 0)
{
ereport(WARNING, (errcode_for_file_access(),
errmsg("could not delete file \"%s\": %m",
tableFooterFilename->data)));
}
/* delete the data file */
dataFileRemoved = unlink(filename);
if (dataFileRemoved != 0)
{
ereport(WARNING, (errcode_for_file_access(),
errmsg("could not delete file \"%s\": %m",
filename)));
}
}

View File

@ -14,13 +14,9 @@
#ifndef CSTORE_H #ifndef CSTORE_H
#define CSTORE_H #define CSTORE_H
#include "access/tupdesc.h"
#include "fmgr.h" #include "fmgr.h"
#include "catalog/pg_am.h"
#include "catalog/pg_foreign_server.h"
#include "catalog/pg_foreign_table.h"
#include "lib/stringinfo.h" #include "lib/stringinfo.h"
#include "utils/rel.h" #include "utils/relcache.h"
/* Defines for valid option names */ /* Defines for valid option names */
#define OPTION_NAME_FILENAME "filename" #define OPTION_NAME_FILENAME "filename"
@ -271,6 +267,7 @@ extern void InitializeCStoreTableFile(Oid relationId, Relation relation,
CStoreOptions *cstoreOptions); CStoreOptions *cstoreOptions);
extern void CreateCStoreDatabaseDirectory(Oid databaseOid); extern void CreateCStoreDatabaseDirectory(Oid databaseOid);
extern void RemoveCStoreDatabaseDirectory(Oid databaseOid); extern void RemoveCStoreDatabaseDirectory(Oid databaseOid);
extern void DeleteCStoreTableFiles(char *filename);
/* Function declarations for writing to a cstore file */ /* Function declarations for writing to a cstore file */
extern TableWriteState * CStoreBeginWrite(const char *filename, extern TableWriteState * CStoreBeginWrite(const char *filename,

View File

@ -12,7 +12,6 @@
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
#include "postgres.h" #include "postgres.h"
#include "cstore_fdw.h"
#if PG_VERSION_NUM >= 90500 #if PG_VERSION_NUM >= 90500
#include "common/pg_lzcompress.h" #include "common/pg_lzcompress.h"
@ -20,6 +19,7 @@
#include "utils/pg_lzcompress.h" #include "utils/pg_lzcompress.h"
#endif #endif
#include "cstore.h"

View File

@ -15,15 +15,11 @@
*/ */
#include "postgres.h" #include "postgres.h"
#include "cstore_fdw.h"
#include "cstore_version_compat.h"
#include <sys/stat.h> #include <sys/stat.h>
#include <unistd.h>
#include <limits.h> #include "access/heapam.h"
#include "access/htup_details.h"
#include "access/reloptions.h" #include "access/reloptions.h"
#include "access/sysattr.h"
#include "access/tuptoaster.h" #include "access/tuptoaster.h"
#include "catalog/namespace.h" #include "catalog/namespace.h"
#include "catalog/pg_foreign_table.h" #include "catalog/pg_foreign_table.h"
@ -39,35 +35,71 @@
#include "foreign/foreign.h" #include "foreign/foreign.h"
#include "miscadmin.h" #include "miscadmin.h"
#include "nodes/makefuncs.h" #include "nodes/makefuncs.h"
#if PG_VERSION_NUM < 120000
#include "optimizer/cost.h" #include "optimizer/cost.h"
#endif
#include "optimizer/pathnode.h" #include "optimizer/pathnode.h"
#include "optimizer/planmain.h" #include "optimizer/planmain.h"
#include "optimizer/restrictinfo.h" #include "optimizer/restrictinfo.h"
#if PG_VERSION_NUM >= 120000 #if PG_VERSION_NUM >= 120000
#include "access/heapam.h" #include "access/heapam.h"
#include "access/tableam.h"
#include "executor/tuptable.h"
#include "optimizer/optimizer.h" #include "optimizer/optimizer.h"
#else #else
#include "optimizer/var.h" #include "optimizer/var.h"
#endif #endif
#include "parser/parser.h" #include "parser/parser.h"
#include "parser/parsetree.h"
#include "parser/parse_coerce.h" #include "parser/parse_coerce.h"
#include "parser/parse_type.h" #include "parser/parse_type.h"
#include "storage/fd.h"
#include "tcop/utility.h" #include "tcop/utility.h"
#include "utils/builtins.h" #include "utils/builtins.h"
#include "utils/fmgroids.h" #include "utils/fmgroids.h"
#include "utils/memutils.h"
#include "utils/lsyscache.h" #include "utils/lsyscache.h"
#include "utils/rel.h"
#if PG_VERSION_NUM >= 120000 #if PG_VERSION_NUM >= 120000
#include "utils/snapmgr.h" #include "utils/snapmgr.h"
#else #else
#include "utils/tqual.h" #include "utils/tqual.h"
#endif #endif
#if PG_VERSION_NUM < 120000
#include "utils/rel.h"
#endif
#include "cstore.h"
#include "cstore_fdw.h"
#include "cstore_version_compat.h"
/* table containing information about how to partition distributed tables */
#define CITUS_EXTENSION_NAME "citus"
#define CITUS_PARTITION_TABLE_NAME "pg_dist_partition"
/* human-readable names for addressing columns of the pg_dist_partition table */
#define ATTR_NUM_PARTITION_RELATION_ID 1
#define ATTR_NUM_PARTITION_TYPE 2
#define ATTR_NUM_PARTITION_KEY 3
/*
* CStoreValidOption keeps an option name and a context. When an option is passed
* into cstore_fdw objects (server and foreign table), we compare this option's
* name and context against those of valid options.
*/
typedef struct CStoreValidOption
{
const char *optionName;
Oid optionContextId;
} CStoreValidOption;
#define COMPRESSION_STRING_DELIMITED_LIST "none, pglz"
/* Array of options that are valid for cstore_fdw */
static const uint32 ValidOptionCount = 4;
static const CStoreValidOption ValidOptionArray[] =
{
/* foreign table options */
{ OPTION_NAME_FILENAME, ForeignTableRelationId },
{ OPTION_NAME_COMPRESSION_TYPE, ForeignTableRelationId },
{ OPTION_NAME_STRIPE_ROW_COUNT, ForeignTableRelationId },
{ OPTION_NAME_BLOCK_ROW_COUNT, ForeignTableRelationId }
};
/* local functions forward declarations */ /* local functions forward declarations */
#if PG_VERSION_NUM >= 100000 #if PG_VERSION_NUM >= 100000
@ -94,7 +126,6 @@ static List * DroppedCStoreFilenameList(DropStmt *dropStatement);
static List * FindCStoreTables(List *tableList); static List * FindCStoreTables(List *tableList);
static List * OpenRelationsForTruncate(List *cstoreTableList); static List * OpenRelationsForTruncate(List *cstoreTableList);
static void TruncateCStoreTables(List *cstoreRelationList); static void TruncateCStoreTables(List *cstoreRelationList);
static void DeleteCStoreTableFiles(char *filename);
static bool CStoreTable(Oid relationId); static bool CStoreTable(Oid relationId);
static bool CStoreServer(ForeignServer *server); static bool CStoreServer(ForeignServer *server);
static bool DistributedTable(Oid relationId); static bool DistributedTable(Oid relationId);
@ -858,41 +889,6 @@ TruncateCStoreTables(List *cstoreRelationList)
} }
} }
/*
* DeleteCStoreTableFiles deletes the data and footer files for a cstore table
* whose data filename is given.
*/
static void
DeleteCStoreTableFiles(char *filename)
{
int dataFileRemoved = 0;
int footerFileRemoved = 0;
StringInfo tableFooterFilename = makeStringInfo();
appendStringInfo(tableFooterFilename, "%s%s", filename, CSTORE_FOOTER_FILE_SUFFIX);
/* delete the footer file */
footerFileRemoved = unlink(tableFooterFilename->data);
if (footerFileRemoved != 0)
{
ereport(WARNING, (errcode_for_file_access(),
errmsg("could not delete file \"%s\": %m",
tableFooterFilename->data)));
}
/* delete the data file */
dataFileRemoved = unlink(filename);
if (dataFileRemoved != 0)
{
ereport(WARNING, (errcode_for_file_access(),
errmsg("could not delete file \"%s\": %m",
filename)));
}
}
/* /*
* CStoreTable checks if the given table name belongs to a foreign columnar store * CStoreTable checks if the given table name belongs to a foreign columnar store
* table. If it does, the function returns true. Otherwise, it returns false. * table. If it does, the function returns true. Otherwise, it returns false.

View File

@ -14,49 +14,9 @@
#ifndef CSTORE_FDW_H #ifndef CSTORE_FDW_H
#define CSTORE_FDW_H #define CSTORE_FDW_H
#include "access/tupdesc.h" #include "postgres.h"
#include "fmgr.h" #include "fmgr.h"
#include "catalog/pg_am.h"
#include "catalog/pg_foreign_server.h"
#include "catalog/pg_foreign_table.h"
#include "lib/stringinfo.h"
#include "utils/rel.h"
#include "cstore.h"
/* table containing information about how to partition distributed tables */
#define CITUS_EXTENSION_NAME "citus"
#define CITUS_PARTITION_TABLE_NAME "pg_dist_partition"
/* human-readable names for addressing columns of the pg_dist_partition table */
#define ATTR_NUM_PARTITION_RELATION_ID 1
#define ATTR_NUM_PARTITION_TYPE 2
#define ATTR_NUM_PARTITION_KEY 3
/*
* CStoreValidOption keeps an option name and a context. When an option is passed
* into cstore_fdw objects (server and foreign table), we compare this option's
* name and context against those of valid options.
*/
typedef struct CStoreValidOption
{
const char *optionName;
Oid optionContextId;
} CStoreValidOption;
#define COMPRESSION_STRING_DELIMITED_LIST "none, pglz"
/* Array of options that are valid for cstore_fdw */
static const uint32 ValidOptionCount = 4;
static const CStoreValidOption ValidOptionArray[] =
{
/* foreign table options */
{ OPTION_NAME_FILENAME, ForeignTableRelationId },
{ OPTION_NAME_COMPRESSION_TYPE, ForeignTableRelationId },
{ OPTION_NAME_STRIPE_ROW_COUNT, ForeignTableRelationId },
{ OPTION_NAME_BLOCK_ROW_COUNT, ForeignTableRelationId }
};
void cstore_fdw_init(void); void cstore_fdw_init(void);
void cstore_fdw_finish(void); void cstore_fdw_finish(void);

View File

@ -14,11 +14,12 @@
#include "postgres.h" #include "postgres.h"
#include "cstore_fdw.h"
#include "cstore_metadata_serialization.h"
#include "cstore.pb-c.h"
#include "access/tupmacs.h" #include "access/tupmacs.h"
#include "cstore.h"
#include "cstore_metadata_serialization.h"
#include "cstore.pb-c.h"
/* local functions forward declarations */ /* local functions forward declarations */
static ProtobufCBinaryData DatumToProtobufBinary(Datum datum, bool typeByValue, static ProtobufCBinaryData DatumToProtobufBinary(Datum datum, bool typeByValue,

View File

@ -14,12 +14,6 @@
#ifndef CSTORE_SERIALIZATION_H #ifndef CSTORE_SERIALIZATION_H
#define CSTORE_SERIALIZATION_H #define CSTORE_SERIALIZATION_H
#include "catalog/pg_attribute.h"
#include "nodes/pg_list.h"
#include "lib/stringinfo.h"
#include "cstore_fdw.h"
/* Function declarations for metadata serialization */ /* Function declarations for metadata serialization */
extern StringInfo SerializePostScript(uint64 tableFooterLength); extern StringInfo SerializePostScript(uint64 tableFooterLength);
extern StringInfo SerializeTableFooter(TableFooter *tableFooter); extern StringInfo SerializeTableFooter(TableFooter *tableFooter);

View File

@ -15,30 +15,26 @@
#include "postgres.h" #include "postgres.h"
#include "cstore_fdw.h"
#include "cstore_metadata_serialization.h"
#include "cstore_version_compat.h"
#include "access/nbtree.h" #include "access/nbtree.h"
#include "access/skey.h" #include "catalog/pg_am.h"
#include "commands/defrem.h" #include "commands/defrem.h"
#include "nodes/makefuncs.h" #include "nodes/makefuncs.h"
#if PG_VERSION_NUM >= 120000 #if PG_VERSION_NUM >= 120000
#include "nodes/pathnodes.h"
#include "nodes/nodeFuncs.h" #include "nodes/nodeFuncs.h"
#include "optimizer/optimizer.h" #include "optimizer/optimizer.h"
#else #else
#include "optimizer/clauses.h" #include "optimizer/clauses.h"
#include "optimizer/predtest.h" #include "optimizer/predtest.h"
#include "optimizer/var.h"
#endif #endif
#include "optimizer/restrictinfo.h" #include "optimizer/restrictinfo.h"
#include "port.h"
#include "storage/fd.h" #include "storage/fd.h"
#include "utils/memutils.h" #include "utils/memutils.h"
#include "utils/lsyscache.h" #include "utils/lsyscache.h"
#include "utils/rel.h"
#include "cstore.h"
#include "cstore_metadata_serialization.h"
#include "cstore_version_compat.h"
/* static function declarations */ /* static function declarations */
static StripeBuffers * LoadFilteredStripeBuffers(FILE *tableFile, static StripeBuffers * LoadFilteredStripeBuffers(FILE *tableFile,

View File

@ -49,7 +49,7 @@
#define TTS_EMPTY(slot) ((slot)->tts_isempty) #define TTS_EMPTY(slot) ((slot)->tts_isempty)
#define ExecForceStoreHeapTuple(tuple, slot, shouldFree) \ #define ExecForceStoreHeapTuple(tuple, slot, shouldFree) \
ExecStoreTuple(newTuple, tupleSlot, InvalidBuffer, shouldFree); ExecStoreTuple(newTuple, tupleSlot, InvalidBuffer, shouldFree);
#define HeapScanDesc TableScanDesc #define TableScanDesc HeapScanDesc
#define table_beginscan heap_beginscan #define table_beginscan heap_beginscan
#define table_endscan heap_endscan #define table_endscan heap_endscan

View File

@ -15,25 +15,17 @@
#include "postgres.h" #include "postgres.h"
#include "cstore_fdw.h"
#include "cstore_metadata_serialization.h"
#include "cstore_version_compat.h"
#include <sys/stat.h> #include <sys/stat.h>
#include "access/nbtree.h" #include "access/nbtree.h"
#include "catalog/pg_collation.h" #include "catalog/pg_am.h"
#include "commands/defrem.h"
#if PG_VERSION_NUM >= 120000
#include "optimizer/optimizer.h"
#else
#include "optimizer/var.h"
#endif
#include "port.h"
#include "storage/fd.h" #include "storage/fd.h"
#include "utils/memutils.h" #include "utils/memutils.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "cstore.h"
#include "cstore_metadata_serialization.h"
#include "cstore_version_compat.h"
static void CStoreWriteFooter(StringInfo footerFileName, TableFooter *tableFooter); static void CStoreWriteFooter(StringInfo footerFileName, TableFooter *tableFooter);
static StripeBuffers * CreateEmptyStripeBuffers(uint32 stripeMaxRowCount, static StripeBuffers * CreateEmptyStripeBuffers(uint32 stripeMaxRowCount,

2
mod.c
View File

@ -13,6 +13,8 @@
#include "postgres.h" #include "postgres.h"
#include "fmgr.h"
#include "mod.h" #include "mod.h"
#include "cstore_fdw.h" #include "cstore_fdw.h"