| 189 | | vaut true), alors <literal>check_uniqueness</literal> peut aussi valoir true, |
|---|
| 190 | | auquel cas la méthode d'accès doit vérifier qu'il n'y a pas de lignes en |
|---|
| 191 | | conflit ; c'est la seule situation dans laquelle la méthode d'accès a |
|---|
| 192 | | habituellement besoin du paramètre <literal>heapRelation</literal>. Voir |
|---|
| 193 | | <xref linkend="index-unique-checks"/> pour les détails. Le résultat vaut |
|---|
| 194 | | TRUE si une entrée de l'index a été insérée, FALSE sinon (un résultat FALSE |
|---|
| 195 | | l'indique par forcément une erreur mais est utilisé dans les cas comme un |
|---|
| 196 | | index AM refusant d'indexer une valeur NULL). |
|---|
| | 189 | vaut true), alors <literal>check_uniqueness</literal> peut aussi valoir |
|---|
| | 190 | true. Dans ce cas la méthode d'accès doit vérifier qu'il n'y a pas de ligne en |
|---|
| | 191 | conflit ; c'est la seule situation où le paramètre |
|---|
| | 192 | <literal>heapRelation</literal> est nécessaire dans la méthode d'accès. |
|---|
| | 193 | Voir <xref linkend="index-unique-checks"/> pour les détails. Le résultat vaut |
|---|
| | 194 | TRUE si une entrée de l'index a été insérée, FALSE sinon. (Un résultat FALSE |
|---|
| | 195 | n'indique pas une erreur, car il est utilisé dans divers cas, dont l'index AM |
|---|
| | 196 | qui refuse d'indexer une valeur NULL.) |
|---|
| 206 | | Supprime le(s) ligne(s) de l'index. C'est une opération de <quote>suppression |
|---|
| 207 | | en flot</quote> qui a pour but d'être implémentée par le parcours complet de |
|---|
| 208 | | l'index et par la vérification de chaque entrée pour vérifier si elle |
|---|
| 209 | | doit être supprimée. La fonction <literal>callback</literal> passée doit être |
|---|
| 210 | | appelée, dans le style <literal>callback(<replaceable>TID</replaceable>, callback_state) |
|---|
| 211 | | renvoie bool</literal>, pour déterminer si une entrée d'index particulière, |
|---|
| 212 | | identifiée par son TID référencé, est à supprimer. Doit renvoyer soit NULL |
|---|
| 213 | | soit une structure issue d'un palloc et contenant des statistiques sur les |
|---|
| | 206 | Supprimer un(des) tuple(s) de l'index. Il s'agit d'une opération de |
|---|
| | 207 | <quote>suppression massive</quote> à implanter par le parcours complet de |
|---|
| | 208 | l'index et la vérification de chaque entrée pour déterminer si elle |
|---|
| | 209 | doit être supprimée. La fonction <literal>callback</literal> en argument doit être |
|---|
| | 210 | appelée, sous la forme <literal>callback(<replaceable>TID</replaceable>, callback_state) |
|---|
| | 211 | returns bool</literal>, pour déterminer si une entrée d'index particulière, |
|---|
| | 212 | identifiée par son TID, est à supprimer. Cette fonction Doit renvoyer NULL |
|---|
| | 213 | ou une structure issue d'un palloc qui contient des statistiques sur les |
|---|
| 215 | | Il est bien de renvoyer NULL s'il n'est pas nécessaire de renvoyer des |
|---|
| 216 | | informations à <function>amvacuumcleanup</function>. |
|---|
| 217 | | </para> |
|---|
| 218 | | |
|---|
| 219 | | <para> |
|---|
| 220 | | À cause d'un <varname>maintenance_work_mem</varname> limité, |
|---|
| 221 | | <function>ambulkdelete</function> pourrait nécessiter d'être appelé plus |
|---|
| 222 | | d'une fois lorsque plusieurs lignes sont supprimées. L'argument |
|---|
| 223 | | <literal>stats</literal> est le résultat du dernier appel pour cet index |
|---|
| 224 | | (il est NULL pour le premier appel à l'intérieur d'une opération |
|---|
| 225 | | <command>VACUUM</command>). Ceci permet à l'AM d'accumuler les statistiques |
|---|
| 226 | | sur une même opération. Typiquement, <function>ambulkdelete</function> |
|---|
| 227 | | modifiera et renverra la même structure si le <literal>stats</literal> fourni |
|---|
| | 215 | La fonction peut retourner NULL si aucune information ne doit être envoyée à |
|---|
| | 216 | <function>amvacuumcleanup</function>. |
|---|
| | 217 | </para> |
|---|
| | 218 | |
|---|
| | 219 | <para> |
|---|
| | 220 | En cas de limitation de <varname>maintenance_work_mem</varname>, la |
|---|
| | 221 | suppression de nombreux tuples impose d'appeler |
|---|
| | 222 | <function>ambulkdelete</function> à plusieurs reprises. |
|---|
| | 223 | L'argument <literal>stats</literal> est le résultat du dernier appel pour cet index |
|---|
| | 224 | (il est NULL au premier appel dans une opération |
|---|
| | 225 | <command>VACUUM</command>). Ceci permet à l'AM d'accumuler des statistiques |
|---|
| | 226 | sur l'opération dans son intégralité. Typiquement, <function>ambulkdelete</function> |
|---|
| | 227 | modifie et renvoie la même structure si le <literal>stats</literal> fourni |
|---|
| 236 | | Nettoie après une opération <command>VACUUM</command> (zéro ou plus d'appels |
|---|
| 237 | | à <function>ambulkdelete</function>). Ceci n'a rien à voir avec autre chose |
|---|
| 238 | | que le renvoi des statistiques des index, mais il peut réaliser un nettoyage |
|---|
| 239 | | en masse, comme réclamer les pages d'index vides. <literal>stats</literal> |
|---|
| 240 | | est ce que renvoie l'appel à <function>ambulkdelete</function>, ou NULL si |
|---|
| 241 | | <function>ambulkdelete</function> n'a pas été appelé car aucune ligne n'avait |
|---|
| 242 | | besoin d'être supprimée. Si le résultat n'est pas NULL, il est une structure |
|---|
| 243 | | allouée avec palloc. Les statistiques qu'elle contient seront utilisées pour |
|---|
| 244 | | mettre à jour <structname>pg_class</structname>, et seront rapportées par |
|---|
| 245 | | <command>VACUUM</command> si <literal>VERBOSE</literal> est indiqué. Il est |
|---|
| 246 | | bien de renvoyer NULL si l'index n'a pas changé du tout lors de l'opération |
|---|
| 247 | | de <command>VACUUM</command> mais, sinon, des statistiques correctes devront |
|---|
| 248 | | être renvoyées. |
|---|
| | 236 | Nettoyage après une opération <command>VACUUM</command> (zéro à plusieurs |
|---|
| | 237 | appels à <function>ambulkdelete</function>). La fonction n'a pas d'autre but |
|---|
| | 238 | que de retourner des statistiques concernant les index, mais elle peut réaliser |
|---|
| | 239 | un nettoyage en masse (réclamer les pages d'index vides, par exemple). |
|---|
| | 240 | <literal>stats</literal> est le retour de l'appel à <function>ambulkdelete</function>, |
|---|
| | 241 | ou NULL si |
|---|
| | 242 | <function>ambulkdelete</function> n'a pas été appelée car aucune ligne n'avait |
|---|
| | 243 | besoin d'être supprimée. Si le résultat n'est pas NULL, il s'agit d'une structure |
|---|
| | 244 | allouée par palloc. Les statistiques qu'elle contient sont utilisées pour |
|---|
| | 245 | mettre à jour <structname>pg_class</structname>, et sont rapportées par |
|---|
| | 246 | <command>VACUUM</command> si <literal>VERBOSE</literal> est indiqué. La |
|---|
| | 247 | fonction peut retourner NULL si l'index n'a pas été modifié lors de l'opération |
|---|
| | 248 | de <command>VACUUM</command> mais, dans le cas contraire, il faut retourner |
|---|
| | 249 | des statistiques correctes. |
|---|
| 278 | | La fonction devrait construire une valeur de type <type>bytea</type> qui sera |
|---|
| 279 | | copiée dans le champ <structfield>rd_options</structfield> de l'entrée relcache |
|---|
| 280 | | de l'index. Les données contenues dans la valeur <type>bytea</type> dépendent |
|---|
| 281 | | de la méthode d'accès mais les méthodes d'accès standards utilisent actuellement |
|---|
| 282 | | tous la structure <structname>StdRdOptions</structname>. |
|---|
| 283 | | Quand <parameter>validate</parameter> est true, la fonction devrait rapporter |
|---|
| 284 | | un message d'erreur convenable si aucune des option n'est pas reconnue ou a des |
|---|
| | 279 | La fonction construit une valeur de type <type>bytea</type> à |
|---|
| | 280 | copier dans le champ <structfield>rd_options</structfield> de l'entrée relcache |
|---|
| | 281 | de l'index. Les données contenues dans la valeur <type>bytea</type> sont |
|---|
| | 282 | définies par la méthode d'accès, mais les méthodes d'accès standard utilisent actuellement |
|---|
| | 283 | toutes la structure <structname>StdRdOptions</structname>. |
|---|
| | 284 | Lorsque <parameter>validate</parameter> est true, la fonction remonte |
|---|
| | 285 | un message d'erreur clair si une option n'est pas reconnue ou a des |
|---|
| 291 | | Il est aussi bon de renvoyer NULL si le comportement par défaut est voulu. |
|---|
| 292 | | </para> |
|---|
| 293 | | |
|---|
| 294 | | <para> |
|---|
| 295 | | Bien sûr, Le but d'un index est de supporter les parcours de lignes |
|---|
| 296 | | correspondant à une condition <literal>WHERE</literal> indexable, souvent appelée |
|---|
| 297 | | un <firstterm>qualifieur</firstterm> ou une <firstterm>clé de parcours</firstterm>. La sémantique |
|---|
| | 292 | Pour obtenir le comportement par défaut, il suffit de retourner NULL. |
|---|
| | 293 | </para> |
|---|
| | 294 | |
|---|
| | 295 | <para> |
|---|
| | 296 | Le but d'un index est de supporter les parcours de lignes |
|---|
| | 297 | qui correspondent à une condition <literal>WHERE</literal> indexable, souvent appelée |
|---|
| | 298 | <firstterm>qualificateur</firstterm> |
|---|
| | 299 | (<foreignphrase>qualifier</foreignphrase>) ou <firstterm>clé de |
|---|
| | 300 | parcours</firstterm> (<foreignphrase>scan key</foreignphrase>). La sémantique |
|---|
| 324 | | Récupère la prochaine ligne dans le parcours donné, se déplaçant dans bonne |
|---|
| 325 | | direction (en avant ou en arrière dans l'index). Renvoie TRUE si une ligne a |
|---|
| 326 | | été obtenue, FALSE s'il ne reste aucune ligne correspondante. Dans le cas |
|---|
| 327 | | TRUE, le TID de la ligne est stocké dans la structure <literal>scan</literal>. Notez |
|---|
| 328 | | que <quote>success</quote> signifie seulement que l'index contient une entrée |
|---|
| 329 | | correspondant aux clés de parcours, pas que la ligne existe toujours dans |
|---|
| 330 | | l'en-tête ou réussira le test de l'appelant. |
|---|
| | 327 | Récupérer la prochaine ligne d'un parcours donné, dans la direction donnée |
|---|
| | 328 | (vers l'avant ou l'arrière de l'index). Renvoie TRUE si une ligne a |
|---|
| | 329 | été obtenue, FALSE s'il ne reste aucune ligne. Dans le cas |
|---|
| | 330 | TRUE, le TID de la ligne est stocké dans la structure |
|---|
| | 331 | <literal>scan</literal>. <quote>success</quote> signifie uniquement que |
|---|
| | 332 | l'index contient une entrée qui correspond aux clés de parcours, pas que |
|---|
| | 333 | la ligne existe toujours dans la pile ou qu'elle peut réussir le test |
|---|
| | 334 | d'instantané de l'appelant. |
|---|
| 340 | | Récupère plusieurs lignes dans le parcours donné. Renvoie TRUE si le parcours |
|---|
| 341 | | devait continuer, FALSE si aucune ligne correspondante ne reste. |
|---|
| 342 | | <literal>tids</literal> pointe vers un tableau de <literal>max_tids</literal> fourni par |
|---|
| 343 | | l'appelant. <structname>ItemPointerData</structname> enregistre, ce que l'appel remplit |
|---|
| 344 | | avec les TID des lignes correspondantes. <literal>*returned_tids</literal> est |
|---|
| 345 | | initialisé au nombre de TID réellement renvoyé. Ceci peut être moins que |
|---|
| 346 | | <literal>max_tids</literal>, voire même zéro, même si la valeur de retour vaut |
|---|
| 347 | | TRUE (ceci permet à la méthode d'accès de choisir les points d'arrêt les |
|---|
| | 344 | Récupérer plusieurs lignes d'un parcours donné. Renvoie TRUE si le parcours |
|---|
| | 345 | peut continuer, FALSE s'il ne subsiste plus aucune ligne. |
|---|
| | 346 | <literal>tids</literal> pointe sur un tableau fournit par l'appelant de |
|---|
| | 347 | <literal>max_tids</literal> enregistrements <structname>ItemPointerData</structname>, |
|---|
| | 348 | remplit, à l'appel, des TID des lignes correspondantes. <literal>*returned_tids</literal> est |
|---|
| | 349 | initialisé au nombre de TID réellement renvoyés. Il peut y en avoir moins |
|---|
| | 350 | que <literal>max_tids</literal>, voire zéro, même si la valeur de retour vaut |
|---|
| | 351 | TRUE. (Cette provision permet à la méthode d'accès de choisir les points d'arrêt les |
|---|
| 360 | | Recommence le parcours donné, si possible avec de nouvelles clés de parcours |
|---|
| 361 | | (pour continuer à utiliser les anciennes clés, NULL est passé pour |
|---|
| 362 | | <literal>key</literal>). Notez qu'il n'est pas possible de changer le nombre de |
|---|
| 363 | | clés. En pratique, la fonctionnalité de relancement est utilisée quand une |
|---|
| 364 | | nouvelle ligne externe est sélectionné par une jointure imbriquée en boucle |
|---|
| 365 | | et, du coup, la valeur de la comparaison d'une nouvelle clé est nécessaire |
|---|
| 366 | | mais la structure de la clé de parcours reste identique. Cette fonction est |
|---|
| 367 | | aussi appelée par <function>RelationGetIndexScan()</function>, donc c'est utilisé pour |
|---|
| 368 | | une configuration initiale d'un parcours d'index ainsi que pour parcourir de |
|---|
| 369 | | nouveau. |
|---|
| | 364 | Recommencer le parcours donné, si possible avec de nouvelles clés de parcours |
|---|
| | 365 | (pour continuer à utiliser les anciennes clés, passer NULL pour |
|---|
| | 366 | <literal>key</literal>). Il n'est pas possible de changer le nombre de |
|---|
| | 367 | clés. En pratique, la fonctionnalité de relance est utilisée quand une |
|---|
| | 368 | nouvelle ligne externe est sélectionnée par une jointure imbriquée en |
|---|
| | 369 | boucle, ce qui impose une nouvelle valeur de comparaison de clés, |
|---|
| | 370 | mais la structure de la clé de parcours reste inchangée. Cette fonction est |
|---|
| | 371 | aussi appelée par <function>RelationGetIndexScan()</function>. Elle est de |
|---|
| | 372 | ce fait à la fois utilisée pour initialiser un parcours d'index et |
|---|
| | 373 | pour le re-parcourir. |
|---|
| 398 | | méthode d'accès aux index devrait afficher le bon nombre d'arguments, mais |
|---|
| 399 | | les déclarer comme étant du type <type>internal</type> (car la plupart des |
|---|
| 400 | | arguments ont des types qui ne sont pas connus en SQL, et nous ne voulons |
|---|
| 401 | | pas que les utilisateurs appelent les fonctions directement). Le type |
|---|
| 402 | | renvoyé est déclaré comme <type>void</type>, <type>internal</type> ou <type>boolean</type> |
|---|
| | 402 | méthode d'accès aux index affiche le bon nombre d'arguments, mais |
|---|
| | 403 | les déclare tous du type <type>internal</type> (la plupart des |
|---|
| | 404 | arguments ont des types qui ne sont pas connus en SQL, et il n'est pas |
|---|
| | 405 | souhaitable que les utilisateurs appelent les fonctions directement). Le type |
|---|
| | 406 | de retour est déclaré <type>void</type>, <type>internal</type> ou <type>boolean</type> |
|---|