返回首页

gbase数据、南大通用产品文档:GBase8c废弃函数

更新日期:2024年09月11日

此外,还存在一些HLL 旧函数。可用类似的函数进行替代。

hll_schema_version(hll)
描述:查看当前hll 中的schema version。旧版本schema version 是常值1,用来进行hll
字段的头部校验,
重构后的hll 在头部增加字段
“HLL”
进行校验,
schema version 不再使用。

hll_regwidth(hll)
描述:查看hll 数据结构中桶的位数大小。旧版本桶的位数regwidth 取值1~5,会存在
较大的误差,也限制了基数估计上限。重构后regwidth 为固定值6,不再使用regwidth 变
量。

hll_expthresh(hll)
描述:得到当前hll 中expthresh 大小。采用hll_log2explicit(hll)替代类似功能。

hll_sparseon(hll)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
310
描述:是否启用Sparse 模式。采用hll_log2sparse(hll)替代类似功能,0 表示关闭Sparse
模式。

函数说明
返回天数N 对应的DATE 值。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
795
示例
示例1:“737881”对应的DATE 为“2020-04-01”。
gbase> SELECT FROM_DAYS(737881) FROM dual;
+-------------------+
| FROM_DAYS(737881) |
+-------------------+
| 2020-04-01
|
+-------------------+
1 row in set

问题现象
使用存储过的out 参数获取动态sql 执行的影响行数时,row_count()返回值为-1,
无法准确获取到sql 执行的行数。
解决方法
因为存储过程中使用了prepare 动态sql,
在获取row_count()之前又进行了prepare
statement 的释放,导致了无法获取prepare 执行的sql 影响行数。
存储过程示例及错误场景说明如下:
DELIMITER //
CREATE
PROCEDURE "executeSQL"(in S_SQL_TMP
varchar(10922),out
count_char int)
BEGIN
set @sql = S_SQL_TMP;
PREPARE s1 FROM @sql;
EXECUTE s1;
-- deallocate prepare s1;
-- 在获取row_count()值之前,销毁了prepare statement,错误
的用法
select row_count() into count_char;
deallocate prepare s1;
-- 获取到row_count()值之后,再执行deallocate prepare 命令
END //
DELIMITER ;
-- 测试返回正确的影响行数
call executeSQL('insert into t2 select * from t1',@r_count);
select @r_count;