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