返回首页

gbase数据、南大通用产品文档:GBase8s启用 AUTOFREE 功能

更新日期:2024年09月11日

有两种方法启用 ODBC 应用程序的 AUTOFREE 功能。
使用 SQLSetConnectAttr 设置 SQL_INFX_ATTR_AUTO_FREE 属性时,可以在 C2 和
C5 之间
(包括两者)
的任何连接状态中进行设置,
而只有当语句处于 S1 (分配)
状态时,
才可以使用 SQLSetStmtAttr 设置 SQL_INFX_ATTR_AUTO_FREE 属性。可以通过使用
SQLGetConnectAttr 或 SQLSetStmtAttr 检索 SQL_INFX_ATTR_AUTO_FREE 属性的值。

可以是使用以下方法启用 ODBC 应用程序的 AUTOFREE 功能:
 使用 SQLSetConnectAttr 设置 SQL_INFX_ATTR_AUTO_FREE 属性。
当您使用 SQLSetConnectAttr启用该属性时,该连接的所有的新的语句都会继承该值。
更改该属性的唯一方法是设置每一条语句并将它重新设置为语句的属性。
连接属性缺
省为 DISABLED 。

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 190 -
 使用 SQLSetStmtAttr 设置 SQL_INFX_ATTR_AUTO_FREE 属性。

参数说明:
指定VACUUM 对全表的扫描冻结元组的时间。
如果表的pg_class.relfrozenxid
字段的值已经达到了参数指定的时间,VACUUM 对全表进行扫描。
该参数属于USERSET 类型参数,请参考表GUC 参数设置方式中对应设置方法进行设
置。
取值范围:整型,0~576 460 752 303 423 487
说明:
尽管随时可以将此参数设为零到20 亿之间的值,但是,VACUUM 将默认其有效值范
围限制在autovacuum_freeze_max_age 的95%以内。定期的手动VACUUM 可以在对此表的
反重叠自动清理启动之前运行。
默认值:15000000000

ifx_lo_copy_to_file() 函数将智能大对象的内容复制至操作系统文件内。
语法
mint ifx_lo_copy_to_file(LO_ptr, fname, flags, result)
ifx_lo_t *LO_ptr;
char *fname;
mint flags;
char *result;
LO_ptr
指向您提供来标识要复制的智能大对象的 LO-pointer 结构的指针。
fname
要保存该数据的目标文件的完全路径名称。
flags
指定 fname 文件的位置的整数。
result
指向包含 ifx_lo_copy_to_file() 生成的文件名称的缓冲区的指针。
用法
ifx_lo_copy_to_file() 函数可在服务器或客户机计算机上创建目标文件。flags 参数的
标志值指示要复制的文件的位置。有效值包括下列 locator.h 头文件定义的常量。
File-location 常量用途LO_CLIENT_FILE
fname 文件在客户机计算机上。
LO_SERVER_FILE
fname 文件在服务器计算机上。
在缺省情况下,ifx_lo_copy_to_file() 函数生成的文件名称形如:
fname.hex_id
在此格式中,
fname 是您指定作为 ifx_lo_copy_to_file() 的参数的文件名称,
且 hex_id
为唯一的十六进制 smart-large-object 标识符。
smart-large-object 标识符的位数最大值为 17;
然而,大多数智能大对象的标识符位数较少。

例如,假定您指定 pathname 值为 '/tmp/resume'。

如果该 CLOB 列有标识符 203b2,则 ifx_lo_copy_to_file() 函数创建文件:
/tmp/resume.203b2。

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

要更改此缺省的文件名称,您可在 fname 的文件名称部分指定下列通配符:
文件名称中的一个或多个相邻的问号(?)字符可生成唯一的文件名称。
ifx_lo_copy_to_file() 函数以来自 BLOB 或 CLOB 列的标识符的十六进制数字替代
每一问号。例如,假定您指定 pathname 值为 '/tmp/resume??.txt'。

ifx_lo_copy_to_file() 函数将两位十六进制标识符放入该名称内。如果该 CLOB 列有
标识符 203b2,则 ifx_lo_copy_to_file() 函数会创建文件 /tmp/resumeb2.txt。

如果您指定多于 17 个问号,则 ifx_lo_copy_to_file() 函数忽略它们。

在文件名称的末尾的感叹号(!)指示该文件名称不需要为唯一的。
例如,假定您指定路径名称值为 '/tmp/resume.txt!'。

ifx_lo_copy_to_file() 函数在该文件名称中未使用 smart-large-object 标识符,
因此,

生成下列文件:ifx_lo_copy_to_file()
感叹号覆盖文件名称规范中的问号。

提示: 这些通配符在 ifx_lo_filename() 函数的 fname 参数中也有效。

您的应用程序必须确保有充足的空间来保存生成的文件。

返回代码
0
函数成功。
<0
函数不成功,且返回值指示失败的原因。