XXI. DB++

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Introduction

DB++, qui est programmé par une société allemande Concept asa, est un système de base de données relationnelles à haute performance, faible consommation de mémoire et de disque. Bien qu'il comprenne le langage SQL en tant qu'interface supplémentaire, ce n'est pas vraiment une base de données SQL, car elle fournit son propre langage SQL, qui est plus influencé par l'algèbre relationnelle que ne l'est SQL.

Concept asa a toujours supporté les langages Open Source, et DB++ dispose d'interfaces Perl et Tcl depuis longtemps. Il utilise aussi Tcl pour ses procédures stockées internes.

Pré-requis

Cette extension dépend de librairie cliente externe : vous devez donc avoir le client DB++ installé sur le système pour pouvoir compiler cette extension dans PHP.

Concept asa fournit des versions de démo de DB++ et la documentation pour Linux, ainsi que certaines autres versions UNIX. Il y a aussi une version pour Windows de DB++, mais cette extension ne la supporte pas (pour le moment).

Installation

Pour compiler cette extension par vous même, vous devez avoir les librairies clients et les fichiers d'en-têtes installés sur le système (ils sont inclus dans la distribution de DB++ par défaut). Exécutez la commande configure avec l'option --with-dbplus pour inclure cette extension dans PHP.

configure recherche les librairies clients et les fichiers d'en-têtes dans les dossiers suivants : /usr/dbplus, /usr/local/dbplus et /opt/dbplus. Si vous avez installé DB++ dans un autre dossier, indiquez le chemin de ce dossier dans l'option de configure comme ceci : --with-dbplus=/votre/dossier/installation.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

dbplus_relation

La plupart des fonctions DB++ travaillent avec une ressource de type dbplus_relation : c'est un pointeur sur une relation, ou une relation, générée par une requête.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Codes d'erreurs de DB++

Tableau 1. Codes d'erreurs de DB++

Constante PHPConstante DB++Description
DBPLUS_ERR_NOERR (entier) ERR_NOERRCondition d'erreur Null
DBPLUS_ERR_DUPLICATE (entier) ERR_DUPLICATETentative d'insertion d'un doublon
DBPLUS_ERR_EOSCAN (entier) ERR_EOSCANFin de scan rget()
DBPLUS_ERR_EMPTY (entier) ERR_EMPTYRelation vide (serveur)
DBPLUS_ERR_CLOSE (entier) ERR_CLOSELe serveur ne peut fermer
DBPLUS_ERR_WLOCKED (entier) ERR_WLOCKEDLa ligne est verrouillée en écriture
DBPLUS_ERR_LOCKED (entier) ERR_LOCKEDLa relation est déjà verrouillée
DBPLUS_ERR_NOLOCK (entier) ERR_NOLOCKLa relation ne peut être verrouillée
DBPLUS_ERR_READ (entier) ERR_READErreur de lecture sur la relation
DBPLUS_ERR_WRITE (entier) ERR_WRITEErreur d'écriture sur la relation
DBPLUS_ERR_CREATE (entier) ERR_CREATELa fonction système Create() a échoué
DBPLUS_ERR_LSEEK (entier) ERR_LSEEKLa fonction système lseek() a échoué
DBPLUS_ERR_LENGTH (entier) ERR_LENGTHLa ligne excède la taille maximale
DBPLUS_ERR_OPEN (entier) ERR_OPENLa fonction système Open() a échoué
DBPLUS_ERR_WOPEN (entier) ERR_WOPENLa relation est déjà ouverte en lecture
DBPLUS_ERR_MAGIC (entier) ERR_MAGICLe fichier n'est pas une relation
DBPLUS_ERR_VERSION (entier) ERR_VERSIONLe fichier est une très vieille relation
DBPLUS_ERR_PGSIZE (entier) ERR_PGSIZELa relation utilise une page de taille différente
DBPLUS_ERR_CRC (entier) ERR_CRCCRC invalide de la superpage
DBPLUS_ERR_PIPE (entier) ERR_PIPEUne relation pipée requiert lseek()
DBPLUS_ERR_NIDX (entier) ERR_NIDXTrop d'index secondaires
DBPLUS_ERR_MALLOC (entier) ERR_MALLOCL'appel à malloc() a échoué
DBPLUS_ERR_NUSERS (entier) ERR_NUSERSErreur lors de l'utilisation du nombre maximal d'utilisateur
DBPLUS_ERR_PREEXIT (entier) ERR_PREEXITCausée par une utilisation invalide
DBPLUS_ERR_ONTRAP (entier) ERR_ONTRAPCausée par un signal
DBPLUS_ERR_PREPROC (entier) ERR_PREPROCErreur dans le préprocesseur
DBPLUS_ERR_DBPARSE (entier) ERR_DBPARSEErreur dans l'analyseur
DBPLUS_ERR_DBRUNERR (entier) ERR_DBRUNERRErreur durant l'exécution
DBPLUS_ERR_DBPREEXIT (entier) ERR_DBPREEXITLa condition d'exit a été causée par la procédure prexit()
DBPLUS_ERR_WAIT (entier) ERR_WAITAttend un peu (Simple seulement)
DBPLUS_ERR_CORRUPT_TUPLE (entier) ERR_CORRUPT_TUPLEUn client a envoyé une ligne corrompue
DBPLUS_ERR_WARNING0 (entier) ERR_WARNING0 Les routines Simple ont rencontrées une erreur non fatale, qui a été corrigée.
DBPLUS_ERR_PANIC (entier) ERR_PANIC Le serveur ne devrait pas s'arrêter, mais après un désastre, envoyer ERR_PANIC à tout ses clients
DBPLUS_ERR_FIFO (entier) ERR_FIFOImpossible de créer une pile FIFO
DBPLUS_ERR_PERM (entier) ERR_PERMPermission refusée
DBPLUS_ERR_TCL (entier) ERR_TCLTCL_error
DBPLUS_ERR_RESTRICTED (entier) ERR_RESTRICTEDSeulement deux utilisateurs
DBPLUS_ERR_USER (entier) ERR_USER Une erreur est survenue dans l'utilisation de la librairie par l'application.
DBPLUS_ERR_UNKNOWN (entier) ERR_UNKNOWNErreur inconnue

