Учебник PHP

         

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_TCLTCL_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 - освобождает исключительную блокировку в реляции
Содержание раздела