CAS

Resolver el error "offset exceeds the varying data buffer" durante una carga ODBC

Simon 30/05/2022 2 vues

Al cargar datos en CAS (Cloud Analytic Services) a través de una interfaz ODBC, especialmente desde bases de datos como MySQL, puede encontrar un error de bloqueo relacionado con la gestión de los búferes de datos variables.

Este artículo analiza las causas de este mal funcionamiento y el procedimiento a seguir para corregirlo.

Illustration

El Síntoma

El escenario típico es el siguiente: utiliza PROC CASUTIL para cargar una tabla desde una fuente externa definida a través de un DSN ODBC (en odbc.ini).

Su código se parece a esto:

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

En lugar de cargar la tabla, la ejecución se interrumpe y el registro muestra el siguiente mensaje:

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

Podría pensar en un problema de configuración de la interfaz SAS©/ACCESS to ODBC o en un error en el archivo odbc.ini, pero la causa es más profunda.

La Explicación Técnica

Este error es el resultado de un error identificado en la gestión de ciertos tipos de datos mixtos por el motor CAS durante la ingesta.

El problema ocurre específicamente cuando la estructura de su tabla de origen combina dos características precisas:

  1. La presencia de objetos grandes de tipo BLOB (Binary Large Object) o CLOB (Character Large Object).

  2. La presencia, en la misma fila, de un valor vacío o nulo (NULL) para una columna de tipo VARCHAR o VARBINARY.

Es esta combinación específica (Large Object + Null Varchar) la que provoca el desbordamiento del búfer de memoria asignado.

La Solución

Desafortunadamente, no existe una solución funcional (workaround) a nivel de código SAS© o de configuración ODBC para evitar este error si sus datos cumplen los criterios anteriores.

La resolución requiere imperativamente una actualización de software (Hot Fix).

Procedimiento de resolución

  1. Identificar el correctivo: El correctivo se encuentra en la actualización del paquete del sistema sas©-tkcdfts.x86_64.

  2. Contactar al soporte: Se recomienda abrir un ticket con el soporte técnico de SAS© para informar del problema. Esto le permitirá ser notificado oficialmente de la disponibilidad del correctivo para su versión específica y asociar su entorno al defecto de software identificado.

  3. Aplicar la actualización: Una vez que el correctivo esté disponible, la instalación de la versión actualizada del paquete mencionado anteriormente resolverá definitivamente el error de búfer.