This is an automated email from the ASF dual-hosted git repository.
chenjinbao1989 pushed a commit to branch cbdb-postgres-merge
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
The following commit(s) were added to refs/heads/cbdb-postgres-merge by this
push:
new 4f6311a1887 Fix compile errors for appendonly
4f6311a1887 is described below
commit 4f6311a188772550985331cd5e1791d601e11ca8
Author: Jinbao Chen <[email protected]>
AuthorDate: Mon Sep 29 11:08:14 2025 +0800
Fix compile errors for appendonly
---
src/backend/access/appendonly/aomd.c | 45 ++++++++++------------
src/backend/access/appendonly/aosegfiles.c | 23 +++++------
.../access/appendonly/appendonly_compaction.c | 14 +++----
src/backend/access/appendonly/appendonlyam.c | 26 ++++++-------
.../access/appendonly/appendonlyam_handler.c | 20 +++++-----
src/backend/access/appendonly/appendonlywriter.c | 9 ++---
src/backend/catalog/catalog.c | 4 +-
src/backend/cdb/cdbappendonlystorageread.c | 2 +-
src/backend/cdb/cdbappendonlystoragewrite.c | 4 +-
src/backend/cdb/cdbappendonlyxlog.c | 2 +-
src/backend/cdb/cdbbufferedread.c | 2 +-
src/backend/storage/smgr/md.c | 2 +-
src/backend/storage/smgr/smgr.c | 2 +-
src/include/access/aomd.h | 4 +-
src/include/catalog/catalog.h | 5 ++-
src/include/catalog/pg_attribute_encoding.h | 3 +-
src/include/cdb/cdbappendonlystorageread.h | 2 +-
src/include/cdb/cdbappendonlystoragewrite.h | 4 +-
src/include/cdb/cdbappendonlyxlog.h | 6 +--
src/include/cdb/cdbbufferedread.h | 4 +-
src/include/common/relpath.h | 2 +-
src/include/storage/md.h | 2 +-
src/include/storage/smgr.h | 2 +-
src/include/storage/sync.h | 2 +-
24 files changed, 89 insertions(+), 102 deletions(-)
diff --git a/src/backend/access/appendonly/aomd.c
b/src/backend/access/appendonly/aomd.c
index 342e7771b7b..0ce46426c58 100644
--- a/src/backend/access/appendonly/aomd.c
+++ b/src/backend/access/appendonly/aomd.c
@@ -62,7 +62,7 @@ AOSegmentFilePathNameLen(Relation rel)
int len;
/* Get base path for this relation file */
- basepath = relpathbackend(rel->rd_node, rel->rd_backend, MAIN_FORKNUM);
+ basepath = relpathbackend(rel->rd_locator, rel->rd_backend,
MAIN_FORKNUM);
/*
* The basepath will be the RelFileNode number. Optional part is dot
"." plus
@@ -133,7 +133,7 @@ MakeAOSegmentFileName(Relation rel,
int32 fileSegNoLocal;
/* Get base path for this relation file */
- basepath = relpathbackend(rel->rd_node, rel->rd_backend, MAIN_FORKNUM);
+ basepath = relpathbackend(rel->rd_locator, rel->rd_backend,
MAIN_FORKNUM);
FormatAOSegmentFileName(basepath, segno, filenum, &fileSegNoLocal,
filepathname);
@@ -158,9 +158,7 @@ OpenAOSegmentFile(Relation rel,
errno = 0;
- RelationOpenSmgr(rel);
-
- fd =
rel->rd_smgr->smgr_ao->smgr_AORelOpenSegFile(RelationGetRelid(rel),
filepathname, fileFlags);
+ fd =
RelationGetSmgr(rel)->smgr_ao->smgr_AORelOpenSegFile(RelationGetRelid(rel),
filepathname, fileFlags);
if (fd < 0)
{
if (logicalEof == 0 && errno == ENOENT)
@@ -183,9 +181,8 @@ void
CloseAOSegmentFile(File fd, Relation rel)
{
Assert(fd > 0);
- RelationOpenSmgr(rel);
- rel->rd_smgr->smgr_ao->smgr_FileClose(fd);
+ RelationGetSmgr(rel)->smgr_ao->smgr_FileClose(fd);
}
/*
@@ -200,9 +197,7 @@ TruncateAOSegmentFile(File fd, Relation rel, int32
segFileNum, int64 offset, AOV
Assert(fd > 0);
Assert(offset >= 0);
- RelationOpenSmgr(rel);
-
- filesize_before = rel->rd_smgr->smgr_ao->smgr_FileSize(fd);
+ filesize_before = RelationGetSmgr(rel)->smgr_ao->smgr_FileSize(fd);
if (filesize_before < offset)
ereport(ERROR,
(errmsg("\"%s\": file size smaller than logical
eof: %m",
@@ -225,14 +220,14 @@ TruncateAOSegmentFile(File fd, Relation rel, int32
segFileNum, int64 offset, AOV
}
if (XLogIsNeeded() && RelationNeedsWAL(rel))
- xlog_ao_truncate(rel->rd_node, segFileNum, offset);
+ xlog_ao_truncate(rel->rd_locator, segFileNum, offset);
SIMPLE_FAULT_INJECTOR("appendonly_after_truncate_segment_file");
if (file_truncate_hook)
{
- RelFileNodeBackend rnode;
- rnode.node = rel->rd_node;
+ RelFileLocatorBackend rnode;
+ rnode.locator = rel->rd_locator;
rnode.backend = rel->rd_backend;
(*file_truncate_hook)(rnode);
}
@@ -240,7 +235,7 @@ TruncateAOSegmentFile(File fd, Relation rel, int32
segFileNum, int64 offset, AOV
struct mdunlink_ao_callback_ctx
{
- RelFileNode rnode; /* used to register forget request */
+ RelFileLocator rnode; /* used to register forget request */
char *segPath;
char *segpathSuffixPosition;
bool isRedo;
@@ -254,7 +249,7 @@ struct truncate_ao_callback_ctx
};
void
-mdunlink_ao(RelFileNodeBackend rnode, ForkNumber forkNumber, bool isRedo)
+mdunlink_ao(RelFileLocatorBackend rnode, ForkNumber forkNumber, bool isRedo)
{
const char *path = relpath(rnode, forkNumber);
@@ -280,7 +275,7 @@ mdunlink_ao(RelFileNodeBackend rnode, ForkNumber
forkNumber, bool isRedo)
char *segPathSuffixPosition = segPath + pathSize;
struct mdunlink_ao_callback_ctx unlinkFiles;
unlinkFiles.isRedo = isRedo;
- unlinkFiles.rnode = rnode.node;
+ unlinkFiles.rnode = rnode.locator;
strncpy(segPath, path, pathSize);
@@ -397,7 +392,7 @@ mdunlink_ao_perFile(const int segno, void *ctx)
static void
copy_file(char *srcsegpath, char *dstsegpath,
- RelFileNode dst, SMgrRelation srcSMGR, SMgrRelation dstSMGR,
+ RelFileLocator dst, SMgrRelation srcSMGR, SMgrRelation
dstSMGR,
int segfilenum, bool use_wal)
{
File srcFile;
@@ -475,8 +470,8 @@ struct copy_append_only_data_callback_ctx {
char *dstPath;
SMgrRelation srcSMGR;
SMgrRelation dstSMGR;
- RelFileNode src;
- RelFileNode dst;
+ RelFileLocator src;
+ RelFileLocator dst;
bool useWal;
};
@@ -485,7 +480,7 @@ struct copy_append_only_data_callback_ctx {
*
*/
void
-copy_append_only_data(RelFileNode src, RelFileNode dst,
+copy_append_only_data(RelFileLocator src, RelFileLocator dst,
SMgrRelation srcSMGR, SMgrRelation dstSMGR,
BackendId backendid, char relpersistence)
{
@@ -516,8 +511,8 @@ copy_append_only_data(RelFileNode src, RelFileNode dst,
if (file_extend_hook)
{
- RelFileNodeBackend rnode;
- rnode.node = dst;
+ RelFileLocatorBackend rnode;
+ rnode.locator = dst;
rnode.backend = backendid;
(*file_extend_hook)(rnode);
}
@@ -562,7 +557,7 @@ ao_truncate_one_rel(Relation rel)
int pathSize;
/* Get base path for this relation file */
- basepath = relpathbackend(rel->rd_node, rel->rd_backend, MAIN_FORKNUM);
+ basepath = relpathbackend(rel->rd_locator, rel->rd_backend,
MAIN_FORKNUM);
pathSize = strlen(basepath);
segPath = (char *) palloc(pathSize + SEGNO_SUFFIX_LENGTH);
@@ -710,7 +705,7 @@ ao_segfile_get_physical_size(Relation aorel, int segno,
FileNumber filenum)
"Opening append-optimized relation \"%s\", relation id %u,
relfilenode %u filenum #%d, logical segment #%d (physical segment file #%d)",
relname,
aorel->rd_id,
- aorel->rd_node.relNode,
+ aorel->rd_locator.relNumber,
filenum,
segno,
fileSegNo);
@@ -722,7 +717,7 @@ ao_segfile_get_physical_size(Relation aorel, int segno,
FileNumber filenum)
"No gp_relation_node entry for append-optimized
relation \"%s\", relation id %u, relfilenode %u filenum #%d, logical segment
#%d (physical segment file #%d)",
relname,
aorel->rd_id,
- aorel->rd_node.relNode,
+ aorel->rd_locator.relNumber,
filenum,
segno,
fileSegNo);
diff --git a/src/backend/access/appendonly/aosegfiles.c
b/src/backend/access/appendonly/aosegfiles.c
index f2997eb2044..7accab16ecf 100644
--- a/src/backend/access/appendonly/aosegfiles.c
+++ b/src/backend/access/appendonly/aosegfiles.c
@@ -47,7 +47,6 @@
#include "utils/builtins.h"
#include "utils/faultinjector.h"
#include "utils/guc.h"
-#include "utils/int8.h"
#include "utils/lsyscache.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
@@ -621,6 +620,7 @@ ClearFileSegInfo(Relation parentrel, int segno)
bool *new_record_repl;
bool isNull;
Oid segrelid;
+ TU_UpdateIndexes updateIndexes = TU_All;
GetAppendOnlyEntryAuxOids(parentrel, &segrelid, NULL, NULL, NULL, NULL);
@@ -677,7 +677,7 @@ ClearFileSegInfo(Relation parentrel, int segno)
new_tuple = heap_modify_tuple(tuple, pg_aoseg_dsc, new_record,
new_record_nulls, new_record_repl);
- simple_heap_update(pg_aoseg_rel, &tuple->t_self, new_tuple);
+ simple_heap_update(pg_aoseg_rel, &tuple->t_self, new_tuple,
&updateIndexes);
heap_freetuple(new_tuple);
table_endscan(aoscan);
@@ -757,6 +757,7 @@ UpdateFileSegInfo_internal(Relation parentrel,
bool *new_record_repl;
bool isNull;
Oid segrelid;
+ TU_UpdateIndexes updateIndexes = TU_All;
Assert(RelationStorageIsAoRows(parentrel));
GetAppendOnlyEntryAuxOids(parentrel, &segrelid, NULL, NULL, NULL, NULL);
@@ -828,7 +829,7 @@ UpdateFileSegInfo_internal(Relation parentrel,
{
elog(ERROR, "Unexpected compressed EOF for relation %s,
relfilenode %u, segment file %d. "
"EOF " INT64_FORMAT " to be updated cannot be smaller
than current EOF " INT64_FORMAT " in pg_aoseg",
- RelationGetRelationName(parentrel),
parentrel->rd_node.relNode,
+ RelationGetRelationName(parentrel),
parentrel->rd_locator.relNumber,
segno, eof, old_eof);
}
@@ -849,7 +850,7 @@ UpdateFileSegInfo_internal(Relation parentrel,
{
elog(ERROR, "Unexpected EOF for relation %s, relfilenode %u,
segment file %d."
"EOF " INT64_FORMAT " to be updated cannot be smaller
than current EOF " INT64_FORMAT " in pg_aoseg",
- RelationGetRelationName(parentrel),
parentrel->rd_node.relNode,
+ RelationGetRelationName(parentrel),
parentrel->rd_locator.relNumber,
segno, eof_uncompressed, old_eof_uncompressed);
}
@@ -925,7 +926,7 @@ UpdateFileSegInfo_internal(Relation parentrel,
new_tuple = heap_modify_tuple(tuple, pg_aoseg_dsc, new_record,
new_record_nulls, new_record_repl);
- simple_heap_update(pg_aoseg_rel, &tuple->t_self, new_tuple);
+ simple_heap_update(pg_aoseg_rel, &tuple->t_self, new_tuple,
&updateIndexes);
heap_freetuple(new_tuple);
@@ -1635,10 +1636,10 @@ aorow_compression_ratio_internal(Relation parentrel)
{
compress_ratio = 1;
}
- else if (scanint8(attr1, true, &eof) &&
- scanint8(attr2, true, &eof_uncomp))
+ else
{
- /* guard against division by zero */
+ eof = pg_strtoint64(attr1);
+ eof_uncomp = pg_strtoint64(attr2);
if (eof > 0)
{
/* calculate the compression ratio */
@@ -1648,12 +1649,6 @@ aorow_compression_ratio_internal(Relation parentrel)
compress_ratio = round(compress_ratio *
100.0) / 100.0;
}
}
- else
- {
- ereport(ERROR,
-
(errcode(ERRCODE_INTERNAL_ERROR),
- errmsg("unable to parse aorow
compress_ratio string to int8.")));
- }
}
connected = false;
diff --git a/src/backend/access/appendonly/appendonly_compaction.c
b/src/backend/access/appendonly/appendonly_compaction.c
index 05b2143b246..b8cae6ebf6c 100644
--- a/src/backend/access/appendonly/appendonly_compaction.c
+++ b/src/backend/access/appendonly/appendonly_compaction.c
@@ -252,7 +252,7 @@ AppendOnlySegmentFileTruncateToEOF(Relation aorel, int
segno, int64 segeof, AOVa
get_namespace_name(RelationGetNamespace(aorel)),
relname,
aorel->rd_id,
- aorel->rd_node.relNode,
+ aorel->rd_locator.relNumber,
segno,
segeof);
@@ -267,7 +267,7 @@ AppendOnlySegmentFileTruncateToEOF(Relation aorel, int
segno, int64 segeof, AOVa
get_namespace_name(RelationGetNamespace(aorel)),
relname,
aorel->rd_id,
- aorel->rd_node.relNode,
+ aorel->rd_locator.relNumber,
segno,
segeof);
}
@@ -278,7 +278,7 @@ AppendOnlySegmentFileTruncateToEOF(Relation aorel, int
segno, int64 segeof, AOVa
get_namespace_name(RelationGetNamespace(aorel)),
relname,
aorel->rd_id,
- aorel->rd_node.relNode,
+ aorel->rd_locator.relNumber,
segno,
segeof);
}
@@ -315,7 +315,7 @@ AppendOnlyMoveTuple(TupleTableSlot *slot,
{
ExecInsertIndexTuples(resultRelInfo,
slot, estate, false, false,
-
NULL, NIL);
+
NULL, NIL, false);
ResetPerTupleExprContext(estate);
}
@@ -362,7 +362,7 @@ AppendOnlyThrowAwayTuple(Relation rel, TupleTableSlot
*slot, MemTupleBinding *mt
if (toast_isnull[i])
continue;
- else if
(VARATT_IS_EXTERNAL_ONDISK(PointerGetDatum(value)))
+ else if (VARATT_IS_EXTERNAL_ONDISK(value))
toast_delete_datum(rel, value, false);
}
}
@@ -727,7 +727,7 @@ AppendOptimizedTruncateToEOF(Relation aorel,
AOVacuumRelStats *vacrelstats)
* The algorithm below for choosing a target segment is not
concurrent-safe.
* Grab a lock to serialize.
*/
- LockDatabaseObject(aorel->rd_node.dbNode, (Oid)aorel->rd_node.relNode,
0, ExclusiveLock);
+ LockDatabaseObject(aorel->rd_locator.dbOid,
(Oid)aorel->rd_locator.relNumber, 0, ExclusiveLock);
GetAppendOnlyEntryAuxOids(aorel,
&segrelid, NULL,
NULL, NULL, NULL);
@@ -787,7 +787,7 @@ AppendOptimizedTruncateToEOF(Relation aorel,
AOVacuumRelStats *vacrelstats)
}
}
systable_endscan(aoscan);
- UnlockDatabaseObject(aorel->rd_node.dbNode,
(Oid)aorel->rd_node.relNode, 0, ExclusiveLock);
+ UnlockDatabaseObject(aorel->rd_locator.dbOid,
(Oid)aorel->rd_locator.relNumber, 0, ExclusiveLock);
heap_close(pg_aoseg_rel, AccessShareLock);
UnregisterSnapshot(appendOnlyMetaDataSnapshot);
}
diff --git a/src/backend/access/appendonly/appendonlyam.c
b/src/backend/access/appendonly/appendonlyam.c
index 2f590a8678e..f541aee4dec 100755
--- a/src/backend/access/appendonly/appendonlyam.c
+++ b/src/backend/access/appendonly/appendonlyam.c
@@ -166,7 +166,6 @@ SetNextFileSegForRead(AppendOnlyScanDesc scan)
if (!scan->initedStorageRoutines)
{
PGFunction *fns = NULL;
- RelationOpenSmgr(reln);
AppendOnlyStorageRead_Init(
&scan->storageRead,
@@ -176,7 +175,8 @@ SetNextFileSegForRead(AppendOnlyScanDesc scan)
RelationGetRelid(scan->aos_rd),
scan->title,
&scan->storageAttributes,
-
&scan->aos_rd->rd_node, reln->rd_smgr->smgr_ao);
+
&scan->aos_rd->rd_locator,
+
RelationGetSmgr(reln)->smgr_ao);
/*
* There is no guarantee that the current memory context will be
@@ -313,9 +313,9 @@ SetNextFileSegForRead(AppendOnlyScanDesc scan)
"Append-only scan initialize for table '%s', %u/%u/%u,
segment file %u, EOF " INT64_FORMAT ", "
"(compression = %s, usable blocksize %d)",
NameStr(scan->aos_rd->rd_rel->relname),
- scan->aos_rd->rd_node.spcNode,
- scan->aos_rd->rd_node.dbNode,
- scan->aos_rd->rd_node.relNode,
+ scan->aos_rd->rd_locator.spcOid,
+ scan->aos_rd->rd_locator.dbOid,
+ scan->aos_rd->rd_locator.relNumber,
segno,
eof,
(scan->storageAttributes.compress ? "true" : "false"),
@@ -347,7 +347,7 @@
errcontext_appendonly_insert_block_user_limit(AppendOnlyInsertDesc aoInsertDesc)
static void
SetCurrentFileSegForWrite(AppendOnlyInsertDesc aoInsertDesc)
{
- RelFileNodeBackend rnode;
+ RelFileLocatorBackend rnode;
FileSegInfo *fsinfo;
int64 eof;
@@ -355,7 +355,7 @@ SetCurrentFileSegForWrite(AppendOnlyInsertDesc aoInsertDesc)
int64 varblockcount;
int32 fileSegNo;
- rnode.node = aoInsertDesc->aoi_rel->rd_node;
+ rnode.locator = aoInsertDesc->aoi_rel->rd_locator;
rnode.backend = aoInsertDesc->aoi_rel->rd_backend;
/* Make the 'segment' file name */
@@ -2106,8 +2106,6 @@ appendonly_fetch_init(Relation relation,
aoFetchDesc->lastSequence[segno] =
ReadLastSequence(aoFormData.segrelid, segno);
}
- RelationOpenSmgr(relation);
-
AppendOnlyStorageRead_Init(
&aoFetchDesc->storageRead,
aoFetchDesc->initContext,
@@ -2116,7 +2114,8 @@ appendonly_fetch_init(Relation relation,
RelationGetRelid(aoFetchDesc->relation),
aoFetchDesc->title,
&aoFetchDesc->storageAttributes,
- &relation->rd_node,
relation->rd_smgr->smgr_ao);
+
&relation->rd_locator,
+
RelationGetSmgr(relation)->smgr_ao);
fns = get_funcs_for_compression(NameStr(aoFormData.compresstype));
@@ -2188,7 +2187,7 @@ appendonly_fetch(AppendOnlyFetchDesc aoFetchDesc,
ereport(ERROR,
(errcode(ERRCODE_INTERNAL_ERROR),
errmsg("Row No. %ld in segment file No. %d is
out of scanning scope for target relfilenode %u.",
- rowNum, segmentFileNum,
aoFetchDesc->relation->rd_node.relNode)));
+ rowNum, segmentFileNum,
aoFetchDesc->relation->rd_locator.relNumber)));
/*
* This is an improvement for brin. BRIN index stores ranges of TIDs in
@@ -2634,8 +2633,6 @@ appendonly_insert_init(Relation rel, int segno)
RelationGetRelationName(aoInsertDesc->aoi_rel));
aoInsertDesc->title = titleBuf.data;
- RelationOpenSmgr(rel);
-
AppendOnlyStorageWrite_Init(
&aoInsertDesc->storageWrite,
NULL,
@@ -2644,7 +2641,8 @@ appendonly_insert_init(Relation rel, int segno)
RelationGetRelid(aoInsertDesc->aoi_rel),
aoInsertDesc->title,
&aoInsertDesc->storageAttributes,
- XLogIsNeeded()
&& RelationNeedsWAL(aoInsertDesc->aoi_rel), rel->rd_smgr->smgr_ao);
+ XLogIsNeeded()
&& RelationNeedsWAL(aoInsertDesc->aoi_rel),
+
RelationGetSmgr(rel)->smgr_ao);
aoInsertDesc->storageWrite.compression_functions = fns;
aoInsertDesc->storageWrite.compressionState = cs;
diff --git a/src/backend/access/appendonly/appendonlyam_handler.c
b/src/backend/access/appendonly/appendonlyam_handler.c
index 0136d4a850f..71ef7cef755 100644
--- a/src/backend/access/appendonly/appendonlyam_handler.c
+++ b/src/backend/access/appendonly/appendonlyam_handler.c
@@ -1076,7 +1076,7 @@ static TM_Result
appendonly_tuple_update(Relation relation, ItemPointer otid, TupleTableSlot
*slot,
CommandId cid, Snapshot snapshot,
Snapshot crosscheck,
bool wait, TM_FailureData *tmfd,
- LockTupleMode *lockmode, bool
*update_indexes)
+ LockTupleMode *lockmode,
TU_UpdateIndexes *update_indexes)
{
AppendOnlyInsertDesc insertDesc;
AppendOnlyDeleteDesc deleteDesc;
@@ -1107,9 +1107,9 @@ appendonly_tuple_update(Relation relation, ItemPointer
otid, TupleTableSlot *slo
appendonly_insert(insertDesc, mtuple, (AOTupleId *) &slot->tts_tid);
- pgstat_count_heap_update(relation, false);
+ pgstat_count_heap_update(relation, false, false);
/* No HOT updates with AO tables. */
- *update_indexes = true;
+ *update_indexes = TU_All;
appendonly_free_memtuple(mtuple);
@@ -1175,7 +1175,7 @@ heap_truncate_one_relid(Oid relid)
*/
static void
appendonly_relation_set_new_filenode(Relation rel,
- const
RelFileNode *newrnode,
+ const
RelFileLocator *newrnode,
char
persistence,
TransactionId *freezeXid,
MultiXactId *minmulti)
@@ -1195,7 +1195,7 @@ appendonly_relation_set_new_filenode(Relation rel,
*
* Segment files will be created when / if needed.
*/
- srel = RelationCreateStorage(*newrnode, persistence, SMGR_AO, rel);
+ srel = RelationCreateStorage(*newrnode, persistence, true, SMGR_AO,
rel);
/*
* If required, set up an init fork for an unlogged table so that it can
@@ -1241,7 +1241,7 @@ appendonly_relation_nontransactional_truncate(Relation
rel)
}
static void
-appendonly_relation_copy_data(Relation rel, const RelFileNode *newrnode)
+appendonly_relation_copy_data(Relation rel, const RelFileLocator *newrnode)
{
SMgrRelation dstrel;
@@ -1250,7 +1250,6 @@ appendonly_relation_copy_data(Relation rel, const
RelFileNode *newrnode)
* implementation
*/
dstrel = smgropen(*newrnode, rel->rd_backend, SMGR_AO, rel);
- RelationOpenSmgr(rel);
/*
* Create and copy all forks of the relation, and schedule unlinking of
@@ -1259,9 +1258,10 @@ appendonly_relation_copy_data(Relation rel, const
RelFileNode *newrnode)
* NOTE: any conflict in relfilenode value will be caught in
* RelationCreateStorage().
*/
- RelationCreateStorage(*newrnode, rel->rd_rel->relpersistence, SMGR_AO,
rel);
+ RelationCreateStorage(*newrnode, rel->rd_rel->relpersistence, SMGR_AO,
true, rel);
- copy_append_only_data(rel->rd_node, *newrnode, rel->rd_smgr, dstrel,
rel->rd_backend, rel->rd_rel->relpersistence);
+ copy_append_only_data(rel->rd_locator, *newrnode, RelationGetSmgr(rel),
dstrel,
+ rel->rd_backend,
rel->rd_rel->relpersistence);
/*
* For append-optimized tables, no forks other than the main fork should
@@ -2271,7 +2271,7 @@ static const TableAmRoutine ao_row_methods = {
.tuple_satisfies_snapshot = appendonly_tuple_satisfies_snapshot,
.index_delete_tuples = appendonly_index_delete_tuples,
- .relation_set_new_filenode = appendonly_relation_set_new_filenode,
+ .relation_set_new_filelocator = appendonly_relation_set_new_filenode,
.relation_nontransactional_truncate =
appendonly_relation_nontransactional_truncate,
.relation_copy_data = appendonly_relation_copy_data,
.relation_copy_for_cluster = appendonly_relation_copy_for_cluster,
diff --git a/src/backend/access/appendonly/appendonlywriter.c
b/src/backend/access/appendonly/appendonlywriter.c
index 048ce295416..368cf8207d4 100644
--- a/src/backend/access/appendonly/appendonlywriter.c
+++ b/src/backend/access/appendonly/appendonlywriter.c
@@ -40,7 +40,6 @@
#include "utils/faultinjector.h"
#include "utils/fmgroids.h"
#include "utils/guc.h"
-#include "utils/int8.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
@@ -139,7 +138,7 @@ LockSegnoForWrite(Relation rel, int segno)
* The algorithm below for choosing a target segment is not
concurrent-safe.
* Grab a lock to serialize.
*/
- LockDatabaseObject(rel->rd_node.dbNode, (Oid)rel->rd_node.relNode, 0,
ExclusiveLock);
+ LockDatabaseObject(rel->rd_locator.dbOid,
(Oid)rel->rd_locator.relNumber, 0, ExclusiveLock);
appendOnlyMetaDataSnapshot =
RegisterSnapshot(GetCatalogSnapshot(InvalidOid));
GetAppendOnlyEntryAuxOids(rel,
@@ -244,7 +243,7 @@ LockSegnoForWrite(Relation rel, int segno)
/* OK, we have the aoseg tuple locked for us. */
systable_endscan(aoscan);
- UnlockDatabaseObject(rel->rd_node.dbNode, (Oid)rel->rd_node.relNode, 0,
ExclusiveLock);
+ UnlockDatabaseObject(rel->rd_locator.dbOid,
(Oid)rel->rd_locator.relNumber, 0, ExclusiveLock);
heap_close(pg_aoseg_rel, AccessShareLock);
@@ -412,7 +411,7 @@ choose_segno_internal(Relation rel, List *avoid_segnos,
choose_segno_mode mode)
* The algorithm below for choosing a target segment is not
concurrent-safe.
* Grab a lock to serialize.
*/
- LockDatabaseObject(rel->rd_node.dbNode, (Oid)rel->rd_node.relNode, 0,
ExclusiveLock);
+ LockDatabaseObject(rel->rd_locator.dbOid,
(Oid)rel->rd_locator.relNumber, 0, ExclusiveLock);
/*
* Obtain the snapshot that is taken at the beginning of the
transaction.
@@ -621,7 +620,7 @@ choose_segno_internal(Relation rel, List *avoid_segnos,
choose_segno_mode mode)
}
cleanup:
- UnlockDatabaseObject(rel->rd_node.dbNode, (Oid)rel->rd_node.relNode, 0,
ExclusiveLock);
+ UnlockDatabaseObject(rel->rd_locator.dbOid,
(Oid)rel->rd_locator.relNumber, 0, ExclusiveLock);
if (Debug_appendonly_print_segfile_choice && chosen_segno != -1)
ereport(LOG,
diff --git a/src/backend/catalog/catalog.c b/src/backend/catalog/catalog.c
index 0b723b8e7d3..e7c6cb7d4cf 100644
--- a/src/backend/catalog/catalog.c
+++ b/src/backend/catalog/catalog.c
@@ -97,7 +97,7 @@ bool system_relation_modified = false;
* and the filename separately.
*/
void
-reldir_and_filename(RelFileNode node, BackendId backend, ForkNumber forknum,
+reldir_and_filename(RelFileLocator node, BackendId backend, ForkNumber forknum,
char **dir, char **filename)
{
char *path;
@@ -131,7 +131,7 @@ reldir_and_filename(RelFileNode node, BackendId backend,
ForkNumber forknum,
* XXX This is very similar to _mdfd_segpath(), let's use that one
*/
char *
-aorelpathbackend(RelFileNode node, BackendId backend, int32 segno)
+aorelpathbackend(RelFileLocator node, BackendId backend, int32 segno)
{
char *fullpath;
char *path;
diff --git a/src/backend/cdb/cdbappendonlystorageread.c
b/src/backend/cdb/cdbappendonlystorageread.c
index 67314014997..cd09976c59f 100755
--- a/src/backend/cdb/cdbappendonlystorageread.c
+++ b/src/backend/cdb/cdbappendonlystorageread.c
@@ -65,7 +65,7 @@ AppendOnlyStorageRead_Init(AppendOnlyStorageRead *storageRead,
Oid reloid,
char *title,
AppendOnlyStorageAttributes
*storageAttributes,
- RelFileNode *relFileNode,
+ RelFileLocator *relFileNode,
const struct f_smgr_ao
*smgrAO)
{
uint8 *memory;
diff --git a/src/backend/cdb/cdbappendonlystoragewrite.c
b/src/backend/cdb/cdbappendonlystoragewrite.c
index fe99836f02f..4ab94b50684 100755
--- a/src/backend/cdb/cdbappendonlystoragewrite.c
+++ b/src/backend/cdb/cdbappendonlystoragewrite.c
@@ -262,7 +262,7 @@ AppendOnlyStorageWrite_FinishSession(AppendOnlyStorageWrite
*storageWrite)
*/
void
AppendOnlyStorageWrite_TransactionCreateFile(AppendOnlyStorageWrite
*storageWrite,
-
RelFileNodeBackend *relFileNode,
+
RelFileLocatorBackend *relFileNode,
int32 segmentFileNum)
{
Assert(segmentFileNum > 0);
@@ -301,7 +301,7 @@ AppendOnlyStorageWrite_OpenFile(AppendOnlyStorageWrite
*storageWrite,
int version,
int64
logicalEof,
int64
fileLen_uncompressed,
-
RelFileNodeBackend *relFileNode,
+
RelFileLocatorBackend *relFileNode,
int32
segmentFileNum)
{
File file;
diff --git a/src/backend/cdb/cdbappendonlyxlog.c
b/src/backend/cdb/cdbappendonlyxlog.c
index 0e9e96d7913..722bfcd8c2a 100644
--- a/src/backend/cdb/cdbappendonlyxlog.c
+++ b/src/backend/cdb/cdbappendonlyxlog.c
@@ -117,7 +117,7 @@ ao_insert_replay(XLogReaderState *record)
/*
* AO/CO truncate xlog record insertion.
*/
-void xlog_ao_truncate(RelFileNode relFileNode, int32 segmentFileNum, int64
offset)
+void xlog_ao_truncate(RelFileLocator relFileNode, int32 segmentFileNum, int64
offset)
{
xl_ao_truncate xlaotruncate;
diff --git a/src/backend/cdb/cdbbufferedread.c
b/src/backend/cdb/cdbbufferedread.c
index 0232490db55..2e728b36dc1 100644
--- a/src/backend/cdb/cdbbufferedread.c
+++ b/src/backend/cdb/cdbbufferedread.c
@@ -61,7 +61,7 @@ BufferedReadInit(BufferedRead *bufferedRead,
int32 maxBufferLen,
int32 maxLargeReadLen,
char *relationName,
- RelFileNode *file_node,
+ RelFileLocator *file_node,
const struct f_smgr_ao *smgr)
{
Assert(bufferedRead != NULL);
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index eff6954c78e..c7731b9365c 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -258,7 +258,7 @@ mdcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo)
* If isRedo is true, it's okay for the file to exist already.
*/
void
-mdcreate_ao(RelFileNodeBackend rnode, int32 segmentFileNum, bool isRedo)
+mdcreate_ao(RelFileLocatorBackend rnode, int32 segmentFileNum, bool isRedo)
{
char *path;
File fd;
diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c
index 52d87ee24b9..605783c5fe6 100644
--- a/src/backend/storage/smgr/smgr.c
+++ b/src/backend/storage/smgr/smgr.c
@@ -532,7 +532,7 @@ smgrcreate(SMgrRelation reln, ForkNumber forknum, bool
isRedo)
* already because we are in a WAL replay sequence.
*/
void
-smgrcreate_ao(RelFileNodeBackend rnode, int32 segmentFileNum, bool isRedo)
+smgrcreate_ao(RelFileLocatorBackend rnode, int32 segmentFileNum, bool isRedo)
{
mdcreate_ao(rnode, segmentFileNum, isRedo);
if (file_create_hook)
diff --git a/src/include/access/aomd.h b/src/include/access/aomd.h
index 0283df12d35..45c9d597bb4 100644
--- a/src/include/access/aomd.h
+++ b/src/include/access/aomd.h
@@ -53,10 +53,10 @@ TruncateAOSegmentFile(File fd,
extern void ao_truncate_one_rel(Relation rel);
extern void
-mdunlink_ao(RelFileNodeBackend rnode, ForkNumber forkNumber, bool isRedo);
+mdunlink_ao(RelFileLocatorBackend rnode, ForkNumber forkNumber, bool isRedo);
extern void
-copy_append_only_data(RelFileNode src, RelFileNode dst,
+copy_append_only_data(RelFileLocator src, RelFileLocator dst,
SMgrRelation srcSMGR, SMgrRelation dstSMGR, BackendId backendid, char
relpersistence);
/*
diff --git a/src/include/catalog/catalog.h b/src/include/catalog/catalog.h
index 2afcb37034e..4824bf80456 100644
--- a/src/include/catalog/catalog.h
+++ b/src/include/catalog/catalog.h
@@ -16,6 +16,7 @@
#include "catalog/pg_class.h"
#include "storage/relfilenode.h"
+#include "storage/relfilelocator.h"
#include "utils/relcache.h"
/*
@@ -55,9 +56,9 @@ extern Oid GetNewOidWithIndex(Relation relation, Oid indexId,
extern Oid GetNewRelFileNode(Oid reltablespace, Relation pg_class,
char relpersistence);
-extern void reldir_and_filename(RelFileNode rnode, BackendId backend,
ForkNumber forknum,
+extern void reldir_and_filename(RelFileLocator rnode, BackendId backend,
ForkNumber forknum,
char **dir, char **filename);
-extern char *aorelpathbackend(RelFileNode node, BackendId backend, int32
segno);
+extern char *aorelpathbackend(RelFileLocator node, BackendId backend, int32
segno);
extern bool system_relation_modified;
diff --git a/src/include/catalog/pg_attribute_encoding.h
b/src/include/catalog/pg_attribute_encoding.h
index 7c346cdb7aa..094fb27ca4f 100644
--- a/src/include/catalog/pg_attribute_encoding.h
+++ b/src/include/catalog/pg_attribute_encoding.h
@@ -59,8 +59,7 @@ FOREIGN_KEY(attrelid REFERENCES pg_attribute(attrelid));
typedef FormData_pg_attribute_encoding *Form_pg_attribute_encoding;
DECLARE_TOAST(pg_attribute_encoding, 6412, 6427);
-DECLARE_UNIQUE_INDEX(pg_attribute_encoding_attrelid_filenum_index, 6238, on
pg_attribute_encoding using btree(attrelid oid_ops, filenum int2_ops));
-#define AttributeEncodingAttrelidFilenumIndexId 6238
+DECLARE_UNIQUE_INDEX(pg_attribute_encoding_attrelid_filenum_index, 6453,
AttributeEncodingAttrelidFilenumIndexId, on pg_attribute_encoding using
btree(attrelid oid_ops, filenum int2_ops));
extern PGFunction *get_funcs_for_compression(char *compresstype);
extern StdRdOptions **RelationGetAttributeOptions(Relation rel);
diff --git a/src/include/cdb/cdbappendonlystorageread.h
b/src/include/cdb/cdbappendonlystorageread.h
index 86e3d55e77a..818649424ce 100755
--- a/src/include/cdb/cdbappendonlystorageread.h
+++ b/src/include/cdb/cdbappendonlystorageread.h
@@ -201,7 +201,7 @@ extern void
AppendOnlyStorageRead_Init(AppendOnlyStorageRead *storageRead,
int32 maxBufferLen,
char *relationName, Oid
reloid, char *title,
AppendOnlyStorageAttributes
*storageAttributes,
- RelFileNode *relFileNode,
const struct f_smgr_ao *smgrAO);
+ RelFileLocator *relFileNode,
const struct f_smgr_ao *smgrAO);
extern char *AppendOnlyStorageRead_RelationName(AppendOnlyStorageRead
*storageRead);
extern char *AppendOnlyStorageRead_SegmentFileName(AppendOnlyStorageRead
*storageRead);
diff --git a/src/include/cdb/cdbappendonlystoragewrite.h
b/src/include/cdb/cdbappendonlystoragewrite.h
index 9161d724055..23a9c11e8ad 100755
--- a/src/include/cdb/cdbappendonlystoragewrite.h
+++ b/src/include/cdb/cdbappendonlystoragewrite.h
@@ -194,14 +194,14 @@ extern void
AppendOnlyStorageWrite_Init(AppendOnlyStorageWrite *storageWrite,
extern void AppendOnlyStorageWrite_FinishSession(AppendOnlyStorageWrite
*storageWrite);
extern void
AppendOnlyStorageWrite_TransactionCreateFile(AppendOnlyStorageWrite
*storageWrite,
-
RelFileNodeBackend *relFileNode,
+
RelFileLocatorBackend *relFileNode,
int32 segmentFileNum);
extern void AppendOnlyStorageWrite_OpenFile(AppendOnlyStorageWrite
*storageWrite,
char
*filePathName,
int version,
int64
logicalEof,
int64
fileLen_uncompressed,
-
RelFileNodeBackend *relFileNode,
+
RelFileLocatorBackend *relFileNode,
int32
segmentFileNum);
extern void AppendOnlyStorageWrite_FlushAndCloseFile(AppendOnlyStorageWrite
*storageWrite,
int64 *newLogicalEof,
diff --git a/src/include/cdb/cdbappendonlyxlog.h
b/src/include/cdb/cdbappendonlyxlog.h
index 67e9769fef6..c87720f6f7d 100644
--- a/src/include/cdb/cdbappendonlyxlog.h
+++ b/src/include/cdb/cdbappendonlyxlog.h
@@ -28,7 +28,7 @@
typedef struct
{
- RelFileNode node;
+ RelFileLocator node;
uint32 segment_filenum;
int64 offset;
} xl_ao_target;
@@ -50,9 +50,9 @@ typedef struct
xl_ao_target target;
} xl_ao_truncate;
-extern void xlog_ao_insert(RelFileNode relFileNode, int32 segmentFileNum,
+extern void xlog_ao_insert(RelFileLocator relFileNode, int32 segmentFileNum,
int64 offset, void *buffer, int32 bufferLen);
-extern void xlog_ao_truncate(RelFileNode relFileNode, int32 segmentFileNum,
int64 offset);
+extern void xlog_ao_truncate(RelFileLocator relFileNode, int32 segmentFileNum,
int64 offset);
extern void appendonly_redo(XLogReaderState *record);
diff --git a/src/include/cdb/cdbbufferedread.h
b/src/include/cdb/cdbbufferedread.h
index d4824aed406..080ac391e8c 100644
--- a/src/include/cdb/cdbbufferedread.h
+++ b/src/include/cdb/cdbbufferedread.h
@@ -73,7 +73,7 @@ typedef struct BufferedRead
/* current read position */
off_t fileOff;
- RelFileNode relFileNode;
+ RelFileLocator relFileNode;
/*
* Temporary limit support for random reading.
*/
@@ -105,7 +105,7 @@ extern void BufferedReadInit(
int32 maxBufferLen,
int32 maxLargeReadLen,
char *relationName,
- RelFileNode *file_node,
+ RelFileLocator *file_node,
const struct f_smgr_ao *smgr);
/*
diff --git a/src/include/common/relpath.h b/src/include/common/relpath.h
index 53920c62050..09e974c9928 100644
--- a/src/include/common/relpath.h
+++ b/src/include/common/relpath.h
@@ -107,6 +107,6 @@ extern char *GetRelationPath(Oid dbOid, Oid spcOid,
RelFileNumber relNumber,
relpathbackend((rlocator).locator, (rlocator).backend, forknum)
#define aorelpath(rnode, segno) \
- aorelpathbackend((rnode).node, (rnode).backend, (segno))
+ aorelpathbackend((rnode).locator, (rnode).backend, (segno))
#endif /* RELPATH_H */
diff --git a/src/include/storage/md.h b/src/include/storage/md.h
index 753120724d1..3a2b9036da8 100644
--- a/src/include/storage/md.h
+++ b/src/include/storage/md.h
@@ -24,7 +24,7 @@ extern void mdinit(void);
extern void mdopen(SMgrRelation reln);
extern void mdclose(SMgrRelation reln, ForkNumber forknum);
extern void mdcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo);
-extern void mdcreate_ao(RelFileNodeBackend rnode, int32 segmentFileNum, bool
isRedo);
+extern void mdcreate_ao(RelFileLocatorBackend rnode, int32 segmentFileNum,
bool isRedo);
extern bool mdexists(SMgrRelation reln, ForkNumber forknum);
extern void mdunlink(RelFileLocatorBackend rlocator, ForkNumber forknum, bool
isRedo);
extern void mdextend(SMgrRelation reln, ForkNumber forknum,
diff --git a/src/include/storage/smgr.h b/src/include/storage/smgr.h
index 069f0f20300..b49d8b123dc 100644
--- a/src/include/storage/smgr.h
+++ b/src/include/storage/smgr.h
@@ -198,7 +198,7 @@ extern void smgrcloserellocator(RelFileLocatorBackend
rlocator);
extern void smgrrelease(SMgrRelation reln);
extern void smgrreleaseall(void);
extern void smgrcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo);
-extern void smgrcreate_ao(RelFileNodeBackend rnode, int32 segmentFileNum, bool
isRedo);
+extern void smgrcreate_ao(RelFileLocatorBackend rnode, int32 segmentFileNum,
bool isRedo);
extern void smgrdosyncall(SMgrRelation *rels, int nrels);
extern void smgrdounlinkall(SMgrRelation *rels, int nrels, bool isRedo);
extern void smgrextend(SMgrRelation reln, ForkNumber forknum,
diff --git a/src/include/storage/sync.h b/src/include/storage/sync.h
index 34b09ce6e5e..ec977e1d4c5 100644
--- a/src/include/storage/sync.h
+++ b/src/include/storage/sync.h
@@ -61,7 +61,7 @@ typedef struct FileTag
( \
memset(&(a), 0, sizeof(FileTag)), \
(a).handler = (xx_handler), \
- (a).rnode = (xx_rnode), \
+ (a).rlocator = (xx_rnode), \
(a).forknum = (xx_forknum), \
(a).segno = (xx_segno) \
)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]