Library Version 18.1.40

DbMpoolFile::set_fileid()
Prev | Chapter 9. The DbMpoolFile Handle | Next

## DbMpoolFile::set_fileid()

    #include <db_cxx.h>

    int
    DbMpoolFile::set_fileid(u_int8_t *fileid);

The `DbMpoolFile::set_fileid()` method specifies a unique identifier for the file. (The shared memory buffer pool functions must be able to uniquely identify files in order that multiple processes wanting to share a file will correctly identify it in the cache.)

On most UNIX/POSIX systems, the fileid field will not need to be set, and the memory pool functions will use the file's device and inode numbers for this purpose. On Windows systems, the memory pool functions use the values returned by `GetFileInformationByHandle()` by default — these values are known to be constant between processes and over reboot in the case of NTFS (in which they are the NTFS MFT indices).

On other filesystems (for example, FAT or NFS), these default values are not necessarily unique between processes or across system reboots. Applications wanting to maintain a shared cache between processes or across system reboots, in which the cache contains pages from files stored on such filesystems, must specify a unique file identifier using the `DbMpoolFile::set_fileid()` method, and each process opening the file must provide the same unique identifier.

This call should not be necessary for most applications. Specifically, it is not necessary if the cache is not shared between processes and is reinstantiated after each system reboot, if the application is using the Berkeley DB access methods instead of calling the pool functions explicitly, or if the files in the cache are stored on filesystems in which the default values as described previously are invariant between process and across system reboots.

The `DbMpoolFile::set_fileid()` method configures a file in the cache, not only operations performed using the specified DbMpoolFile handle.

The `DbMpoolFile::set_fileid()` method may not be called after the DbMpoolFile::open() method is called. If the mpool file already exists when `DbMpoolFile::open()` is called, the information specified to `DbMpoolFile::set_fileid()` must be the same as that historically used to create the mpool file or corruption can occur.

The `DbMpoolFile::set_fileid()` method either returns a non-zero error value or throws an exception that encapsulates a non-zero error value on failure, and returns 0 on success.

### Parameters

#### fileid

The fileid parameter is the unique identifier for the file. Unique file identifiers must be a `DB_FILE_ID_LEN` length array of bytes.

### Class

DbEnv, DbMpoolFile

### See Also

Memory Pools and Related Methods

Prev | Up | Next
DbMpoolFile::set_clear_len() | Home | DbMpoolFile::set_flags()