pg_amop
Le catalogue pg_amop
stocke les
informations concernant les opérateurs associés aux familles
d'opérateurs des méthodes d'accès aux index. Il y a une ligne pour
chaque opérateur membre d'une famille. Un membre d'une famille peut
être soit un opérateur de recherche soit un
opérateur de tri. Un opérateur peut apparaître
dans plus d'une famille, mais ne peut pas apparaître dans plus d'une
position à l'intérieur d'une famille.
Tableau 52.4. Colonnes de pg_amop
Nom | Type | Références | Description |
---|---|---|---|
oid | oid | Identifiant de ligne (attribut caché ; doit être sélectionné explicitement) | |
amopfamily | oid |
| La famille d'opérateur |
amoplefttype | oid |
| Type de données en entrée, côté gauche, de l'opérateur |
amoprighttype | oid |
| Type de données en entrée, côté droit, de l'opérateur |
amopstrategy | int2 | Numéro de stratégie d'opérateur | |
amoppurpose | char | But de l'opérateur, soit s pour
recherche soit o pour tri | |
amopopr | oid |
| OID de l'opérateur |
amopmethod | oid |
| Méthode d'accès à l'index pour cette famille d'opérateur |
amopsortfamily | oid |
| La famille d'opérateur B-tree utilisée par cette entrée pour trier s'il s'agit d'un opérateur de tri ; zéro s'il s'agit d'un opérateur de recherche |
Un opérateur de « recherche » indique qu'un index de cet
opérateur peut être utilisé pour rechercher toutes les lignes
satisfaisant une clause WHERE
colonne_indexée
opérateur
constante
. Cet opérateur doit évidemment
renvoyer un booléen et le type de l'entrée gauche doit correspondre
au type de données de la colonne de l'index.
Un opérateur de « tri » indique qu'un index de cette
famille d'opérateur peut être parcouru pour renvoyer les lignes dans
l'ordre représenté par une clause
ORDER BY
colonne_indexée
opérateur
constante
. Cet opérateur peut renvoyer
tout type de données triable, bien que le type de l'entrée gauche doit
correspondre au type de données de la colonne de l'index. La
sémantique exacte de la clause ORDER BY
est
spécifié par la colonne amopsortfamily
qui
doit référencer une famille d'opérateur B-tree pour le type de
résultat de l'opérateur.
Actuellement, il est supposé que l'ordre de tri pour un opérateur de
tri est celui par défaut de la famille d'opérateur référencée,
c'est-à-dire ASC NULLS LAST
. Ceci pourrait changer
en ajoutant des colonnes supplémentaires pour y indiquer explicitement
les options de tri.
Une entrée dans amopmethod
doit correspondre
au opfmethod
de sa famille d'opérateur parent
(l'inclusion de amopmethod
à ce niveau est une dénormalisation
intentionnelle de la structure du catalogue pour des raisons de performance).
De plus, amoplefttype
et
amoprighttype
doivent correspondre aux champs
oprleft
et oprright
de l'entrée pg_operator
référencée.