返回首页

gbase数据、南大通用产品文档:GBase8sCONVERSION_GUARD 配置参数

更新日期:2024年09月11日

如果在升级过程中发生错误,使用 CONVERSION_GUARD 配置参数来指定 GBase 8s 是停止
还是继续升级到服务器的新版本。
onconfig.std 值
CONVERSION_GUARD 2

0 = 禁用。
1 = 如果发生与捕获恢复点数据相关的错误,则启用一个恢复点作为升级进程的一部分,
并停止升级。
2 = 即使发生与捕获恢复点数据相关的错误,也启用一个恢复点作为升级进程的一部分,
并继续升级。
单位
整数
生效
当数据库服务器重启时。
用法
缺省情况下:
 CONVERSION_GUARD 配置参数为开(设置为 2)。如果升级到服务器新版本失败,
则您可使用 onrestorept 实用程序来恢复数据。
 服务器在 $GBASEDBTDIR/tmp 目录中存储恢复点数据。
如果 CONVERSION_GUARD 配置参数设置为 1 或 2 且升级到服务器新版本失败,则您可使
用 onrestorept 实用程序来恢复数据。
如果 CONVERSION_GUARD 配置参数设置为 2 且转换防护操作失败(例如,由于服务器没有
足够空间存储恢复点数据)

升级失败,
则您不可使用 onrestorept 实用程序来恢复数据。


GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 52 -
在启动服务器初始化升级到服务器新版本前,您可更改 CONVERSION_GUARD 配置参数的值
或更改在 RESTORE_POINT_DIR 配置参数中指定的目录。升级期间,您不可更改
CONVERSION_GUARD 或 RESTORE_POINT_DIR 值。

大部分数据类型都可以使用比较操作符,进行比较并返回一个布尔类型的值。
比较操作符均为双目操作符,
待比较的两个数据类型必须是相同的数据类型或者是可以
进行隐式转换的类型。
GBase 8c 提供的比较操作符,参见表5-2。
表5-2 比较操作符
操作符
描述
<
小于

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
103
>
大于
<=
小于或等于
>=
大于或等于
=
等于
<> 或!=或^=
不等于
比较操作符可以用于所有相关的数据类型。
所有比较操作符都是双目操作符,
返回布尔
类型数值。当输入的数据不同且无法隐式转换时,比较操作将会失败。例如,1<2<3 表达式
是非法的,因为1 在表达式中视为布尔值,等同于TRUE,无法与数值类型通过小于号(<)
比较。

密态支持函数/存储过程
密态支持函数/存储过程当前版本只支持sql 和PL/pgsql 两种语言。由于密态支持存储
过程中创建和执行函数/存储过程对用户是无感知的,因此语法和非密态无区别。
密态等值查询支持函数存储过程新增系统表gs_encrypted_proc,
用于存储参数返回的原
始数据类型。
创建并执行涉及加密列的函数/存储过程
步骤1 创建密钥,
详细步骤请参考7.4.2 使用gsql 操作密态数据库和7.4.3 使用JDBC 操作
密态数据库。
步骤2 创建加密表。
postgres=# CREATE TABLE creditcard_info (
gbase(# id_number int,
gbase(# name text,

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
205
gbase(# credit_card varchar(19) encrypted with (column_encryption_key = ImgCEK1,
encryption_type = DETERMINISTIC)
gbase(# ) with (orientation=row);
CREATE TABLE
步骤3 插入数据。
postgres=# insert into creditcard_info values(1, 'Avi', '1234567890123456');
INSERT 0 1
postgres=# insert into creditcard_info values(2, 'Eli', '2345678901234567');
INSERT 0 1
步骤4 创建函数支持密态等值查询。
postgres=# CREATE FUNCTION f_encrypt_in_sql(val1 text, val2 varchar(19)) RETURNS
text AS 'SELECT name from creditcard_info where name=$1 or credit_card=$2 LIMIT 1'
LANGUAGE SQL; CREATE FUNCTION
postgres=# CREATE FUNCTION f_encrypt_in_plpgsql (val1 text, val2 varchar(19))
gbase-# RETURNS text AS $$
gbase$# DECLARE
gbase$# c text;
gbase$# BEGIN
gbase$# SELECT into c name from creditcard_info where name=$1 or credit_card =$2 LIMIT
1;
gbase$# RETURN c;
gbase$# END; $$
gbase-# LANGUAGE plpgsql;
CREATE FUNCTION
步骤5 执行函数。
postgres=# SELECT f_encrypt_in_sql('Avi','1234567890123456');
f_encrypt_in_sql
------------------
Avi
(1 row)
postgres=# SELECT f_encrypt_in_plpgsql('Avi', val2=>'1234567890123456');
f_encrypt_in_plpgsql
----------------------
Avi
(1 row)
----结束

函数/存储过程中的“执行动态查询语句”中的查询是在执行过程中编译,因此函数/存储

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
206
过程中的表名、列名不能在创建阶段未知,输入参数不能用于表名、
列名或以任何方式
连接。

在RETURNS、IN 和OUT 的参数中,不支持混合使用加密和非加密类型参数。虽然参
数类型都是原始数据类型,但实际类型不同。

当前版本函数/存储过程的LANGUAGE 只支持SQL 和PL/pgSQL,不支持C 和JAVA
等其他过程语言。

不支持在函数/存储过程中执行其他查询加密列的函数/存储过程。

当前版本不支持default、
DECLARE 中为变量赋予默认值,
且不支持对DECLARE 中的
返回值进行解密,用户可以用执行函数时用输入参数,输出参数来代替使用。

不支持gs_dump 对涉及加密列的function 进行备份。

不支持在函数/存储过程中创建密钥。

该版本密态函数/存储过程不支持触发器

密态等值查询函数/存储过程不支持对plpgsql 语言对语法进行转义,
对于语法主体带有
引号的语法CREATE FUNCTION AS ‘语法主体',可以用CREATE FUNCTION AS $$语
法主体$$代替。

不支持在密态等值查询函数/存储过程中执行修改加密列定义的操作,包括对创建加密
表,添
加加密列,由于执行函数是在服务端,客户端没法判断是否是需要刷新缓存,
得断开连接后或触发刷新客户端加密列缓存才可以对该列做加密操作。