/
Gestion de curseurs XLAN (412)

Gestion de curseurs XLAN (412)

Gestion des curseurs

Changement Harmony 412

Cette version d’Harmony apporte les principales évolutions suivantes.

  • une gestion différenciée des curseurs SQL est mise en place par défaut. Voir les détails dans le chapitre suivant

  • le développeur peut, pour optimiser les lectures, forcer le type de curseur. Voir les détails dans le chapitre suivant

  • l’ancien mode MARS (voir plus bas) existe toujours, et reste actif si "mars_connection=yes" ; le nouveau mode est cependant préconisé

 

Les curseurs et leur utilisation par XLanSql

Voici les principaux curseur et leur application dans XLanSql

Type de curseur

Détails

Impact dans XLanSql et le développement

Type de curseur

Détails

Impact dans XLanSql et le développement

Forward (en avant)

SQL_CURSOR_FORWARD_ONLY

  • Curseur adapté à la lecture séquentielle

  • Le serveur peut anticiper la suite et renvoyer plusieurs lignes

  • Nette amélioration des performances de lecture

UTILISE EN HARMONY 412

Tous les SEEK (hseek, fseek) sont fait dans ce mode SQL_CURSOR_FORWARD_ONLY

Dès le développement, et lorsque le code déroule une lecture, il est possible de forcer ce curseur pour accélérer le traitement à l’exécution

Dynamic (dynamique)

SQL_CURSOR_DYNAMIC

  • Curseur adapté à la modification

  • Le serveur retourne une ligne a la fois au moment ou le client la demande. Si une nouvelle ligne apparait dans la base, elle sera donc vue immédiatement

UTILISE EN HARMONY 412

Tous les READ/PREAD (hread,hpread,fread,fpread) sont fait dans ce mode SQL_CURSOR_DYNAMIC

Static (statique)

SQL_CURSOR_STATIC

Les curseurs statiques sont générés dans tempdb lorsque le curseur est ouvert. Ils affichent toujours l'ensemble de résultats tel qu'il était au moment où le curseur a été ouvert. Ils ne reflètent jamais les modifications apportées aux données.

NON UTILISE DANS HARMONY OU L’ERP

(ne correspond pas aux usages habituels)

Driven (piloté)

SQL_CURSOR_KEYSET_DRIVEN

Le pilote enregistre et utilise les clés pour le nombre de lignes spécifiées dans l’attribut d’instruction SQL_ATTR_KEYSET_SIZE.

NON UTILISE DANS HARMONY OU L’ERP

(ne correspond pas aux usages habituels)

Lors du développement on pourra forcer avec la propriété .CURSORTYPE la lecture en mode forward (lorsque le cas s’y prête)

tdfXXX.CursorType = SQL_CURSOR_FORWARD_ONLY

Attention, en SQL_CURSOR_FORWARD_ONLY forcé, il est interdit de faire un rewrite/delete sur une ligne lue. Cela provoque une erreur fatale.,

Paramétrage au menu ERP

Le nouveau mode de lecture est désormais actif par défaut mais peut être désactiver via le paramétrage menu pour revenir à l’ancien fonctionnement.

image-20241002-092513.png

Pour le désactiver, mettre la valeur 9 au lieu de 0 ou retirer tout simplement le paramètre MarsSqlCursor

Valeurs possible du paramètre Curseur :

  • 0 = SQL_CURSOR_FORWARD_ONLY

  • 1 = SQL_CURSOR_KEYSET_DRIVEN

  • 2 = SQL_CURSOR_DYNAMIC

  • 3 = SQL_CURSOR_STATIC

  • Autre = Désactive l’utilisation