(classname) alloc vector
此函数会促使 SmartEDB 在数据库中分配页面以容纳向量元素,随后通过 classname_fieldname_put_range()
方法对其进行赋值。
若在现有对象上调用此函数,向量将调整为指定大小,若指定大小小于当前向量大小,则会截断向量;若指定大小大于当前大小,则向量将移至新的更大空间,之前使用的空间将丢失,因此应避免频繁重新分配向量。 在多次向量重新分配后,可使用 classname_pack()
API 对对象进行碎片整理,或者将 autocompact_threshold
数据库参数设置为在事务提交时,若对象大小超过指定阈值则自动整理对象。
请注意,此方法不会为固定大小的数组生成。
MCO_RET classname_fieldname_alloc(
/*IN*/ classname *handle,
/*IN*/ uint2 size
);
参数
handle
classname
指向类名句柄的指针。
size
uint2
一个 uint2
类型的变量,用于指定将存储在向量中的元素数量。
返回
MCO_S_OK
成功分配向量。
MCO_E_ACCESS
该类处理的事务范围是 MCO_READ_ONLY
。
MCO_E_TRANSACT
发生事务错误。
MCO_E_DELETED
尝试更新在当前事务中删除的对象。
MCO_E_NOMEM
无内存。
MCO_ERR_OBJECT_HANDLE
无效的对象句柄。
MCO_ERR_TRN_LONG
MCO_ERR_TRN
发生致命事务错误。