Skip to content

Commit 5d371bc

Browse files
committed
Merge branch 'ce'
2 parents 22855f0 + 061898e commit 5d371bc

7 files changed

+318
-302
lines changed

engine.c

+7-86
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,6 @@
3636
#include "catalog/pg_tablespace.h"
3737
#include "miscadmin.h"
3838
#include "port/pg_crc32c.h"
39-
#ifdef PGPRO_EE
40-
/* For file_is_in_cfs_tablespace() only. */
41-
#include "common/cfs_common.h"
42-
#endif
4339
#include "storage/copydir.h"
4440
#if PG_VERSION_NUM >= 120000
4541
#include "storage/md.h"
@@ -95,53 +91,6 @@ ptrack_write_chunk(int fd, pg_crc32c *crc, char *chunk, size_t size)
9591
}
9692
}
9793

98-
/*
99-
* Determines whether given file path is a path to a cfm file.
100-
*/
101-
bool
102-
is_cfm_file_path(const char *filepath) {
103-
ssize_t len = strlen(filepath);
104-
105-
// For this length checks we assume that the filename is at least
106-
// 1 character longer than the corresponding extension ".cfm":
107-
// strlen(".cfm") == 4 therefore we assume that the filename can't be
108-
// shorter than 5 bytes, for example: "5.cfm".
109-
return strlen(filepath) >= 5 && strcmp(&filepath[len-4], ".cfm") == 0;
110-
}
111-
112-
#if CFS_SUPPORT
113-
/*
114-
* Determines the relation file size specified by fullpath as if it
115-
* was not compressed.
116-
*/
117-
off_t
118-
get_cfs_relation_file_decompressed_size(RelFileNodeBackend rnode, const char *fullpath, ForkNumber forknum) {
119-
File fd;
120-
off_t size;
121-
122-
#if PG_VERSION_NUM >= 120000
123-
int compressor;
124-
compressor = md_get_compressor_internal(nodeOf(rnode), rnode.backend, forknum);
125-
fd = PathNameOpenFile(fullpath, O_RDWR | PG_BINARY, compressor);
126-
#else
127-
fd = PathNameOpenFile(fullpath, O_RDWR | PG_BINARY | PG_COMPRESSION);
128-
#endif
129-
130-
if(fd < 0)
131-
return (off_t)-1;
132-
133-
#if PG_VERSION_NUM >= 120000
134-
size = FileSize(fd);
135-
#else
136-
size = FileSeek(fd, 0, SEEK_END);
137-
#endif
138-
139-
FileClose(fd);
140-
141-
return size;
142-
}
143-
#endif
144-
14594
/*
14695
* Delete ptrack files when ptrack is disabled.
14796
*
@@ -549,13 +498,8 @@ assign_ptrack_map_size(int newval, void *extra)
549498
* For use in functions that copy directories bypassing buffer manager.
550499
*/
551500
static void
552-
#if CFS_SUPPORT
553-
ptrack_mark_file(Oid dbOid, Oid tablespaceOid,
554-
const char *filepath, const char *filename, bool is_cfs)
555-
#else
556501
ptrack_mark_file(Oid dbOid, Oid tablespaceOid,
557502
const char *filepath, const char *filename)
558-
#endif
559503
{
560504
RelFileNodeBackend rnode;
561505
ForkNumber forknum;
@@ -564,9 +508,6 @@ ptrack_mark_file(Oid dbOid, Oid tablespaceOid,
564508
struct stat stat_buf;
565509
int oidchars;
566510
char oidbuf[OIDCHARS + 1];
567-
#if CFS_SUPPORT
568-
off_t rel_size;
569-
#endif
570511

571512
/* Do not track temporary relations */
572513
if (looks_like_temp_rel_name(filename))
@@ -585,21 +526,6 @@ ptrack_mark_file(Oid dbOid, Oid tablespaceOid,
585526
oidbuf[oidchars] = '\0';
586527
nodeRel(nodeOf(rnode)) = atooid(oidbuf);
587528

588-
#if CFS_SUPPORT
589-
// if current tablespace is cfs-compressed and md_get_compressor_internal
590-
// returns the type of the compressing algorithm for filepath, then it
591-
// needs to be de-compressed to obtain its size
592-
if(is_cfs && md_get_compressor_internal(nodeOf(rnode), rnode.backend, forknum) != 0) {
593-
rel_size = get_cfs_relation_file_decompressed_size(rnode, filepath, forknum);
594-
595-
if(rel_size == (off_t)-1) {
596-
elog(WARNING, "ptrack: could not open cfs-compressed relation file: %s", filepath);
597-
return;
598-
}
599-
600-
nblocks = rel_size / BLCKSZ;
601-
} else
602-
#endif
603529
/* Compute number of blocks based on file size */
604530
if (stat(filepath, &stat_buf) == 0)
605531
nblocks = stat_buf.st_size / BLCKSZ;
@@ -620,9 +546,6 @@ ptrack_walkdir(const char *path, Oid tablespaceOid, Oid dbOid)
620546
{
621547
DIR *dir;
622548
struct dirent *de;
623-
#if CFS_SUPPORT
624-
bool is_cfs;
625-
#endif
626549

627550
/* Do not walk during bootstrap and if ptrack is disabled */
628551
if (ptrack_map_size == 0
@@ -631,10 +554,6 @@ ptrack_walkdir(const char *path, Oid tablespaceOid, Oid dbOid)
631554
|| InitializingParallelWorker)
632555
return;
633556

634-
#if CFS_SUPPORT
635-
is_cfs = file_is_in_cfs_tablespace(path);
636-
#endif
637-
638557
dir = AllocateDir(path);
639558

640559
while ((de = ReadDirExtended(dir, path, LOG)) != NULL)
@@ -662,11 +581,7 @@ ptrack_walkdir(const char *path, Oid tablespaceOid, Oid dbOid)
662581
}
663582

664583
if (S_ISREG(fst.st_mode))
665-
#if CFS_SUPPORT
666-
ptrack_mark_file(dbOid, tablespaceOid, subpath, de->d_name, is_cfs);
667-
#else
668-
ptrack_mark_file(dbOid, tablespaceOid, subpath, de->d_name);
669-
#endif
584+
ptrack_mark_file(dbOid, tablespaceOid, subpath, de->d_name);
670585
}
671586

672587
FreeDir(dir); /* we ignore any error here */
@@ -714,21 +629,27 @@ ptrack_mark_block(RelFileNodeBackend smgr_rnode,
714629
old_init_lsn.value = pg_atomic_read_u64(&ptrack_map->init_lsn);
715630
if (old_init_lsn.value == InvalidXLogRecPtr)
716631
{
632+
#if USE_ASSERT_CHECKING
717633
elog(DEBUG1, "ptrack_mark_block: init_lsn " UINT64_FORMAT " <- " UINT64_FORMAT, old_init_lsn.value, new_lsn);
634+
#endif
718635

719636
while (old_init_lsn.value < new_lsn &&
720637
!pg_atomic_compare_exchange_u64(&ptrack_map->init_lsn, (uint64 *) &old_init_lsn.value, new_lsn));
721638
}
722639

723640
/* Atomically assign new LSN value to the first slot */
724641
old_lsn.value = pg_atomic_read_u64(&ptrack_map->entries[slot1]);
642+
#if USE_ASSERT_CHECKING
725643
elog(DEBUG3, "ptrack_mark_block: map[%zu]=" UINT64_FORMAT " <- " UINT64_FORMAT, slot1, old_lsn.value, new_lsn);
644+
#endif
726645
while (old_lsn.value < new_lsn &&
727646
!pg_atomic_compare_exchange_u64(&ptrack_map->entries[slot1], (uint64 *) &old_lsn.value, new_lsn));
728647

729648
/* And to the second */
730649
old_lsn.value = pg_atomic_read_u64(&ptrack_map->entries[slot2]);
650+
#if USE_ASSERT_CHECKING
731651
elog(DEBUG3, "ptrack_mark_block: map[%zu]=" UINT64_FORMAT " <- " UINT64_FORMAT, slot2, old_lsn.value, new_lsn);
652+
#endif
732653
while (old_lsn.value < new_lsn &&
733654
!pg_atomic_compare_exchange_u64(&ptrack_map->entries[slot2], (uint64 *) &old_lsn.value, new_lsn));
734655
}

engine.h

-11
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,6 @@
4444
#define PTRACK_MAGIC "ptk"
4545
#define PTRACK_MAGIC_SIZE 4
4646

47-
/* CFS support macro */
48-
#if defined(PGPRO_EE) && PG_VERSION_NUM >= 110000
49-
#define CFS_SUPPORT 1
50-
#endif
51-
5247
/*
5348
* Header of ptrack map.
5449
*/
@@ -116,10 +111,4 @@ extern void ptrack_walkdir(const char *path, Oid tablespaceOid, Oid dbOid);
116111
extern void ptrack_mark_block(RelFileNodeBackend smgr_rnode,
117112
ForkNumber forkno, BlockNumber blkno);
118113

119-
extern bool is_cfm_file_path(const char *path);
120-
#ifdef PGPRO_EE
121-
extern off_t get_cfs_relation_file_decompressed_size(RelFileNodeBackend rnode,
122-
const char *fullpath, ForkNumber forknum);
123-
#endif
124-
125114
#endif /* PTRACK_ENGINE_H */

0 commit comments

Comments
 (0)