Provided by: manpages-ru-dev_4.27.0-1_all 

НАИМЕНОВАНИЕ
recno - метод доступа к базам нумерованных данных
БИБЛИОТЕКА
Стандартная библиотека языка C (libc, -lc)
ОБЗОР
#include <sys/types.h> #include <db.h>
ОПИСАНИЕ
Примечание: На этой странице описаны интерфейсы, предоставляемые до glibc 2.1. Начиная с glibc 2.2, glibc
больше не поддерживает эти интерфейсы. Вероятно, вы ищите API, предоставляемое библиотекой libdb.
Функция dbopen(3) — это библиотечный интерфейс к файлам баз данных. Один из поддерживаемых форматов
файлов — нумерованные данные. Общее описание методов доступа к базам данных находится в dbopen(3). Эта
справочная страница содержит только информацию, относящуюся к нумерованным данным.
Структура нумерованных данных может описывать записи переменной или фиксированной длины, хранящиеся в
файле в «плоском» формате, и доступные по логическому номеру записи. Существование записи с номером пять
подразумевает существование записей от одного до четырёх и удаление записи с номером один вызывает
перенумеровывание записи с номером пять в запись с номером четыре, а также сдвиг курсора вниз на одну
запись, если он указывает на запись после номера один.
Специальная структура метода доступа к данным recno, предоставляемая dbopen(3), определена в <db.h>
следующим образом:
typedef struct {
unsigned long flags;
unsigned int cachesize;
unsigned int psize;
int lorder;
size_t reclen;
unsigned char bval;
char *bfname;
} RECNOINFO;
Элементы этой структуры определены так:
flags Значение флага определяется логическим ИЛИ следующих значений:
R_FIXEDLEN
Записи фиксированной длины без разделительного байта. Полем reclen определяется длина
записи, а поле bval используется как дополняющий символ. Все вставляемые в базу данных
записи, размер которых меньше reclen байт, автоматически дополняются.
R_NOKEY
В интерфейсе, определённом dbopen(3), последовательная выборка записей заполняет структуры
данных и ключа вызывающего. Если указан флаг R_NOKEY, то процедурам cursor не обязательно
заполнять структуру ключа. Это позволяет приложениям извлекать записи из конца файлов без
чтения всех промежуточных записей.
R_SNAPSHOT
Этим флагом указывается, чтобы в момент вызова dbopen(3) был сделан снимок (snapshot)
файла, а не выполнялось чтение каких-либо не изменённых записей из оригинального файла.
cachesize
Предполагаемый максимальный размер кэша памяти в байтах. Эта величина только рекомендация, метод
доступа скорее выделит больше памяти, чем завершится с ошибкой. Если значение cachesize равно 0
(размер не указан), то используется кэш по умолчанию.
psize Метод доступа recno хранит копии своих записей в памяти в виде дерева btree. Это значение задаёт
размер страниц (в байтах), используемых для узлов в этом дереве. Если значение psize равно 0
(размер страницы не указан), то размер выбирается на основе размера блока ввода-вывода нижележащей
файловой системы. Подробней смотрите btree(3).
lorder Порядок расположения байтов, используемый при хранении целых чисел в метаданных базы данных. Число
должно отражать порядок размещения в виде целого значения; например, порядок «big endian» должен
обозначаться числом 4321. Если lorder равно 0 (порядок не определён), то используется значение по
умолчанию, принятое на машине.
reclen Длина записи фиксированной длины.
bval The delimiting byte to be used to mark the end of a record for variable-length records, and the
pad character for fixed-length records. If no value is specified, newlines ("\n") are used to
mark the end of variable-length records and fixed-length records are padded with spaces.
bfname Метод доступа recno хранит в памяти копии своих записей в дереве btree. Если значение bfname не
равно NULL, то им задаётся имя btree-файла в том же виде, что и при доступе dbopen(3) для доступа
к btree-файлу.
Часть «данные» из пары ключ/данные, используемая методом доступа recno, является такой же, как в других
методах доступа. Ключ используется иначе. Как следует из определения заголовочного файла <db.h>, поле
ключа data должно быть указателем на расположение памяти типа recno_t. Этот тип, обычно, является
наибольшим беззнаковым целочисленным типом данных, применяемым в реализации. Значение поля ключа size
должен задавать размер этого типа.
Так как в файлах с данными в формате recno могут отсутствовать метаданные, то любые изменения значений по
умолчанию (например, длина фиксированной записи или разделяющий байт) должны явно указываться каждый раз
при открытии файла.
В интерфейсе, определённым dbopen(3), использование интерфейса put для создания новой записи повлечёт за
собой создание множества пустых записей, если номер записи больше, чем номер наибольшей записи, имеющейся
в базе данных.
ОШИБКИ
Функции метода доступа recno могут завершиться с ошибкой и присвоить errno любое значение из определённых
для библиотеки функций dbopen(3), а также:
EINVAL Попытка добавить слишком большую запись в базу данных фиксированной длины.
ОШИБКИ
Поддерживаются значения только с прямым и обратным порядком байт.
СМОТРИТЕ ТАКЖЕ
btree(3), dbopen(3), hash(3), mpool(3)
Document Processing in a Relational Database System, Michael Stonebraker, Heidi Stettner, Joseph Kalash,
Antonin Guttman, Nadene Lynn, Memorandum No. UCB/ERL M82/32, May 1982.
ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) aereiae <aereiae@gmail.com>, Azamat Hackimov
<azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Katrin Kutepova
<blackkatelv@gmail.com>, Lockal <lockalsash@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Баринов
Владимир, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной
лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских
переводчиков.
4.4 Berkeley Distribution 15 июня 2024 г. recno(3)