1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-25 13:17:41 +03:00

Refactor sharedfileset.c to separate out fileset implementation.

Move fileset related implementation out of sharedfileset.c to allow its
usage by backends that don't want to share filesets among different
processes. After this split, fileset infrastructure is used by both
sharedfileset.c and worker.c for the named temporary files that survive
across transactions.

Author: Dilip Kumar, based on suggestion by Andres Freund
Reviewed-by: Hou Zhijie, Masahiko Sawada, Amit Kapila
Discussion: https://postgr.es/m/E1mCC6U-0004Ik-Fs@gemulon.postgresql.org
This commit is contained in:
Amit Kapila
2021-08-30 08:45:35 +05:30
parent d3fa876578
commit dcac5e7ac1
14 changed files with 368 additions and 336 deletions

View File

@@ -0,0 +1,40 @@
/*-------------------------------------------------------------------------
*
* fileset.h
* Management of named temporary files.
*
* Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/include/storage/fileset.h
*
*-------------------------------------------------------------------------
*/
#ifndef FILESET_H
#define FILESET_H
#include "storage/fd.h"
/*
* A set of temporary files.
*/
typedef struct FileSet
{
pid_t creator_pid; /* PID of the creating process */
uint32 number; /* per-PID identifier */
int ntablespaces; /* number of tablespaces to use */
Oid tablespaces[8]; /* OIDs of tablespaces to use. Assumes that
* it's rare that there more than temp
* tablespaces. */
} FileSet;
extern void FileSetInit(FileSet *fileset);
extern File FileSetCreate(FileSet *fileset, const char *name);
extern File FileSetOpen(FileSet *fileset, const char *name,
int mode);
extern bool FileSetDelete(FileSet *fileset, const char *name,
bool error_on_failure);
extern void FileSetDeleteAll(FileSet *fileset);
#endif