pg_filenode.map
¶
Un fichier qui mappe les relations internes (principalement les tables du catalogue système) à leur OID
pg_filenode.map
est un fichier spécial qui associe les “relations mappées” (c’est-à-dire celles dont le filenode n’est pas stocké dans pg_class
) à leur _OID_
.
pg_filenode.map
a été ajouté dans PostgreSQL 9.0.
Il y a un fichier pg_filenode.map
par base de données, et un fichier pour l’ensemble du cluster.
Actuellement, chaque fichier pg_filenode.map
est limité à 512 octets (conçu pour occuper un secteur de disque de taille standard) afin de minimiser le risque de mises à jour échouées; la structure correspondante est conçue pour occuper exactement 512 octets et peut contenir un maximum de 62 entrées (MAX_MAPPINGS) de 8 octets chacune :
typedef struct RelMapping
{
Oid mapoid; /* OID d'un catalogue */
Oid mapfilenode; /* son numéro de filenode */
} RelMapping;
avec les métadonnées du fichier portant le total à 512 :
typedef struct RelMapFile
{
int32 magic; /* toujours RELMAPPER_FILEMAGIC */
int32 num_mappings; /* nombre d'entrées RelMapping valides */
RelMapping mappings[MAX_MAPPINGS];
pg_crc32c crc; /* CRC de tout ce qui précède */
int32 pad; /* pour que la taille de la structure soit exactement de 512 octets */
} RelMapFile;