Aller au contenu

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;