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.
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:
En lugar de cargar la tabla, la ejecución se interrumpe y el registro muestra el siguiente mensaje:
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.
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:
La presencia de objetos grandes de tipo BLOB (Binary Large Object) o CLOB (Character Large Object).
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.
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
Identificar el correctivo: El correctivo se encuentra en la actualización del paquete del sistema sas©-tkcdfts.x86_64.
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.
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.