返回首页

gbase数据、南大通用产品文档:GBase8aGetByte 方法

更新日期:2024年09月11日

获取指定列的字节类型值。

重载列表
1) 根据给定的序号,获取指定列的字节类型值。
GetByte(Int32)
2) 根据给定的列名,获取指定列的字节类型值。
GetByte(String)

问题现象
现场进行多个insert...select 的操作,多个任务一起操作的时候,insert 后跟对应的
字段名,执行插入后报错get cluster task id fail。
原因分析
gcware 日志中报错:

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
65
corosync [IPC ]coroipcs create thread error with errno 11
dmesg 中报错:
[1871111.282609] cgroup: fork rejected by pids controller in /system.slice/gc
ware.service
[2222469.222555] cgroup: fork rejected by pids controller in /system.slice/gc
ware.service
[2414924.406356] cgroup: fork rejected by pids controller in /system.slice/mo
nit.service
根据如上报错,'fork rejected by pids controller' 说明对进程数是有限制的。
最终原因是因为在SUSE 12 上增加了systemd 的资源控制,其中默认参数:
DefaultTasksMax was default value(512).
systemd limited maximum number of tasks that may be created in the unit.
这个值会影响OS 上的maxpid。
解决方法
将参数DefaultTasksMax 设为无限制后解决该问题:
修改/etc/systemd/system.conf
设置DefaultTasksMax 的值为'infinity',重启主机。
说明

这个问题原因在于R7 或是S12 系列,使用了systemd,在R6 或S11 上没
有,当这个启动后,忽略掉/etc/security/limits.conf 下的设置。
DefaultTasksMax 参数(默认512)需要放在/etc/systemd/system.conf
中,我们可以安装集群过程中修改该值,但是如果不重启操作系统的话,
不会生效,这个属于新版操作系统问题,需要在安装集群前设置生效。综
上,需要部署集群前,手动设置。

CASE 表达式允许语句返回几个可能的结果之一,这依赖于若干条件测试中哪个求值为
TRUE。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 179 -
下列示例展示如何在 UPDATE 语句中使用 CASE 表达式来增加 stock 表中某些商品的单
价:
UPDATE stock
SET unit_price = CASE
WHEN stock_num = 1
AND manu_code = "HRO"
THEN unit_price * 1.2
WHEN stock_num = 1
AND manu_code = "SMT"
THEN unit_price * 1.1
ELSE 0
END
您必须在 CASE 表达式内包括至少一个 WHEN 子句;后续的 WHEN 子句和 ELSE 子
句是可选的。如果无 WHEN 条件求值为真,则结果值为空。