Table des matières
dbplus_add -- Ajoute une ligne à une relation
dbplus_aql -- Exécute une requête AQL
dbplus_chdir -- Lit/modifie le chemin courant de base
dbplus_close -- Ferme une relation
dbplus_curr -- Lit la ligne courante dans une relation
dbplus_errcode --  Obtenir un message d'erreur
dbplus_errno -- Lit le code d'erreur généré par la dernière opération
dbplus_find -- Ajoute une contrainte sur une relation
dbplus_first -- Lit la première ligne d'une relation
dbplus_flush -- Ecrit toutes les modifications apportées à une relation
dbplus_freealllocks -- Libère tous les verrous posés par le client
dbplus_freelock -- Lève un verrou en écriture sur une ligne
dbplus_freerlocks -- Lève tous les verrous sur les lignes d'une relation
dbplus_getlock -- Pose un verrou sur une ligne
dbplus_getunique -- Lit un identifiant unique pour une relation
dbplus_info -- Encore non implémentée
dbplus_last -- Lit la dernière ligne d'une relation
dbplus_lockrel -- Pose un verrou en écriture sur une relation
dbplus_next -- Lit la ligne suivante dans la relation
dbplus_open -- Ouvre un fichier de relation
dbplus_prev -- Lit la ligne précédente dans la relation
dbplus_rchperm -- Modifie les droits sur la relation
dbplus_rcreate -- Crée une nouvelle relation DB++
dbplus_rcrtexact -- Crée une copie exacte mais vide d'une relation
dbplus_rcrtlike -- Crée une copie exacte d'une relation, sans les indexes
dbplus_resolve -- Résoud les informations d'hôte pour une relation
dbplus_restorepos -- Pas encore implémenté
dbplus_rkeys -- Spécifie la nouvelle clé primaire d'une relation
dbplus_ropen -- Ouvre un fichier de relation local
dbplus_rquery -- Performe une requête AQL locale
dbplus_rrename -- Renomme une relation
dbplus_rsecindex --  Crée un nouvel index secondaire pour une relation
dbplus_runlink -- Détruit une relation
dbplus_rzap -- Supprime toutes les lignes d'une relation
dbplus_savepos -- Pas encore implémentée
dbplus_setindex -- Pas encore implémentée
dbplus_setindexbynumber -- Pas encore implémentée
dbplus_sql -- Exécute une requête SQL
dbplus_tcl -- Exécute du code TCL coté serveur
dbplus_tremove -- Supprime la ligne courante et retourne la nouvelle ligne courante
dbplus_undo -- Pas encore implémentée
dbplus_undoprepare -- Pas encore implémentée
dbplus_unlockrel -- Libère un verrou en écriture posé sur une relation
dbplus_unselect -- Retire une contrainte d'une relation
dbplus_update -- Modifie une ligne dans une relation
dbplus_xlockrel -- Pose un verrou exclusif sur une relation
dbplus_xunlockrel -- Lève un verrou exclusif posé sur une relation