12.07.2015 Views

Le resume linguistique de donnees structurees comme ... - APMD

Le resume linguistique de donnees structurees comme ... - APMD

Le resume linguistique de donnees structurees comme ... - APMD

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CHAPITRE 6 — Implémentation <strong>de</strong>s résumés SAINTETIQ en tant que métho<strong>de</strong> d’accès 137mécanisme détaillé dans le paragraphe suivant. getmulti et gettuple se contentent par la suited’extraire les adresses physiques <strong>de</strong> la liste. Cette <strong>de</strong>rnière fait partie <strong>de</strong>s ressources libéréesaprès que tous les résultats ont été fournis.La réutilisation d’une zone mémoire précé<strong>de</strong>mment allouée pendant la session <strong>de</strong> travail estinterdite en général et probablement impossible à réaliser. Mais elle est autorisée au cours <strong>de</strong>l’exécution d’une même requête. Lorsqu’une requête est reçue, la fonction beginscan est invoquéeavec en paramètre une structure <strong>de</strong> données (ScanDesc, pour « scan <strong>de</strong>scriptor ») quidécrit les critères <strong>de</strong> recherche. L’un <strong>de</strong>s champs <strong>de</strong> cette structure est un pointeur (« opaque »)dont l’usage est réservé à la métho<strong>de</strong> d’accès. Celle-ci peut donc y référencer un espace mémoireou une autre structure <strong>de</strong> données réutilisable par les fonctions <strong>de</strong> la métho<strong>de</strong> d’accès.Cependant, cet espace <strong>de</strong>vant être libéré par la fonction endscan, la métho<strong>de</strong> ne peut considérersa conservation <strong>comme</strong> un acquis : dans tous les cas, le serveur PostgreSQL remet la mémoiredans l’état précédant l’exécution <strong>de</strong> la requête.<strong>Le</strong>s classes d’opérateurs Durant le travail d’implémentation, la documentation du SGBD etle co<strong>de</strong> source ont apporté réponse à toutes les questions rencontrées. L’exception notable <strong>de</strong>sclasses d’opérateurs (operator classes) leur vaut une section dans ce document. La notion <strong>de</strong>« classe d’opérateur » a en effet été très difficile à appréhen<strong>de</strong>r. Nous offrons ici un complémentd’explication afin d’en faciliter la compréhension.Une requête simple dans le langage SQL est sous la forme SELECT [liste_<strong>de</strong>_champs]FROM [liste_<strong>de</strong>_tables] WHERE [clause_<strong>de</strong>_sélection]. Dans le cas le plus fréquent, la clause<strong>de</strong> sélection est une condition d’égalité, par exemple dans « SELECT * FROM EmployésWHERE Département = ’RH’ », ou une inégalité quelconque, par exemple dans « SELECT *FROM Employés WHERE Age ≤ 20 ». La forme générale d’un critère est champ op valeur.Une classe d’opérateur désigne simplement les instanciations <strong>de</strong> l’opérateur op que peuttraiter une métho<strong>de</strong> d’accès. Cette définition se fait pour un type <strong>de</strong> données spécifique. <strong>Le</strong>tableau 6.4 donne un exemple <strong>de</strong> <strong>de</strong>ux classes d’opérateurs SAINTETIQ (« . . . USING saintetiq.. . ») pour les types entier et caractère. Par ces définitions, le SGBD est informé que lamétho<strong>de</strong> d’accès traite les requêtes où l’opérateur reliant le champ et la valeur est l’opérateurd’égalité. Si la métho<strong>de</strong> avait admis les recherches par inégalité utilisant l’opérateur « >= » surles entiers, la déclaration <strong>de</strong> la classe d’opérateur sur le type int4 aurait comporté en plus USINGsaintetiq AS OPERATOR 2 >=.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!