CAS

Résoudre l'erreur "offset exceeds the varying data buffer" lors d'un chargement ODBC

Simon 30/05/2022 1 vues

Lors du chargement de données dans CAS (Cloud Analytic Services) via une interface ODBC, notamment depuis des bases de données comme MySQL, vous pouvez rencontrer une erreur bloquante liée à la gestion des buffers de données variables.

Cet article analyse les causes de ce dysfonctionnement et la procédure à suivre pour le corriger.

Illustration

Le Symptôme

Le scénario typique est le suivant : vous utilisez PROC CASUTIL pour charger une table depuis une source externe définie via un DSN ODBC (dans odbc.ini).

Votre code ressemble à ceci :

1PROC CASUTIL;
2 load casdata="ma_table_mysql" incaslib="SQLDATA"
3 casout="ma_table_cas" outcaslib="DBDATA";
4RUN;

Au lieu de charger la table, l'exécution s'interrompt et la log affiche le message suivant :

ERROR: Table ma_table variable ? offset exceeds the varying data buffer. ERROR: The action stopped due to errors.

Vous pourriez penser à un problème de configuration de l'interface SAS©/ACCESS to ODBC ou à une erreur dans le fichier odbc.ini, mais la cause est plus profonde.

L'Explication Technique

Cette erreur est le résultat d'un bug identifié dans la gestion de certains types de données mixtes par le moteur CAS lors de l'ingestion.

Le problème survient spécifiquement lorsque la structure de votre table source combine deux caractéristiques précises :

  1. La présence d'objets volumineux de type BLOB (Binary Large Object) ou CLOB (Character Large Object).

  2. La présence, dans la même ligne, d'une valeur vide ou nulle (NULL) pour une colonne de type VARCHAR ou VARBINARY.

C'est cette combinaison spécifique (Large Object + Null Varchar) qui provoque le dépassement de la mémoire tampon (buffer) allouée.

La Solution

Malheureusement, il n'existe aucun contournement fonctionnel (workaround) au niveau du code SAS© ou de la configuration ODBC pour éviter cette erreur si vos données respectent les critères ci-dessus.

La résolution passe impérativement par une mise à jour logicielle (Hot Fix).

Procédure de résolution

  1. Identifier le correctif : Le correctif se trouve dans la mise à jour du paquet système sas©-tkcdfts.x86_64.

  2. Contacter le support : Il est recommandé d'ouvrir un ticket auprès du support technique SAS© pour signaler le problème. Cela vous permettra d'être notifié officiellement de la disponibilité du correctif pour votre version spécifique et d'associer votre environnement au défaut logiciel identifié.

  3. Appliquer la mise à jour : Une fois le correctif disponible, l'installation de la version mise à jour du paquet mentionné ci-dessus résoudra définitivement l'erreur de buffer.