返回首页

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

更新日期:2024年09月11日

sqlsignal() 函数启用或禁用 GBase 8s ESQL/C 库处理的信号的信号处理。

语法

void sqlsignal(sigvalue, sigfunc_ptr, mode)

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 948 -
mint sigvalue;
void (*sigfunc_ptr) (void);
int mode;
sigvalue
需要捕获的特定的信号的 mint 值(如 signal.h) 定义的那样)。
当前,此参数是未来设计功能的占位符。请将此参数初始化为 -1。

sigfunc_ptr
指向用户定义的函数的指针,其不带参数,来为 sigvalue 信号作为信号句柄调用。
当前,此参数是未来设计功能的占位符。请将此参数初始化为指向不接收参数的函数
的空指针。

mode
可为三种可能的模式之一:
0
初始化信号处理。
1
禁用信号处理。
2
重新启用信号处理。

用法

sqlsignal() 函数当前仅为 SIGCHLD 信号提供处理。在有些情况下,在应用程序结束
之后,defunct 子进程保持。如果应用程序不清理这些进程,则它们导致进程 ID 不必要的
使用,并增加您用尽进程的风险。对于客户机-服务器通讯,当应用程序使用管道时(即,
sqlhosts 文件的 nettype 字段为 ipcpip),此行为才显而易见。对于其他通讯机制,你无
需调用 sqlsignal()(例如, tlipcp 的 nettype)。

sqlsignal() 的 mode 参数确定 sqlsignal() 执行的任务,如下:
设置 mode 为 0 来初始化信号处理。
sqlsignal(-1, (void (*)(void))0, 0);


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 949 -
当您以 sqlsignal() 来初始化信号处理时,GBase 8s ESQL/C 库捕获 SIGCHLD 信号
来处理 defunct 子进程的清除。
此初始的 sqlsignal() 调用必须发生在您的应用程序的开头,
在程序中的第一个 SQL 语句之前。如果您省略此初始的调用,则在您的程序中,稍后不
可开启信号处理能力。

启用或禁用信号处理。

如果您想要让 GBase 8s ESQL/C 库为程序的部分执行信息处理,且您自己的代码为
其他部分执行信号处理,则您可采取下列行动:
要禁用信号处理,
请以设置为 1 的 mode 调用 sqlsignal(),
在您想要您的程序处理信
号的点处:
sqlsignal(-1, (void (*)(void))0, 1);
要重新启用信号处理,
请以设置为 2 的 mode 来调用 sqlsignal(),
在您想要 GBase 8s
ESQL 库处理信号的点处:
sqlsignal(-1, (void (*)(void))0, 2);
当您以 sqlsignal() 初始化 SIGCHLD 信号处理时,您允许 GBase 8s ESQL/C 库处理
SIGCHLD 清除。否则,如果 defunct 子进程是个问题,则您的应用程序必须执行对这些
进程的清理。

以 GBase 8s,SPL 例程中 SQL 语句中使用点符号表示法(如在 proj.name)被解释为有
三种含义之一,优先顺序如下:
1. variable.field
2. column.field
3. table.column
换言之,首先将表达式 proj.name 求值为 variable.field。如果例程未找到变量 proj,则它
将该表达式求值为 column.field。如果例程未找到列 proj,则它将该表达式求值为
table.column。(如果不可将名称解析为数据库中对象的标识符,或在 SPL 例程中声明了
的变量或字段,则返回错误。)

URL 示例:http://192.168.5.3:8080/syncmonitor
该接口功能可以获取同步工具的相关监控信息,从而得出同步工具的队列
拥塞、同步速率等信息。将source 标签的openMonitor 属性配置为true,可
以开启监控功能。
调用结果:
{
"maxmqsize":10000,
"currentmqsize":0,
"intervaltime":300,
"commitcount":0,
"sqlcount":0,
"message":"缓存队列配置可用最大队列深度(maxmqsize)为10000,
当前队列深度(currentmqsize)为0!300 秒内同步事务个数0,同步数据条数
0!",
"openMonitor":true
}
结果字段说明:
openMonitor:是否开启了监控。即config_task.xml 中source 标签的
openMonitor 属性,true 为开启,false 为关闭。
maxmqsize:最大队列深度。即config_task.xml 中source 标签的
queueSize 属性。
currentmqsize: 当前队列深度。监控周期内缓存队列中的数据
intervaltime: 监控周期(秒)。即config_task.xml 中source 标签的
monitorInterval 属性。
commitcount: 同步事务个数。监控周期内同步事务个数。

GBase RTSync 同步工具手册
南大通用数据技术股份有限公司
- 49 -
sqlcount: 同步数据条数。监控周期内同步的数据条数。
message: 监控信息。
【注】:该功能不支持SQL Server 源。