Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       recno - метод доступа к базам нумерованных данных

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <sys/types.h> #include <db.h>

ОПИСАНИЕ

       Note  well: This page documents interfaces provided up until glibc 2.1.  Since glibc 2.2, glibc no longer
       provides these interfaces.  Probably, you are looking for the APIs provided by the libdb library instead.

       Функция 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   Разделительный  байт,  для использования в качестве отметки конца записи с переменной длиной и как
              заполняющий символ для записи с фиксированной длиной. Если значение не  указано,  то  для  отметки
              конца записи с переменной длиной используется символ новой строки («\n»), а записи с фиксированной
              длиной дополняются пробелом.

       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>

       Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо
       на man-pages-ru-talks@lists.sourceforge.net.

4.4 Berkeley Distribution                       4 декабря 2022 г.                                       recno(3)