XXII. DB++ Functions

Ostrze¿enie

Ten moduł jest w stadium EKSPERYMENTALNYM. Oznacza to, że zachowanie tych funkcji, ich nazwy, w zasadzie wszystko udokumentowane tutaj może zostać zmienione w przyszłych wersjach PHP bez wcześniejszego uprzedzenia. Używaj tego modułu na własne ryzyko.

db++, made by the german company Concept asa, is a relational database system with high performance and low memory and disk usage in mind. While providing SQL as an additional language interface it is not really a SQL database in the first place but provides its own AQL query language which is much more influenced by the relational algebra then SQL is.

Concept asa always had an interest in supporting open source languages, db++ has had Perl and Tcl call interfaces for years now and uses Tcl as its internal stored procedure language.

Requirements

This extension relies on external client libraries so you have to have a db++ client installed on the system you want to use this extension on.

Concept asa provides db++ Demo versions and documentation for Linux, some other UNIX versions. There is also a Windows version of db++, but this extension doesn't support it (yet).

Installation

In order to build this extension yourself you need the db++ client libraries and header files to be installed on your system (these are included in the db++ installation archives by default). You have to run configure with option --with-dbplus to build this extension.

configure looks for the client libraries and header files under the default paths /usr/dbplus, /usr/local/dbplus and /opt/dblus. If you have installed db++ in a different place you have add the installation path to the configure option like this: --with-dbplus=/your/installation/path.

Runtime Configuration

This extension does not define any configuration directives.

Resource Types

dbplus_relation

Most db++ functions operate on or return dbplus_relation resources. A dbplus_relation is a handle to a stored relation or a relation generated as the result of a query.

Predefined Constants

db++ error codes

Tabela 1. DB++ Error Codes

PHP Constantdb++ constantmeaning
DBPLUS_ERR_NOERRERR_NOERRNull error condition
DBPLUS_ERR_DUPLICATEERR_DUPLICATETried to insert a duplicate tuple
DBPLUS_ERR_EOSCANERR_EOSCANEnd of scan from rget()
DBPLUS_ERR_EMPTYERR_EMPTYRelation is empty (server)
DBPLUS_ERR_CLOSEERR_CLOSEThe server can't close
DBPLUS_ERR_WLOCKEDERR_WLOCKEDThe record is write locked
DBPLUS_ERR_LOCKEDERR_LOCKEDRelation was already locked
DBPLUS_ERR_NOLOCKERR_NOLOCKRelation cannot be locked
DBPLUS_ERR_READERR_READRead error on relation
DBPLUS_ERR_WRITEERR_WRITEWrite error on relation
DBPLUS_ERR_CREATEERR_CREATECreate() system call failed
DBPLUS_ERR_LSEEKERR_LSEEKLseek() system call failed
DBPLUS_ERR_LENGTHERR_LENGTHTuple exceeds maximum length
DBPLUS_ERR_OPENERR_OPENOpen() system call failed
DBPLUS_ERR_WOPENERR_WOPENRelation already opened for writing
DBPLUS_ERR_MAGICERR_MAGICFile is not a relation
DBPLUS_ERR_VERSIONERR_VERSIONFile is a very old relation
DBPLUS_ERR_PGSIZEERR_PGSIZERelation uses a different page size
DBPLUS_ERR_CRCERR_CRCInvalid crc in the superpage
DBPLUS_ERR_PIPEERR_PIPEPiped relation requires lseek()
DBPLUS_ERR_NIDXERR_NIDXToo many secondary indices
DBPLUS_ERR_MALLOCERR_MALLOCMalloc() call failed
DBPLUS_ERR_NUSERSERR_NUSERSError use of max users
DBPLUS_ERR_PREEXITERR_PREEXITCaused by invalid usage
DBPLUS_ERR_ONTRAPERR_ONTRAPCaused by a signal
DBPLUS_ERR_PREPROCERR_PREPROCError in the preprocessor
DBPLUS_ERR_DBPARSEERR_DBPARSEError in the parser
DBPLUS_ERR_DBRUNERRERR_DBRUNERRRun error in db
DBPLUS_ERR_DBPREEXITERR_DBPREEXITExit condition caused by prexit() * procedure
DBPLUS_ERR_WAITERR_WAITWait a little (Simple only)
DBPLUS_ERR_CORRUPT_TUPLEERR_CORRUPT_TUPLEA client sent a corrupt tuple
DBPLUS_ERR_WARNING0ERR_WARNING0 The Simple routines encountered a non fatal error which was corrected
DBPLUS_ERR_PANICERR_PANIC The server should not really die but after a disaster send ERR_PANIC to all its clients
DBPLUS_ERR_FIFOERR_FIFOCan't create a fifo
DBPLUS_ERR_PERMERR_PERMPermission denied
DBPLUS_ERR_TCLERR_TCLTCL_error
DBPLUS_ERR_RESTRICTEDERR_RESTRICTEDOnly two users
DBPLUS_ERR_USERERR_USER An error in the use of the library by an application programmer
DBPLUS_ERR_UNKNOWNERR_UNKNOWN 

Spis treści
dbplus_add -- Add a tuple to a relation
dbplus_aql -- Perform AQL query
dbplus_chdir -- Get/Set database virtual current directory
dbplus_close -- Close a relation
dbplus_curr -- Get current tuple from relation
dbplus_errcode --  Get error string for given errorcode or last error
dbplus_errno -- Get error code for last operation
dbplus_find -- Set a constraint on a relation
dbplus_first -- Get first tuple from relation
dbplus_flush -- Flush all changes made on a relation
dbplus_freealllocks -- Free all locks held by this client
dbplus_freelock -- Release write lock on tuple
dbplus_freerlocks -- Free all tuple locks on given relation
dbplus_getlock -- Get a write lock on a tuple
dbplus_getunique -- Get a id number unique to a relation
dbplus_info -- ???
dbplus_last -- Get last tuple from relation
dbplus_lockrel -- Request write lock on relation
dbplus_next -- Get next tuple from relation
dbplus_open -- Open relation file
dbplus_prev -- Get previous tuple from relation
dbplus_rchperm -- Change relation permissions
dbplus_rcreate -- Creates a new DB++ relation
dbplus_rcrtexact -- Creates an exact but empty copy of a relation including indices
dbplus_rcrtlike -- Creates an empty copy of a relation with default indices
dbplus_resolve -- Resolve host information for relation
dbplus_rkeys -- Specify new primary key for a relation
dbplus_restorepos -- ???
dbplus_ropen -- Open relation file local
dbplus_rquery -- Perform local (raw) AQL query
dbplus_rrename -- Rename a relation
dbplus_rsecindex --  Create a new secondary index for a relation
dbplus_runlink -- Remove relation from filesystem
dbplus_rzap -- Remove all tuples from relation
dbplus_savepos -- ???
dbplus_setindex -- ???
dbplus_setindexbynumber -- ???
dbplus_sql -- Perform SQL query
dbplus_tcl -- Execute TCL code on server side
dbplus_tremove -- Remove tuple and return new current tuple
dbplus_undo -- ???
dbplus_undoprepare -- ???
dbplus_unlockrel -- Give up write lock on relation
dbplus_unselect -- Remove a constraint from relation
dbplus_update -- Update specified tuple in relation
dbplus_xlockrel -- Request exclusive lock on relation
dbplus_xunlockrel -- Free exclusive lock on relation