Учебник РНР
Назад Вперёд

XXII. Функции DB++

Предупреждение!

Это ЭКСПЕРИМЕНТАЛЬНОЕ расширение. Поведение этого расширения и имена его функций, а также всё иное, задокументированное для данного расширения, может измениться в будущих релизах РНР без уведомления. Вы предупреждены и можете использовать это расширение, под вашу ответственность.

Введение

db++, создавалась немецкой компанией Concept asa как система реляционных БД с высокой производительностью и низким расходом памяти и дискового пространства. Предоставляя SQL как дополнительный язык интерфейса, она в действительности не является SQL-БД, а предоставляет свой собственный язык запросов AQL, который больше использует реляционную алгебру, чем SQL.

Concept asa всегда интересовалась поддержкой языков открытых ресурсов, db++ имела интерфейсы вызова для Perl и Tcl уже несколько лет назад и использует Tcl как язык своих внутренних хранимых процедур.

Требования

Это расширение основано на внешних клиентских библиотеках, поэтому вы должны иметь клиент db++, установленный на системе, где вы намереваетесь использовать данное расширение.

Concept asa предоставляет db++ демо-версии и документацию для Linux, некоторых других вариантов UNIX. Имеется также версия db++ для Windows, но данное расширение его не поддерживает (пока).

Установка

Чтобы построить это расширение самостоятельно, вам необходимо иметь клиентские библиотеки db++ и header-файлы, установленные в вашей системе (они включены по умолчанию в архивы инсталяции db++). Вы должны запустить configure с опцией --with-dbplus, чтобы построить это расширение.

configure ищет клиентские библиотеки и header-файлы ниже путей по умолчанию /usr/dbplus, /usr/local/dbplus и /opt/dblus. Если вы должны установить db++ в другом месте, необходимо добавить путь установки в опции configure примерно так: --with-dbplus=/your/installation/path

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

dbplus_relation

Большинство функций db++ работают с или возвращают ресурсы dbplus_relation .
dbplus_relation это дескриптор для хранимой реляции или для реляции, генерируемой как результат запроса.

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

Коды ошибок db++

