#define SQLITE_IOCAP_ATOMIC 0x00000001 #define SQLITE_IOCAP_ATOMIC512 0x00000002 #define SQLITE_IOCAP_ATOMIC1K 0x00000004 #define SQLITE_IOCAP_ATOMIC2K 0x00000008 #define SQLITE_IOCAP_ATOMIC4K 0x00000010 #define SQLITE_IOCAP_ATOMIC8K 0x00000020 #define SQLITE_IOCAP_ATOMIC16K 0x00000040 #define SQLITE_IOCAP_ATOMIC32K 0x00000080 #define SQLITE_IOCAP_ATOMIC64K 0x00000100 #define SQLITE_IOCAP_SAFE_APPEND 0x00000200 #define SQLITE_IOCAP_SEQUENTIAL 0x00000400 #define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800 #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000 #define SQLITE_IOCAP_IMMUTABLE 0x00002000 #define SQLITE_IOCAP_BATCH_ATOMIC 0x00004000
Метод xDeviceCharacteristics объекта sqlite3_io_methods возвращает целое число, которое является вектором этих разрядных значений, выражающих особенности I/O устройства массового хранения, которое содержит файл, к которому относится sqlite3_io_methods.
SQLITE_IOCAP_ATOMIC означает, что все записи атомные. Значения SQLITE_IOCAP_ATOMICnnn значат, что записи блоков, которые nnn байт размером и выровнены с адресом, который является целым числом, кратным nnn, атомны. SQLITE_IOCAP_SAFE_APPEND означает, что, когда данные добавлены к файлу, данные сначала пишутся, потом меняется размер файла, никогда наоборот. SQLITE_IOCAP_SEQUENTIAL означает, что информация написана на диск в том же самом порядке, как вызывали xWrite(). SQLITE_IOCAP_POWERSAFE_OVERWRITE означает, что после перезагрузки после катастрофы или потери питания единственные байты в файле, которые были написаны на уровне приложения, возможно, изменились и что смежные байты, даже байты в том же самом секторе, как гарантируют, будут неизменны. Флаг SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN указывает, что файл не может быть удален, когда открыт. SQLITE_IOCAP_IMMUTABLE указывает, что файл находится на носителе только для чтения и не может быть изменен даже процессами с поднятыми привилегиями.
SQLITE_IOCAP_BATCH_ATOMIC означает, что основная файловая система поддерживает выполнение многократных операций записи атомарно, когда те операции записи заключены в скобки SQLITE_FCNTL_BEGIN_ATOMIC_WRITE и SQLITE_FCNTL_COMMIT_ATOMIC_WRITE.