【问题描述】
某客户在通过 YashanDB JDBC 查询包含 st_geometry 字段的数据表时,出现如下异常:
YAS-00101: cannot allocate 0 bytes for anlHeapMalloc
此错误导致业务系统无法正常获取地理信息数据,查询直接失败。
【影响范围】
所有 YashanDB 版本
查询包含 st_geometry 类型字段的 SQL
使用 JDBC 驱动(不限版本)
【问题分析】
该异常源于:
当前数据库用户没有 st_geometry 类型的执行权限(EXECUTE ANY TYPE),导致驱动在反序列化该类型时内存分配失败。
st_geometry 是一种用户自定义类型(UDT),若没有执行权限,系统在尝试构造对象结构时会出错,从而触发 0 bytes 分配失败异常。
【解决方法】
为当前数据库用户添加 EXECUTE ANY TYPE 权限:
GRANT EXECUTE ANY TYPE TO ;
执行后即刻生效,无需重启服务。
【典型场景】
【规避建议】
【总结】
报错 YAS-00101 cannot allocate 0 bytes 往往不是内存问题,而是权限缺失;
关键是给用户加上对 st_geometry 类型的 EXECUTE 权限;
推荐在涉及 GIS 数据使用场景中默认赋权。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。