返回首页

gbase数据、南大通用产品文档:GBase8sifx_lo_open() 函数

更新日期:2024年09月11日

ifx_lo_open() 函数打开现有的智能大对象来访问。

语法

mint ifx_lo_open(LO_ptr, flags, error)
ifx_lo_t *LO_ptr;
mint flags;
mint *error;
LO_ptr
指向标识要打开的智能大对象的 LO-pointer 结构的指针。
flags
指定 LO_ptr 标识的智能大对象以何种方式打开的 mint。
error
指向包含 ifx_lo_open() 设置的错误代码的 mint 的指针。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 782 -

用法
对于它需要访问的每一智能大对象的实例,您的 GBase 8s ESQL/C 程序必须调用
ifx_lo_open() 函数。

在 ifx_lo_open() 成功地完成之后,flags 参数的值指示智能大对象的模
式。要了解 flags 参数的有效值的描述,请参阅 表 1。

GBase 8s 使用 ifx_lo_open()(或 ifx_lo_create())建立的缺省参数,
来确定后续的操作是否导致对于智能大对象的锁定或记录日志。

每一 ifx_lo_open() 调用都隐式地与当前连接相关联。当此连接关闭时,数据库服务
器释放任何列都不引用的任何智能大对象(其引用计数为零的那些)。

如果 ifx_lo_open() 函数成功,则它返回有效的 LO 文件描述符(LO_fd)。然后,您
可使用该文件描述符来标识在后续的函数调用中访问哪个智能大对象,诸如 ifx_lo_read()
和 ifx_lo_write()。LO_fd 仅在当前数据库连接之内有效。

在 ifx_lo_open() 已打开了智能大对象之后,它将放回的 LO 文件描述符中的搜寻位
置设置为字节 0。如果为了锁定整个智能大对象而设置锁定的缺省范围,则 ifx_lo_open()
函数还可取得智能大对象上的锁,基于访问模式的下列设置:
对于 dirty-read 模式,数据库服务器不在智能大对象上放置锁。
对于 read-only 模式,数据库服务器在智能大对象上取得共享锁。
对于 write-only、write-append 或 read-write 模式,数据库服务器在智能大对象上取
得更新锁。
当发生对 ifx_lo_write() 或 ifx_lo_writewithseek() 函数的调用时,
数据库服务器
将该锁提升为排他锁。

当当前事务终止时,
ifx_lo_open() 取得的锁丢失。
然而,
当需要锁的下一函数执行时,
数据库服务器在此取得该锁。如果不需要此行为,请使用 BEGIN WORK 事务块,并在需
要使用该锁的最后一条语句之后放置 COMMIT WORK 或 ROLLBACK WORK 语句。

返回代码
-1
函数不成功;请检测该错误的详尽错误代码。
有效的 LO 文件描述符

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 783 -
函数已成功地打开了智能大对象,并返回了有效的 LO 文件描述符。


GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
27

max_standby_archive_delay
参数说明:当开启双机热备模式时,如果备机正处理归档WAL 日志数据,这时进行查
询就会产生冲突,此参数就是设置备机取消查询之前所等待的时间。
该参数属于SIGHUP 类型参数,请参考表15-1 中对应设置方法进行设置。
须知:-1 表示允许备机一直等待冲突的查询完成。
取值范围:整型,范围:-1~INT_MAX,单位为毫秒。
默认值:3s(即3000ms)