Таблица 1. Коды ошибок DB++
PHP-константа db++ константа Значение
DBPLUS_ERR_NOERR (integer) ERR_NOERR Отсутствие ошибки
DBPLUS_ERR_DUPLICATE (integer) ERR_DUPLICATE Попытка вставить дублирующую пару/tuple
DBPLUS_ERR_EOSCAN (integer) ERR_EOSCAN Конец сканирования от rget()
DBPLUS_ERR_EMPTY (integer) ERR_EMPTY Пустая реляция (server)
DBPLUS_ERR_CLOSE (integer) ERR_CLOSE Сервер не может закрыть
DBPLUS_ERR_WLOCKED (integer) ERR_WLOCKED Запись/record блокирована от записи
DBPLUS_ERR_LOCKED (integer) ERR_LOCKED Реляция уже была блокирована
DBPLUS_ERR_NOLOCK (integer) ERR_NOLOCK Реляция не может быть блокирована
DBPLUS_ERR_READ (integer) ERR_READ Ошибка при чтении реляции
DBPLUS_ERR_WRITE (integer) ERR_WRITE Ошибка записи в реляцию
DBPLUS_ERR_CREATE (integer) ERR_CREATE Неудача системного вызова Create()
DBPLUS_ERR_LSEEK (integer) ERR_LSEEK Неудача системного вызова Lseek()
DBPLUS_ERR_LENGTH (integer) ERR_LENGTH Пара/Tuple превзошла максимальную длину
DBPLUS_ERR_OPEN (integer) ERR_OPEN Неудача системного вызова Open()
DBPLUS_ERR_WOPEN (integer) ERR_WOPEN Реляция уже открыта для записи
DBPLUS_ERR_MAGIC (integer) ERR_MAGIC Файл не является реляцией
DBPLUS_ERR_VERSION (integer) ERR_VERSION Файл является самой старой реляцией
DBPLUS_ERR_PGSIZE (integer) ERR_PGSIZE Реляция использует другой размер страниц
DBPLUS_ERR_CRC (integer) ERR_CRC Неверный crc в суперстранице/superpage
DBPLUS_ERR_PIPE (integer) ERR_PIPE Реляция по каналу требует lseek()
DBPLUS_ERR_NIDX (integer) ERR_NIDX Слишком много вторичных индексов
DBPLUS_ERR_MALLOC (integer) ERR_MALLOC Неудача вызова Malloc()
DBPLUS_ERR_NUSERS (integer) ERR_NUSERS Ошибка использования max users
DBPLUS_ERR_PREEXIT (integer) ERR_PREEXIT Вызвана неверным использованием
DBPLUS_ERR_ONTRAP (integer) ERR_ONTRAP Вызвана по сигналу
DBPLUS_ERR_PREPROC (integer) ERR_PREPROC Ошибка препроцессора
DBPLUS_ERR_DBPARSE (integer) ERR_DBPARSE Ошибка разборщика
DBPLUS_ERR_DBRUNERR (integer) ERR_DBRUNERR Ошибка выполнения в db
DBPLUS_ERR_DBPREEXIT (integer) ERR_DBPREEXIT условие выхода вызвано процедурой prexit() *
DBPLUS_ERR_WAIT (integer) ERR_WAIT Немного подождите (только Simple)
DBPLUS_ERR_CORRUPT_TUPLE (integer) ERR_CORRUPT_TUPLE Клиент выслал нарушенную пару
DBPLUS_ERR_WARNING0 (integer) ERR_WARNING0 Утилиты Simple вычислили нефатальную ошибку, которая была исправлена
DBPLUS_ERR_PANIC (integer) ERR_PANIC Сервер не может die (закончить выполнение), но после ошибки высылает ERR_PANIC всем клиентам
DBPLUS_ERR_FIFO (integer) ERR_FIFO Не может создать fifo
DBPLUS_ERR_PERM (integer) ERR_PERM Доступ запрещён
DBPLUS_ERR_TCL (integer) ERR_TCL TCL_error
DBPLUS_ERR_RESTRICTED (integer) ERR_RESTRICTED Только два пользователя
DBPLUS_ERR_USER (integer) ERR_USER Ошибка при использовании библиотеки программистом приложения
DBPLUS_ERR_UNKNOWN (integer) ERR_UNKNOWN  
Содержание
dbplus_add - добавляет пару/tuple в реляцию
dbplus_aql - выполняет AQL-запрос/query
dbplus_chdir - получает/устанавливает виртуальную текущую директорию базы данных
dbplus_close - закрывает реляцию
dbplus_curr - получает текущую пару из реляции
dbplus_errcode - получает строку ошибки для данного errorcode или последней ошибки
dbplus_errno - получает код ошибки последней операции
dbplus_find - устанавливает ограничение/constraint в реляции
dbplus_first - получает первую пару из реляции
dbplus_flush - зачищает все изменения, сделанные в реляции
dbplus_freealllocks - освобождает все блокировки, удерживаемые данным клиентом
dbplus_freelock - освобождает блокировку от записи пары
dbplus_freerlocks - освобождает все блокировки пар в данной реляции
dbplus_getlock - получает блокировку от записи для пары
dbplus_getunique - получает уникальный номер id для реляции
dbplus_info - ???
dbplus_last - получает последнюю пару из реляции
dbplus_lockrel - запрашивает блокировку от записи в реляции
dbplus_next - получает следующую пару реляции
dbplus_open - открывает реляционный файл
dbplus_prev - получает предыдущую пару реляции
dbplus_rchperm - изменяет права доступа к реляции
dbplus_rcreate - создаёт новую реляцию DB++
dbplus_rcrtexact - создаёт точную, но пустую копию реляции, включая индексы
dbplus_rcrtlike - создаёт пустую копию реляции с индексами по умолчанию
dbplus_resolve - разрешает host-информацию для реляции
dbplus_restorepos - ???
dbplus_rkeys - специфицирует новый первичный ключ/primary key реляции
dbplus_ropen - открывает локально реляционный файл
dbplus_rquery - выполняет локальный (сырой/raw) AQL-запрос
dbplus_rrename - переименовывает реляцию
dbplus_rsecindex - создаёт в реляции новый вторичный индекс
dbplus_runlink - удаляет реляцию из файловой системы
dbplus_rzap - удаляет все пары из реляции
dbplus_savepos - ???
dbplus_setindex - ???
dbplus_setindexbynumber - ???
dbplus_sql - выполняет SQL query
dbplus_tcl - выполняет TCL-код на стороне сервера
dbplus_tremove - удаляет пару и возвращает новую текущую пару
dbplus_undo - ???
dbplus_undoprepare - ???
dbplus_unlockrel - снимает блокировку с реляции
dbplus_unselect - удаляет ограничение с реляции
dbplus_update - обновляет специфицированную пару реляции
dbplus_xlockrel - запрашивает исключительную блокировку для реляции
dbplus_xunlockrel - освобождает исключительную блокировку в реляции

Назад Оглавление Вперёд
dbx_sort Вверх dbplus_add