From a70b0c362e71d06db62bcc65e0ae973dbcb0278e Mon Sep 17 00:00:00 2001 From: Hadi Moshayedi Date: Thu, 1 Oct 2020 21:23:06 -0700 Subject: [PATCH] Rename cstore_tables to cstore_data_files --- cstore.c | 11 ---- cstore.h | 18 +++--- cstore_fdw--1.7.sql | 10 +-- cstore_fdw.c | 19 ++---- cstore_metadata_tables.c | 128 ++++++++++++++++++++------------------- cstore_reader.c | 18 +++--- cstore_tableam.c | 5 +- cstore_writer.c | 26 ++++---- expected/am_drop.out | 8 +-- expected/fdw_drop.out | 8 +-- sql/am_drop.sql | 8 +-- sql/fdw_drop.sql | 8 +-- 12 files changed, 125 insertions(+), 142 deletions(-) diff --git a/cstore.c b/cstore.c index d6b6751e2..a724a62a0 100644 --- a/cstore.c +++ b/cstore.c @@ -99,14 +99,3 @@ ParseCompressionType(const char *compressionTypeString) return compressionType; } - - -/* - * InitializeCStoreTableFile initializes metadata for the given relation - * file node. - */ -void -InitializeCStoreTableFile(Oid relNode, CStoreOptions *cstoreOptions) -{ - InitCStoreTableMetadata(relNode, cstoreOptions->blockRowCount); -} diff --git a/cstore.h b/cstore.h index ef937ba3c..8efb0e6af 100644 --- a/cstore.h +++ b/cstore.h @@ -87,12 +87,12 @@ typedef struct StripeMetadata } StripeMetadata; -/* TableMetadata represents the metadata of a cstore file. */ -typedef struct TableMetadata +/* DataFileMetadata represents the metadata of a cstore file. */ +typedef struct DataFileMetadata { List *stripeMetadataList; uint64 blockRowCount; -} TableMetadata; +} DataFileMetadata; /* ColumnBlockSkipNode contains statistics for a ColumnBlockData. */ @@ -192,7 +192,7 @@ typedef struct StripeBuffers /* TableReadState represents state of a cstore file read operation. */ typedef struct TableReadState { - TableMetadata *tableMetadata; + DataFileMetadata *datafileMetadata; StripeMetadata *currentStripeMetadata; TupleDesc tupleDescriptor; Relation relation; @@ -217,7 +217,7 @@ typedef struct TableReadState /* TableWriteState represents state of a cstore file write operation. */ typedef struct TableWriteState { - TableMetadata *tableMetadata; + DataFileMetadata *datafileMetadata; CompressionType compressionType; TupleDesc tupleDescriptor; FmgrInfo **comparisonFunctionArray; @@ -248,7 +248,6 @@ extern int cstore_block_row_count; extern void cstore_init(void); extern CompressionType ParseCompressionType(const char *compressionTypeString); -extern void InitializeCStoreTableFile(Oid relNode, CStoreOptions *cstoreOptions); /* Function declarations for writing to a cstore file */ extern TableWriteState * CStoreBeginWrite(Relation relation, @@ -281,11 +280,10 @@ extern bool CompressBuffer(StringInfo inputBuffer, StringInfo outputBuffer, extern StringInfo DecompressBuffer(StringInfo buffer, CompressionType compressionType); /* cstore_metadata_tables.c */ -extern bool IsCStoreStorage(Oid relfilenode); -extern void DeleteTableMetadataRowIfExists(Oid relfilenode); -extern void InitCStoreTableMetadata(Oid relfilenode, int blockRowCount); +extern void DeleteDataFileMetadataRowIfExists(Oid relfilenode); +extern void InitCStoreDataFileMetadata(Oid relfilenode, int blockRowCount); extern void InsertStripeMetadataRow(Oid relfilenode, StripeMetadata *stripe); -extern TableMetadata * ReadTableMetadata(Oid relfilenode); +extern DataFileMetadata * ReadDataFileMetadata(Oid relfilenode); extern void SaveStripeSkipList(Oid relfilenode, uint64 stripe, StripeSkipList *stripeSkipList, TupleDesc tupleDescriptor); diff --git a/cstore_fdw--1.7.sql b/cstore_fdw--1.7.sql index b3470b6a5..c19bb1449 100644 --- a/cstore_fdw--1.7.sql +++ b/cstore_fdw--1.7.sql @@ -31,7 +31,7 @@ RETURNS bigint AS 'MODULE_PATHNAME' LANGUAGE C STRICT; -CREATE TABLE cstore_tables ( +CREATE TABLE cstore_data_files ( relfilenode oid NOT NULL, block_row_count int NOT NULL, version_major bigint NOT NULL, @@ -39,7 +39,7 @@ CREATE TABLE cstore_tables ( PRIMARY KEY (relfilenode) ) WITH (user_catalog_table = true); -COMMENT ON TABLE cstore_tables IS 'CStore table wide metadata'; +COMMENT ON TABLE cstore_data_files IS 'CStore data file wide metadata'; CREATE TABLE cstore_stripes ( relfilenode oid NOT NULL, @@ -51,10 +51,10 @@ CREATE TABLE cstore_stripes ( block_row_count int NOT NULL, row_count bigint NOT NULL, PRIMARY KEY (relfilenode, stripe), - FOREIGN KEY (relfilenode) REFERENCES cstore_tables(relfilenode) ON DELETE CASCADE INITIALLY DEFERRED + FOREIGN KEY (relfilenode) REFERENCES cstore_data_files(relfilenode) ON DELETE CASCADE INITIALLY DEFERRED ) WITH (user_catalog_table = true); -COMMENT ON TABLE cstore_tables IS 'CStore per stripe metadata'; +COMMENT ON TABLE cstore_stripes IS 'CStore per stripe metadata'; CREATE TABLE cstore_skipnodes ( relfilenode oid NOT NULL, @@ -73,4 +73,4 @@ CREATE TABLE cstore_skipnodes ( FOREIGN KEY (relfilenode, stripe) REFERENCES cstore_stripes(relfilenode, stripe) ON DELETE CASCADE INITIALLY DEFERRED ) WITH (user_catalog_table = true); -COMMENT ON TABLE cstore_tables IS 'CStore per block metadata'; +COMMENT ON TABLE cstore_skipnodes IS 'CStore per block metadata'; diff --git a/cstore_fdw.c b/cstore_fdw.c index 406a153c4..33a29ad32 100644 --- a/cstore_fdw.c +++ b/cstore_fdw.c @@ -267,16 +267,8 @@ cstore_ddl_event_end_trigger(PG_FUNCTION_ARGS) Oid relationId = RangeVarGetRelid(createStatement->base.relation, AccessShareLock, false); Relation relation = cstore_fdw_open(relationId, AccessExclusiveLock); - - /* - * Make sure database directory exists before creating a table. - * This is necessary when a foreign server is created inside - * a template database and a new database is created out of it. - * We have no chance to hook into server creation to create data - * directory for it during database creation time. - */ - InitializeCStoreTableFile(relation->rd_node.relNode, - CStoreGetOptions(relationId)); + CStoreOptions *options = CStoreGetOptions(relationId); + InitCStoreDataFileMetadata(relation->rd_node.relNode, options->blockRowCount); heap_close(relation, AccessExclusiveLock); } } @@ -369,6 +361,7 @@ CStoreProcessUtility(Node * parseTree, const char * queryString, CALL_PREVIOUS_UTILITY(parseTree, queryString, context, paramListInfo, destReceiver, completionTag); } + /* handle other utility statements */ else { @@ -782,12 +775,12 @@ TruncateCStoreTables(List *cstoreRelationList) { Relation relation = (Relation) lfirst(relationCell); Oid relationId = relation->rd_id; + CStoreOptions *options = CStoreGetOptions(relationId); Assert(IsCStoreFdwTable(relationId)); FdwNewRelFileNode(relation); - InitializeCStoreTableFile(relation->rd_node.relNode, - CStoreGetOptions(relationId)); + InitCStoreDataFileMetadata(relation->rd_node.relNode, options->blockRowCount); } } @@ -2225,7 +2218,7 @@ CStoreFdwObjectAccessHook(ObjectAccessType access, Oid classId, Oid objectId, Relation rel = cstore_fdw_open(objectId, AccessExclusiveLock); RelationOpenSmgr(rel); RelationDropStorage(rel); - DeleteTableMetadataRowIfExists(rel->rd_node.relNode); + DeleteDataFileMetadataRowIfExists(rel->rd_node.relNode); /* keep the lock since we did physical changes to the relation */ relation_close(rel, NoLock); diff --git a/cstore_metadata_tables.c b/cstore_metadata_tables.c index 4459d3009..3ebee02e7 100644 --- a/cstore_metadata_tables.c +++ b/cstore_metadata_tables.c @@ -45,12 +45,12 @@ typedef struct static Oid CStoreStripesRelationId(void); static Oid CStoreStripesIndexRelationId(void); -static Oid CStoreTablesRelationId(void); -static Oid CStoreTablesIndexRelationId(void); +static Oid CStoreDataFilesRelationId(void); +static Oid CStoreDataFilesIndexRelationId(void); static Oid CStoreSkipNodesRelationId(void); static Oid CStoreSkipNodesIndexRelationId(void); static Oid CStoreNamespaceId(void); -static bool ReadCStoreTables(Oid relfilenode, uint64 *blockRowCount); +static bool ReadCStoreDataFiles(Oid relfilenode, uint64 *blockRowCount); static ModifyState * StartModifyRelation(Relation rel); static void InsertTupleAndEnforceConstraints(ModifyState *state, Datum *values, bool *nulls); @@ -61,11 +61,11 @@ static bytea * DatumToBytea(Datum value, Form_pg_attribute attrForm); static Datum ByteaToDatum(bytea *bytes, Form_pg_attribute attrForm); /* constants for cstore_table */ -#define Natts_cstore_tables 4 -#define Anum_cstore_tables_relfilenode 1 -#define Anum_cstore_tables_block_row_count 2 -#define Anum_cstore_tables_version_major 3 -#define Anum_cstore_tables_version_minor 4 +#define Natts_cstore_data_files 4 +#define Anum_cstore_data_files_relfilenode 1 +#define Anum_cstore_data_files_block_row_count 2 +#define Anum_cstore_data_files_version_major 3 +#define Anum_cstore_data_files_version_minor 4 /* constants for cstore_stripe */ #define Natts_cstore_stripes 8 @@ -95,35 +95,36 @@ static Datum ByteaToDatum(bytea *bytes, Form_pg_attribute attrForm); /* - * InitCStoreTableMetadata adds a record for the given relation in cstore_table. + * InitCStoreDataFileMetadata adds a record for the given relfilenode + * in cstore_data_files. */ void -InitCStoreTableMetadata(Oid relfilenode, int blockRowCount) +InitCStoreDataFileMetadata(Oid relfilenode, int blockRowCount) { - Oid cstoreTablesOid = InvalidOid; - Relation cstoreTables = NULL; + Oid cstoreDataFilesOid = InvalidOid; + Relation cstoreDataFiles = NULL; ModifyState *modifyState = NULL; - bool nulls[Natts_cstore_tables] = { 0 }; - Datum values[Natts_cstore_tables] = { + bool nulls[Natts_cstore_data_files] = { 0 }; + Datum values[Natts_cstore_data_files] = { ObjectIdGetDatum(relfilenode), Int32GetDatum(blockRowCount), Int32GetDatum(CSTORE_VERSION_MAJOR), Int32GetDatum(CSTORE_VERSION_MINOR) }; - DeleteTableMetadataRowIfExists(relfilenode); + DeleteDataFileMetadataRowIfExists(relfilenode); - cstoreTablesOid = CStoreTablesRelationId(); - cstoreTables = heap_open(cstoreTablesOid, RowExclusiveLock); + cstoreDataFilesOid = CStoreDataFilesRelationId(); + cstoreDataFiles = heap_open(cstoreDataFilesOid, RowExclusiveLock); - modifyState = StartModifyRelation(cstoreTables); + modifyState = StartModifyRelation(cstoreDataFiles); InsertTupleAndEnforceConstraints(modifyState, values, nulls); FinishModifyRelation(modifyState); CommandCounterIncrement(); - heap_close(cstoreTables, NoLock); + heap_close(cstoreDataFiles, NoLock); } @@ -338,11 +339,11 @@ InsertStripeMetadataRow(Oid relfilenode, StripeMetadata *stripe) /* - * ReadTableMetadata constructs TableMetadata for a given relfilenode by reading - * from cstore_tables and cstore_stripes. + * ReadDataFileMetadata constructs DataFileMetadata for a given relfilenode by reading + * from cstore_data_files and cstore_stripes. */ -TableMetadata * -ReadTableMetadata(Oid relfilenode) +DataFileMetadata * +ReadDataFileMetadata(Oid relfilenode) { Oid cstoreStripesOid = InvalidOid; Relation cstoreStripes = NULL; @@ -353,8 +354,8 @@ ReadTableMetadata(Oid relfilenode) HeapTuple heapTuple; bool found = false; - TableMetadata *tableMetadata = palloc0(sizeof(TableMetadata)); - found = ReadCStoreTables(relfilenode, &tableMetadata->blockRowCount); + DataFileMetadata *datafileMetadata = palloc0(sizeof(DataFileMetadata)); + found = ReadCStoreDataFiles(relfilenode, &datafileMetadata->blockRowCount); if (!found) { ereport(ERROR, (errmsg("Relfilenode %d doesn't belong to a cstore table.", @@ -394,40 +395,41 @@ ReadTableMetadata(Oid relfilenode) stripeMetadata->rowCount = DatumGetInt64( datumArray[Anum_cstore_stripes_row_count - 1]); - tableMetadata->stripeMetadataList = lappend(tableMetadata->stripeMetadataList, - stripeMetadata); + datafileMetadata->stripeMetadataList = lappend( + datafileMetadata->stripeMetadataList, + stripeMetadata); } systable_endscan_ordered(scanDescriptor); index_close(index, NoLock); heap_close(cstoreStripes, NoLock); - return tableMetadata; + return datafileMetadata; } /* - * ReadCStoreTables reads corresponding record from cstore_tables. Returns false if - * table was not found in cstore_tables. + * ReadCStoreDataFiles reads corresponding record from cstore_data_files. Returns + * false if table was not found in cstore_data_files. */ static bool -ReadCStoreTables(Oid relfilenode, uint64 *blockRowCount) +ReadCStoreDataFiles(Oid relfilenode, uint64 *blockRowCount) { bool found = false; - Oid cstoreTablesOid = InvalidOid; - Relation cstoreTables = NULL; + Oid cstoreDataFilesOid = InvalidOid; + Relation cstoreDataFiles = NULL; Relation index = NULL; TupleDesc tupleDescriptor = NULL; ScanKeyData scanKey[1]; SysScanDesc scanDescriptor = NULL; HeapTuple heapTuple = NULL; - ScanKeyInit(&scanKey[0], Anum_cstore_tables_relfilenode, + ScanKeyInit(&scanKey[0], Anum_cstore_data_files_relfilenode, BTEqualStrategyNumber, F_OIDEQ, Int32GetDatum(relfilenode)); - cstoreTablesOid = CStoreTablesRelationId(); - cstoreTables = try_relation_open(cstoreTablesOid, AccessShareLock); - if (cstoreTables == NULL) + cstoreDataFilesOid = CStoreDataFilesRelationId(); + cstoreDataFiles = try_relation_open(cstoreDataFilesOid, AccessShareLock); + if (cstoreDataFiles == NULL) { /* * Extension has been dropped. This can be called while @@ -436,77 +438,77 @@ ReadCStoreTables(Oid relfilenode, uint64 *blockRowCount) return false; } - index = try_relation_open(CStoreTablesIndexRelationId(), AccessShareLock); + index = try_relation_open(CStoreDataFilesIndexRelationId(), AccessShareLock); if (index == NULL) { - heap_close(cstoreTables, NoLock); + heap_close(cstoreDataFiles, NoLock); /* extension has been dropped */ return false; } - tupleDescriptor = RelationGetDescr(cstoreTables); + tupleDescriptor = RelationGetDescr(cstoreDataFiles); - scanDescriptor = systable_beginscan_ordered(cstoreTables, index, NULL, 1, scanKey); + scanDescriptor = systable_beginscan_ordered(cstoreDataFiles, index, NULL, 1, scanKey); heapTuple = systable_getnext(scanDescriptor); if (HeapTupleIsValid(heapTuple)) { - Datum datumArray[Natts_cstore_tables]; - bool isNullArray[Natts_cstore_tables]; + Datum datumArray[Natts_cstore_data_files]; + bool isNullArray[Natts_cstore_data_files]; heap_deform_tuple(heapTuple, tupleDescriptor, datumArray, isNullArray); - *blockRowCount = DatumGetInt32(datumArray[Anum_cstore_tables_block_row_count - + *blockRowCount = DatumGetInt32(datumArray[Anum_cstore_data_files_block_row_count - 1]); found = true; } systable_endscan_ordered(scanDescriptor); index_close(index, NoLock); - heap_close(cstoreTables, NoLock); + heap_close(cstoreDataFiles, NoLock); return found; } /* - * DeleteTableMetadataRowIfExists removes the row with given relfilenode from cstore_stripes. + * DeleteDataFileMetadataRowIfExists removes the row with given relfilenode from cstore_stripes. */ void -DeleteTableMetadataRowIfExists(Oid relfilenode) +DeleteDataFileMetadataRowIfExists(Oid relfilenode) { - Oid cstoreTablesOid = InvalidOid; - Relation cstoreTables = NULL; + Oid cstoreDataFilesOid = InvalidOid; + Relation cstoreDataFiles = NULL; Relation index = NULL; ScanKeyData scanKey[1]; SysScanDesc scanDescriptor = NULL; HeapTuple heapTuple = NULL; - ScanKeyInit(&scanKey[0], Anum_cstore_tables_relfilenode, + ScanKeyInit(&scanKey[0], Anum_cstore_data_files_relfilenode, BTEqualStrategyNumber, F_OIDEQ, Int32GetDatum(relfilenode)); - cstoreTablesOid = CStoreTablesRelationId(); - cstoreTables = try_relation_open(cstoreTablesOid, AccessShareLock); - if (cstoreTables == NULL) + cstoreDataFilesOid = CStoreDataFilesRelationId(); + cstoreDataFiles = try_relation_open(cstoreDataFilesOid, AccessShareLock); + if (cstoreDataFiles == NULL) { /* extension has been dropped */ return; } - index = index_open(CStoreTablesIndexRelationId(), AccessShareLock); + index = index_open(CStoreDataFilesIndexRelationId(), AccessShareLock); - scanDescriptor = systable_beginscan_ordered(cstoreTables, index, NULL, 1, scanKey); + scanDescriptor = systable_beginscan_ordered(cstoreDataFiles, index, NULL, 1, scanKey); heapTuple = systable_getnext(scanDescriptor); if (HeapTupleIsValid(heapTuple)) { - ModifyState *modifyState = StartModifyRelation(cstoreTables); + ModifyState *modifyState = StartModifyRelation(cstoreDataFiles); DeleteTupleAndEnforceConstraints(modifyState, heapTuple); FinishModifyRelation(modifyState); } systable_endscan_ordered(scanDescriptor); index_close(index, NoLock); - heap_close(cstoreTables, NoLock); + heap_close(cstoreDataFiles, NoLock); } @@ -711,24 +713,24 @@ CStoreStripesIndexRelationId(void) /* - * CStoreTablesRelationId returns relation id of cstore_tables. + * CStoreDataFilesRelationId returns relation id of cstore_data_files. * TODO: should we cache this similar to citus? */ static Oid -CStoreTablesRelationId(void) +CStoreDataFilesRelationId(void) { - return get_relname_relid("cstore_tables", CStoreNamespaceId()); + return get_relname_relid("cstore_data_files", CStoreNamespaceId()); } /* - * CStoreTablesIndexRelationId returns relation id of cstore_tables_idx. + * CStoreDataFilesIndexRelationId returns relation id of cstore_data_files_pkey. * TODO: should we cache this similar to citus? */ static Oid -CStoreTablesIndexRelationId(void) +CStoreDataFilesIndexRelationId(void) { - return get_relname_relid("cstore_tables_pkey", CStoreNamespaceId()); + return get_relname_relid("cstore_data_files_pkey", CStoreNamespaceId()); } diff --git a/cstore_reader.c b/cstore_reader.c index 2ee4101c0..66807ad08 100644 --- a/cstore_reader.c +++ b/cstore_reader.c @@ -84,11 +84,11 @@ CStoreBeginRead(Relation relation, TupleDesc tupleDescriptor, List *projectedColumnList, List *whereClauseList) { TableReadState *readState = NULL; - TableMetadata *tableMetadata = NULL; + DataFileMetadata *datafileMetadata = NULL; MemoryContext stripeReadContext = NULL; Oid relNode = relation->rd_node.relNode; - tableMetadata = ReadTableMetadata(relNode); + datafileMetadata = ReadDataFileMetadata(relNode); /* * We allocate all stripe specific data in the stripeReadContext, and reset @@ -101,7 +101,7 @@ CStoreBeginRead(Relation relation, TupleDesc tupleDescriptor, readState = palloc0(sizeof(TableReadState)); readState->relation = relation; - readState->tableMetadata = tableMetadata; + readState->datafileMetadata = datafileMetadata; readState->projectedColumnList = projectedColumnList; readState->whereClauseList = whereClauseList; readState->stripeBuffers = NULL; @@ -139,7 +139,7 @@ CStoreReadNextRow(TableReadState *readState, Datum *columnValues, bool *columnNu { StripeBuffers *stripeBuffers = NULL; StripeMetadata *stripeMetadata = NULL; - List *stripeMetadataList = readState->tableMetadata->stripeMetadataList; + List *stripeMetadataList = readState->datafileMetadata->stripeMetadataList; uint32 stripeCount = list_length(stripeMetadataList); /* if we have read all stripes, return false */ @@ -229,8 +229,8 @@ void CStoreEndRead(TableReadState *readState) { MemoryContextDelete(readState->stripeReadContext); - list_free_deep(readState->tableMetadata->stripeMetadataList); - pfree(readState->tableMetadata); + list_free_deep(readState->datafileMetadata->stripeMetadataList); + pfree(readState->datafileMetadata); pfree(readState); } @@ -305,13 +305,13 @@ FreeBlockData(BlockData *blockData) uint64 CStoreTableRowCount(Relation relation) { - TableMetadata *tableMetadata = NULL; + DataFileMetadata *datafileMetadata = NULL; ListCell *stripeMetadataCell = NULL; uint64 totalRowCount = 0; - tableMetadata = ReadTableMetadata(relation->rd_node.relNode); + datafileMetadata = ReadDataFileMetadata(relation->rd_node.relNode); - foreach(stripeMetadataCell, tableMetadata->stripeMetadataList) + foreach(stripeMetadataCell, datafileMetadata->stripeMetadataList) { StripeMetadata *stripeMetadata = (StripeMetadata *) lfirst(stripeMetadataCell); totalRowCount += stripeMetadata->rowCount; diff --git a/cstore_tableam.c b/cstore_tableam.c index 6d02ebe24..4e7f22c31 100644 --- a/cstore_tableam.c +++ b/cstore_tableam.c @@ -443,12 +443,13 @@ cstore_relation_set_new_filenode(Relation rel, MultiXactId *minmulti) { SMgrRelation srel; + CStoreOptions *options = CStoreTableAMGetOptions(); Assert(persistence == RELPERSISTENCE_PERMANENT); *freezeXid = RecentXmin; *minmulti = GetOldestMultiXactId(); srel = RelationCreateStorage(*newrnode, persistence); - InitializeCStoreTableFile(newrnode->relNode, CStoreTableAMGetOptions()); + InitCStoreDataFileMetadata(newrnode->relNode, options->blockRowCount); smgrclose(srel); } @@ -686,7 +687,7 @@ CStoreTableAMObjectAccessHook(ObjectAccessType access, Oid classId, Oid objectId * tableam tables storage is managed by postgres. */ Relation rel = table_open(objectId, AccessExclusiveLock); - DeleteTableMetadataRowIfExists(rel->rd_node.relNode); + DeleteDataFileMetadataRowIfExists(rel->rd_node.relNode); /* keep the lock since we did physical changes to the relation */ table_close(rel, NoLock); diff --git a/cstore_writer.c b/cstore_writer.c index 728c855b4..c70b448c7 100644 --- a/cstore_writer.c +++ b/cstore_writer.c @@ -45,7 +45,7 @@ static void UpdateBlockSkipNodeMinMax(ColumnBlockSkipNode *blockSkipNode, int columnTypeLength, Oid columnCollation, FmgrInfo *comparisonFunction); static Datum DatumCopy(Datum datum, bool datumTypeByValue, int datumTypeLength); -static void AppendStripeMetadata(TableMetadata *tableMetadata, +static void AppendStripeMetadata(DataFileMetadata *datafileMetadata, StripeMetadata stripeMetadata); static StringInfo CopyStringInfo(StringInfo sourceString); @@ -64,7 +64,7 @@ CStoreBeginWrite(Relation relation, TupleDesc tupleDescriptor) { TableWriteState *writeState = NULL; - TableMetadata *tableMetadata = NULL; + DataFileMetadata *datafileMetadata = NULL; FmgrInfo **comparisonFunctionArray = NULL; MemoryContext stripeWriteContext = NULL; uint64 currentFileOffset = 0; @@ -75,18 +75,18 @@ CStoreBeginWrite(Relation relation, uint64 currentStripeId = 0; Oid relNode = relation->rd_node.relNode; - tableMetadata = ReadTableMetadata(relNode); + datafileMetadata = ReadDataFileMetadata(relNode); /* * If stripeMetadataList is not empty, jump to the position right after * the last position. */ - if (tableMetadata->stripeMetadataList != NIL) + if (datafileMetadata->stripeMetadataList != NIL) { StripeMetadata *lastStripe = NULL; uint64 lastStripeSize = 0; - lastStripe = llast(tableMetadata->stripeMetadataList); + lastStripe = llast(datafileMetadata->stripeMetadataList); lastStripeSize += lastStripe->dataLength; currentFileOffset = lastStripe->fileOffset + lastStripeSize; @@ -129,7 +129,7 @@ CStoreBeginWrite(Relation relation, writeState = palloc0(sizeof(TableWriteState)); writeState->relation = relation; - writeState->tableMetadata = tableMetadata; + writeState->datafileMetadata = datafileMetadata; writeState->compressionType = compressionType; writeState->stripeMaxRowCount = stripeMaxRowCount; writeState->blockRowCount = blockRowCount; @@ -164,7 +164,7 @@ CStoreWriteRow(TableWriteState *writeState, Datum *columnValues, bool *columnNul StripeBuffers *stripeBuffers = writeState->stripeBuffers; StripeSkipList *stripeSkipList = writeState->stripeSkipList; uint32 columnCount = writeState->tupleDescriptor->natts; - TableMetadata *tableMetadata = writeState->tableMetadata; + DataFileMetadata *datafileMetadata = writeState->datafileMetadata; const uint32 blockRowCount = writeState->blockRowCount; BlockData *blockData = writeState->blockData; MemoryContext oldContext = MemoryContextSwitchTo(writeState->stripeWriteContext); @@ -254,7 +254,7 @@ CStoreWriteRow(TableWriteState *writeState, Datum *columnValues, bool *columnNul MemoryContextSwitchTo(oldContext); InsertStripeMetadataRow(writeState->relation->rd_node.relNode, &stripeMetadata); - AppendStripeMetadata(tableMetadata, stripeMetadata); + AppendStripeMetadata(datafileMetadata, stripeMetadata); } else { @@ -284,11 +284,11 @@ CStoreEndWrite(TableWriteState *writeState) MemoryContextSwitchTo(oldContext); InsertStripeMetadataRow(writeState->relation->rd_node.relNode, &stripeMetadata); - AppendStripeMetadata(writeState->tableMetadata, stripeMetadata); + AppendStripeMetadata(writeState->datafileMetadata, stripeMetadata); } MemoryContextDelete(writeState->stripeWriteContext); - list_free_deep(writeState->tableMetadata->stripeMetadataList); + list_free_deep(writeState->datafileMetadata->stripeMetadataList); pfree(writeState->comparisonFunctionArray); FreeBlockData(writeState->blockData); pfree(writeState); @@ -791,13 +791,13 @@ DatumCopy(Datum datum, bool datumTypeByValue, int datumTypeLength) * table footer's stripeMetadataList. */ static void -AppendStripeMetadata(TableMetadata *tableMetadata, StripeMetadata stripeMetadata) +AppendStripeMetadata(DataFileMetadata *datafileMetadata, StripeMetadata stripeMetadata) { StripeMetadata *stripeMetadataCopy = palloc0(sizeof(StripeMetadata)); memcpy(stripeMetadataCopy, &stripeMetadata, sizeof(StripeMetadata)); - tableMetadata->stripeMetadataList = lappend(tableMetadata->stripeMetadataList, - stripeMetadataCopy); + datafileMetadata->stripeMetadataList = lappend(datafileMetadata->stripeMetadataList, + stripeMetadataCopy); } diff --git a/expected/am_drop.out b/expected/am_drop.out index c1fc60519..26de328f6 100644 --- a/expected/am_drop.out +++ b/expected/am_drop.out @@ -12,12 +12,12 @@ -- 'postgres' directory is excluded from comparison to have the same result. -- store postgres database oid SELECT oid postgres_oid FROM pg_database WHERE datname = 'postgres' \gset -SELECT count(*) AS cstore_tables_before_drop FROM cstore.cstore_tables \gset +SELECT count(*) AS cstore_data_files_before_drop FROM cstore.cstore_data_files \gset -- DROP cstore_fdw tables DROP TABLE contestant; DROP TABLE contestant_compressed; -- make sure DROP deletes metadata -SELECT :cstore_tables_before_drop - count(*) FROM cstore.cstore_tables; +SELECT :cstore_data_files_before_drop - count(*) FROM cstore.cstore_data_files; ?column? ---------- 2 @@ -26,10 +26,10 @@ SELECT :cstore_tables_before_drop - count(*) FROM cstore.cstore_tables; -- Create a cstore_fdw table under a schema and drop it. CREATE SCHEMA test_schema; CREATE TABLE test_schema.test_table(data int) USING cstore_tableam; -SELECT count(*) AS cstore_tables_before_drop FROM cstore.cstore_tables \gset +SELECT count(*) AS cstore_data_files_before_drop FROM cstore.cstore_data_files \gset DROP SCHEMA test_schema CASCADE; NOTICE: drop cascades to table test_schema.test_table -SELECT :cstore_tables_before_drop - count(*) FROM cstore.cstore_tables; +SELECT :cstore_data_files_before_drop - count(*) FROM cstore.cstore_data_files; ?column? ---------- 1 diff --git a/expected/fdw_drop.out b/expected/fdw_drop.out index 24c0f518d..e1ddf0fd0 100644 --- a/expected/fdw_drop.out +++ b/expected/fdw_drop.out @@ -12,12 +12,12 @@ -- 'postgres' directory is excluded from comparison to have the same result. -- store postgres database oid SELECT oid postgres_oid FROM pg_database WHERE datname = 'postgres' \gset -SELECT count(*) AS cstore_tables_before_drop FROM cstore.cstore_tables \gset +SELECT count(*) AS cstore_data_files_before_drop FROM cstore.cstore_data_files \gset -- DROP cstore_fdw tables DROP FOREIGN TABLE contestant; DROP FOREIGN TABLE contestant_compressed; -- make sure DROP deletes metadata -SELECT :cstore_tables_before_drop - count(*) FROM cstore.cstore_tables; +SELECT :cstore_data_files_before_drop - count(*) FROM cstore.cstore_data_files; ?column? ---------- 2 @@ -26,10 +26,10 @@ SELECT :cstore_tables_before_drop - count(*) FROM cstore.cstore_tables; -- Create a cstore_fdw table under a schema and drop it. CREATE SCHEMA test_schema; CREATE FOREIGN TABLE test_schema.test_table(data int) SERVER cstore_server; -SELECT count(*) AS cstore_tables_before_drop FROM cstore.cstore_tables \gset +SELECT count(*) AS cstore_data_files_before_drop FROM cstore.cstore_data_files \gset DROP SCHEMA test_schema CASCADE; NOTICE: drop cascades to foreign table test_schema.test_table -SELECT :cstore_tables_before_drop - count(*) FROM cstore.cstore_tables; +SELECT :cstore_data_files_before_drop - count(*) FROM cstore.cstore_data_files; ?column? ---------- 1 diff --git a/sql/am_drop.sql b/sql/am_drop.sql index 06873aa6e..080712881 100644 --- a/sql/am_drop.sql +++ b/sql/am_drop.sql @@ -15,22 +15,22 @@ -- store postgres database oid SELECT oid postgres_oid FROM pg_database WHERE datname = 'postgres' \gset -SELECT count(*) AS cstore_tables_before_drop FROM cstore.cstore_tables \gset +SELECT count(*) AS cstore_data_files_before_drop FROM cstore.cstore_data_files \gset -- DROP cstore_fdw tables DROP TABLE contestant; DROP TABLE contestant_compressed; -- make sure DROP deletes metadata -SELECT :cstore_tables_before_drop - count(*) FROM cstore.cstore_tables; +SELECT :cstore_data_files_before_drop - count(*) FROM cstore.cstore_data_files; -- Create a cstore_fdw table under a schema and drop it. CREATE SCHEMA test_schema; CREATE TABLE test_schema.test_table(data int) USING cstore_tableam; -SELECT count(*) AS cstore_tables_before_drop FROM cstore.cstore_tables \gset +SELECT count(*) AS cstore_data_files_before_drop FROM cstore.cstore_data_files \gset DROP SCHEMA test_schema CASCADE; -SELECT :cstore_tables_before_drop - count(*) FROM cstore.cstore_tables; +SELECT :cstore_data_files_before_drop - count(*) FROM cstore.cstore_data_files; SELECT current_database() datname \gset diff --git a/sql/fdw_drop.sql b/sql/fdw_drop.sql index 7c6dd5c6e..f89374a5a 100644 --- a/sql/fdw_drop.sql +++ b/sql/fdw_drop.sql @@ -15,22 +15,22 @@ -- store postgres database oid SELECT oid postgres_oid FROM pg_database WHERE datname = 'postgres' \gset -SELECT count(*) AS cstore_tables_before_drop FROM cstore.cstore_tables \gset +SELECT count(*) AS cstore_data_files_before_drop FROM cstore.cstore_data_files \gset -- DROP cstore_fdw tables DROP FOREIGN TABLE contestant; DROP FOREIGN TABLE contestant_compressed; -- make sure DROP deletes metadata -SELECT :cstore_tables_before_drop - count(*) FROM cstore.cstore_tables; +SELECT :cstore_data_files_before_drop - count(*) FROM cstore.cstore_data_files; -- Create a cstore_fdw table under a schema and drop it. CREATE SCHEMA test_schema; CREATE FOREIGN TABLE test_schema.test_table(data int) SERVER cstore_server; -SELECT count(*) AS cstore_tables_before_drop FROM cstore.cstore_tables \gset +SELECT count(*) AS cstore_data_files_before_drop FROM cstore.cstore_data_files \gset DROP SCHEMA test_schema CASCADE; -SELECT :cstore_tables_before_drop - count(*) FROM cstore.cstore_tables; +SELECT :cstore_data_files_before_drop - count(*) FROM cstore.cstore_data_files; SELECT current_database() datname \gset