华为云用户手册

  • hll_add_agg(hll_hashval, int32 log2m, int32 log2explicit, int64 log2sparse) 描述:把哈希后的数据按照分组放到hll中, 依次指定参数log2m、log2explicit、log2sparse。log2sparse取值范围是0到14,0表示直接跳过Sparse模式。该参数可以用来设置Sparse模式的阈值大小,在数据段长度达到2log2sparse后切换为Full模式。若输入-1或者NULL,则log2sparse采用内置默认值。 返回值类型:hll 示例: 1 2 3 4 5 gaussdb=# SELECT hll_cardinality(hll_add_agg(hll_hash_text(c), NULL, 6, 10)) FROM t_data; hll_cardinality ------------------ 498.496062953313 (1 row)
  • hll_add_agg(hll_hashval) 描述:把哈希后的数据按照分组放到hll中。 返回值类型:hll 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 --准备数据 gaussdb=# CREATE TABLE t_id(id int); gaussdb=# INSERT INTO t_id VALUES(generate_series(1,500)); gaussdb=# CREATE TABLE t_data(a int, c text); gaussdb=# INSERT INTO t_data SELECT mod(id,2), id FROM t_id; --创建表并指定列为hll gaussdb=# CREATE TABLE t_a_c_hll(a int, c hll); --根据a列group by对数据分组,把各组数据加到hll中 gaussdb=# INSERT INTO t_a_c_hll SELECT a, hll_add_agg(hll_hash_text(c)) FROM t_data GROUP BY a; --得到每组数据中hll的Distinct值 gaussdb=# SELECT a, #c AS cardinality FROM t_a_c_hll ORDER BY a; a | cardinality ---+------------------ 0 | 247.862354346299 1 | 250.908710610377 (2 rows)
  • hll_add_agg(hll_hashval, int32 log2m) 描述:把哈希后的数据按照分组放到hll中, 并指定参数log2m,取值范围是10到16。若输入-1或者NULL,则采用内置默认值。 返回值类型:hll 示例: 1 2 3 4 5 gaussdb=# SELECT hll_cardinality(hll_add_agg(hll_hash_text(c), 12)) FROM t_data; hll_cardinality ------------------ 497.965240179228 (1 row)
  • ifnull(expr1, expr2) 描述:若expr1为NULL返回expr2的值,否则返回expr1的值。 ifnull(expr1, expr2)逻辑上等价于nvl(expr1, expr2)。 参数:任意类型。 返回值类型:与入参类型有关,输出规则见说明。 ifnull(expr1, expr2)仅在B兼容模式下支持。 当设置兼容性参数b_format_version=''和b_format_dev_version=''时,ifnull(expr1, expr2)函数输出结果类型与nvl(expr1, expr2)输出结果类型一致;当设置兼容性参数b_format_version='5.7'和b_format_dev_version='s1'后返回值类型推导遵从以下规则,规则优先级由高到低排列: 两入参类型相同时,返回值类型与入参类型相同; 其中一个入参为SET类型时,返回TEXT类型; 其中一个入参为BLOB类型时,返回BLOB类型; 其中一个入参为TEXT类型时,返回TEXT类型; 其中一个入参为STRING类型时,返回TEXT类型; 其中一个入参为时间类型时,另一个也为时间类型则返回TIMESTAMPTZ,否则返回TEXT类型; 两入参均为NUMERIC类型时,返回两个入参类型中精度较高的类型,例如入参类型分别为TINYINT和INT时,返回值类型推导为INT型; 若入参类型与返回值类型不存在隐式转换函数,则报错。 两入参同时为NULL时,返回值为NULL,否则返回第一个不为空的值。 ifnull(expr1, expr2)函数为映射函数,故pg_proc系统表中无法查到对应函数定义。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 --入参为空串,输出为空串而非NULL。 gaussdb=# SELECT ifnull('', null) is null as a; a --- f (1 row) --两个入参都为NULL,输出为NULL。 gaussdb=# SELECT ifnull(null, null) is null as a; a --- t (1 row) --输入NULL和字符串,输出结果为第一个非空的值。 gaussdb=# SELECT ifnull(null, 'A') as a; a --- A (1 row)
  • isnull(expr) 描述:判断expr是否为NULL,如果expr为NULL,返回true,否则返回false。isnull函数在全模式下兼容。 参数:支持任意类型输入。 返回类型:Boolean 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT isnull(null); isnull -------- t (1 row) gaussdb=# SELECT isnull(1); isnull -------- f (1 row)
  • lnnvl(condition) 描述:lnnvl用于某个查询语句的WHERE子句中,如果条件为true就返回false,如果条件为unknown或者false,就返回true。 condition:必须为逻辑表达式,但不能用于复合条件如AND,OR或者BETWEEN。 返回类型:Boolean 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 --新建表 gaussdb=# CREATE TABLE student_demo (name VARCHAR2(20), grade NUMBER(10,2)); CREATE TABLE --插入数据 gaussdb=# INSERT INTO student_demo VALUES ('name0',0); INSERT 0 1 gaussdb=# INSERT INTO student_demo VALUES ('name1',1); INSERT 0 1 gaussdb=# INSERT INTO student_demo VALUES ('name2',2); INSERT 0 1 --调用lnnvl gaussdb=# SELECT * FROM student_demo WHERE LNNVL(name = 'name1'); name | grade -------+------- name0 | 0.00 name2 | 2.00 (2 rows) --删除表 gaussdb=# drop table student_demo; DROP TABLE 此函数在参数a_format_version值为10c和a_format_dev_version值为s2的情况下生效。
  • nvl2( expr1 , expr2,expr3 ) 描述: 如果expr1为NULL,则返回expr3。 如果expr1非NULL,则返回expr2。 此函数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下有效。 示例: 1 2 3 4 5 gaussdb=# SELECT nvl2('hello','world','other'); case ------- world (1 row) 备注:参数expr2和expr3可以为任意类型, 当NVL2的后面两个参数不属于同类型时,看expr3参数是否可以向expr2参数进行隐式转换,如果不能隐式转换,会返回错误。如果第一个参数是数值类型,函数在将本参数和其他参数都转换为numeric类型,然后进行比较,对于不能转换的,提示出错信息;第一个参数是其他类型的,函数将其他参数都转换为第一个参数的类型进行比较,对于不能转换的,提示出错信息。
  • greatest(expr1 [, ...]) 描述:获取并返回参数列表中值最大的表达式的值。 返回值类型: 示例: 1 2 3 4 5 gaussdb=# SELECT greatest(1*2,2-3,4-1); greatest ---------- 3 (1 row) 1 2 3 4 5 gaussdb=# SELECT greatest('HARRY', 'HARRIOT', 'HAROLD'); greatest ---------- HARRY (1 row) 备注: 不支持对xml数据类型的操作。 此函数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下: 如果参数中有任意一个参数的值为NULL,函数返回NULL。 如果第一个参数是数值类型,函数将第一个参数和其他参数都转换为numeric类型,然后进行比较,对于不能转换的,提示出错信息;第一个参数是其他类型的,函数将其他参数都转换为第一个参数的类型进行比较,对于不能转换的,提示出错信息。
  • EMPTY_CLOB() 描述:使用EMPTY_CLOB在INSERT或UPDATE语句中初始化一个CLOB变量,取值为空。 此函数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下有效。 返回值类型:CLOB 示例: 1 2 3 4 5 6 --新建表 gaussdb=# CREATE TABLE clob_tb(c clob,id int); --插入数据 gaussdb=# INSERT INTO clob_tb VALUES (empty_clob(),1); --删除表 gaussdb=# DROP TABLE clob_tb; 备注:使用DBE_LOB.GET_LENGTH求得的长度为0。
  • least(expr1 [, ...]) 描述:获取并返回参数列表中值最小的表达式的值。 示例: 1 2 3 4 5 gaussdb=# SELECT least(1*2,2-3,4-1); least ------- -1 (1 row) 1 2 3 4 5 gaussdb=# SELECT least('HARRY','HARRIOT','HAROLD'); least -------- HAROLD (1 row) 备注: 不支持对xml数据类型的操作。 此函数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下: 如果参数中有任意一个参数的值为NULL,函数返回NULL。 如果第一个参数是数值类型,函数将第一个参数和其他参数都转换为numeric类型,然后进行比较,对于不能转换的,提示出错信息;第一个参数是其他类型的,函数将其他参数都转换为第一个参数的类型进行比较,对于不能转换的,提示出错信息。
  • EMPTY_BLOB() 描述:使用EMPTY_BLOB在INSERT或UPDATE语句中初始化一个BLOB变量,取值为NULL。 返回值类型:BLOB 示例: 1 2 3 4 5 6 --新建表 gaussdb=# CREATE TABLE blob_tb(b blob,id int); --插入数据 gaussdb=# INSERT INTO blob_tb VALUES (empty_blob(),1); --删除表 gaussdb=# DROP TABLE blob_tb; 备注:使用DBE_LOB.GET_LENGTH求得的长度为0。
  • decode(base_expr, compare1, value1, Compare2,value2, … default) 描述:把base_expr与后面的每个compare(n) 进行比较,如果匹配返回相应的value(n)。如果没有发生匹配,则返回default。 示例: 1 2 3 4 5 gaussdb=# SELECT decode('A','A',1,'B',2,0); case ------ 1 (1 row) 备注: 不支持对xml数据类型的操作。
  • nvl( expr1 , expr2 ) 描述: 如果expr1为NULL,则返回expr2。 如果expr1非NULL,则返回expr1。 示例: 1 2 3 4 5 gaussdb=# SELECT nvl('hello','world'); nvl ------- hello (1 row) 备注:参数expr1和expr2可以为任意类型,当NVL的两个参数不属于同类型时,看第二个参数是否可以向第一个参数进行隐式转换。如果可以则返回第一个参数类型,否则返回错误。
  • nullif(expr1, expr2) 描述:当且仅当expr1和expr2相等时,NULLIF才返回NULL,否则它返回expr1。 nullif(expr1, expr2) 逻辑上等价于CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END。 nullif(expr1, expr2)函数为映射函数,故pg_proc系统表中无法查到对应函数定义。 示例: 1 2 3 4 5 gaussdb=# SELECT nullif('hello','world'); nullif -------- hello (1 row) 备注: 不支持对xml数据类型的操作。 如果两个参数的数据类型不同,则: 若两种数据类型之间存在隐式转换,则以其中优先级较高的数据类型为基准将另一个参数隐式转换成该类型,转换成功则进行计算,转换失败则返回错误。如: 1 2 3 4 5 gaussdb=# SELECT nullif('1234'::VARCHAR,123::INT4); nullif -------- 1234 (1 row) 1 2 gaussdb=# SELECT nullif('1234'::VARCHAR,'2012-12-24'::DATE); ERROR: invalid input syntax for type timestamp: "1234" 若两种数据类型之间不存在隐式转换,则返回错误。如: 1 2 3 4 5 6 gaussdb=# SELECT nullif(1::bit, '1'::MONEY); ERROR: operator does not exist: bit = money LINE 1: SELECT nullif(1::bit, '1'::MONEY); ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. CONTEXT: referenced column: nullif
  • coalesce(expr1, expr2, ..., exprn) 描述: 返回参数列表中第一个非NULL的参数值。 COALESCE(expr1, expr2) 等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。 示例: 1 2 3 4 5 gaussdb=# SELECT coalesce(NULL,'hello'); coalesce ---------- hello (1 row) 备注: 如果表达式列表中的所有表达式都等于NULL,则本函数返回NULL。 它常用于在显示数据时用缺省值替换NULL。 和CASE表达式一样,COALESCE不会计算不需要用来判断结果的参数;即在第一个非空参数右边的参数不会被计算。
  • || 描述:位串之间进行连接。 示例: 1 2 3 4 5 gaussdb=# SELECT B'10001' || B'011' AS RESULT; result ---------- 10001011 (1 row) 单字段内部连续连接操作不建议超过180次。如果超过180次,需拆分为多个连续连接的字符串,在它们之间再执行连接操作。 例如:str1||str2||str3||str4 拆分为 (str1||str2)||(str3||str4)。 A兼容模式下位串中包含了空字符串,会忽略空字符串连接其他字符串,其他兼容模式下则会返回空串。 例如:str1||NULL||str2,A兼容模式下返回str1str2,其他兼容模式下返回NULL。
  • pg_delete_audit(starttime, endtime) 描述:删除指定时间段的审计日志。多租场景下,non-PDB调用该函数时可以删除全局指定时间段的审计日志,PDB调用该函数时仅允许删除该PDB相关指定时间段的审计日志。 参数:timestamptz starttime,timestamptz endtime 返回值类型:void 示例: gaussdb=# SELECT * FROM pg_delete_audit('2025-01-14 00:00:00','2025-01-14 00:01:00'); pg_delete_audit ----------------- (1 row)
  • gs_delete_audit(starttime, endtime) 描述:删除指定时间段的审计日志。多租场景下,non-PDB调用该函数时可以删除全局指定时间段的审计日志,PDB调用该函数时仅允许删除该PDB相关指定时间段的审计日志。 参数:timestamptz starttime,timestamptz endtime 返回值类型:void 示例: gaussdb=# SELECT * FROM gs_delete_audit('2025-01-14 00:00:00','2025-01-14 00:01:00'); gs_delete_audit ----------------- (1 row)
  • pg_query_audit(starttime, endtime, audit_log) 描述:查看数据库主节点审计日志。多租场景下,non-PDB调用该函数时返回全部审计日志,PDB调用该函数时仅返回该PDB相关审计日志。 参数:timestamptz starttime,timestamptz endtime[,audit_log] 返回值类型:record 函数返回字段如下: 名称 类型 描述 time timestamp with time zone 操作时间 type text 操作类型 result text 操作结果 userid oid 用户id username text 执行操作的用户名 database text 数据库名称 client_conninfo text 客户端连接信息 object_name text 操作对象名称 detail_info text 执行操作详细信息 node_name text 节点名称 thread_id text 线程id local_port text 本地端口 remote_port text 远端端口 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT * FROM pg_query_audit('2025-01-14 00:00:00','2025-01-14 00:01:00'); time | type | result | userid | username | database | client_conninfo | object_name | detail_info | node_name | thread_i d | local_port | remote_port ------------------------+----------------+--------+--------+-----------+-----------+---------------------+-------------+-----------------------------------------------------------------+-----------+-------------------- -------------+------------+------------- 2025-01-14 00:00:00+08 | internal_event | ok | 0 | [unknown] | [unknown] | [unknown]@[unknown] | file | create a new audit file | datanode | 139815485437696@790099200629980 | 45002 | (null) 2025-01-14 00:00:59+08 | login_success | ok | 10 | omm | postgres | SPM Polling@[local] | postgres | login db(postgres) success,the current user is:omm, SSL=off | datanode | 139814503380736@790099259651348 | 45002 | null 2025-01-14 00:00:59+08 | user_logout | ok | 10 | omm | postgres | SPM Polling@[local] | postgres | logout db(postgres) success | datanode | 139814503380736@790099259659065 | 45002 | null 2025-01-14 00:00:59+08 | login_success | ok | 10 | omm | postgres | SPM Polling@[local] | postgres | login db(postgres) success,the current user is:omm, SSL=off | datanode | 139814385874688@790099259667405 | 45002 | null 2025-01-14 00:00:59+08 | user_logout | ok | 10 | omm | postgres | SPM Polling@[local] | postgres | logout db(postgres) success | datanode | 139814385874688@790099259669311 | 45002 | null (5 rows)
  • gs_decrypt_bytea(decryptstr, keystr, decrypttype) 描述:根据decrypttype,以keystr为解密口令对decrypt字符串进行解密,返回解密后的字符串。解密使用的decrypttype 及keystr必须保证与加密时使用的encrypttype及keystr一致才能正常解密。keystr不得为空。 此函数需要结合gs_encrypt_bytea加密函数共同使用。 返回值类型:text 参数 类型 描述 取值范围 decryptstr bytea 需要解密的数据 - keystr text 解密口令 8~16字节,至少包含3种字符(大写字母、小写字母、数字、特殊字符) decrypttype text 加解密类型(不区分大小写) aes128_cbc_sha256、 aes256_cbc_sha256、aes128_gcm_sha256,、aes256_gcm_sha256、sm4_ctr_sm3 示例: gaussdb=# SELECT gs_decrypt_bytea('\x90e286971c2c70410def0a2814af4ac44c737926458b66271d9d1547bc937395ca018d7755672fa9dc3cdc6ec4a76001dc0e137f3bc5c8a5c51143561f1d09a848bfdebfec5e', 'Asdf1234', 'sm4_ctr_sm3'); gs_decrypt_bytea ------------------ MPPDB (1 row) 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史;即无法在gsql里通过上下翻页功能找到该函数的执行历史。
  • gs_digest(input_string, hash_algorithm) 描述:使用指定的哈希算法,对输入的字符串计算哈希,并且以十六进制数作为返回值。 参数解释: input_string: 需要被计算哈希的字符串,不能为NULL。 hash_algorithm: 指定的哈希计算算法,当前支持SHA256,SHA384,SHA512和SM3,支持大写和小写。使用不支持的哈希算法则会报错。 返回值类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT pg_catalog.gs_digest('gaussdb', 'sha256'); gs_digest ------------------------------------------------------------------ 4dc50d746f4e04f9b446986b34a0050e358fbfb8bc1fba314c54b52a417b0b8e (1 row)
  • gs_query_audit(starttime, endtime, audit_log) 描述:查看数据库主节点审计日志。多租场景下,non-PDB调用该函数时返回全部审计日志,PDB调用该函数时仅返回该PDB相关审计日志。 参数:timestamptz starttime,timestamptz endtime[,audit_log] 返回值类型:record 函数返回字段如下: 名称 类型 描述 time timestamp with time zone 操作时间 type text 操作类型 result text 操作结果 userid oid 用户id username text 执行操作的用户名 database text 数据库名称 client_conninfo text 客户端连接信息 object_name text 操作对象名称 detail_info text 执行操作详细信息 node_name text 节点名称 thread_id text 线程id local_port text 本地端口 remote_port text 远端端口 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT * FROM gs_query_audit('2025-01-14 00:00:00','2025-01-14 00:01:00'); time | type | result | userid | username | database | client_conninfo | object_name | detail_info | node_name | thread_i d | local_port | remote_port ------------------------+----------------+--------+--------+-----------+-----------+---------------------+-------------+-----------------------------------------------------------------+-----------+-------------------- -------------+------------+------------- 2025-01-14 00:00:00+08 | internal_event | ok | 0 | [unknown] | [unknown] | [unknown]@[unknown] | file | create a new audit file | datanode | 139815485437696@790099200629980 | 45002 | (null) 2025-01-14 00:00:59+08 | login_success | ok | 10 | omm | postgres | SPM Polling@[local] | postgres | login db(postgres) success,the current user is:omm, SSL=off | datanode | 139814503380736@790099259651348 | 45002 | null 2025-01-14 00:00:59+08 | user_logout | ok | 10 | omm | postgres | SPM Polling@[local] | postgres | logout db(postgres) success | datanode | 139814503380736@790099259659065 | 45002 | null 2025-01-14 00:00:59+08 | login_success | ok | 10 | omm | postgres | SPM Polling@[local] | postgres | login db(postgres) success,the current user is:omm, SSL=off | datanode | 139814385874688@790099259667405 | 45002 | null 2025-01-14 00:00:59+08 | user_logout | ok | 10 | omm | postgres | SPM Polling@[local] | postgres | logout db(postgres) success | datanode | 139814385874688@790099259669311 | 45002 | null (5 rows)
  • aes_decrypt(pass_str, key_str, init_vector) 描述:基于AES算法,使用解密口令key_str和初始化向量init_vector对字符串str进行解密。 参数解释: pass_str: 需要被解密的字符串。若pass_str为NULL,函数返回NULL。 key_str: 解密口令。若key_str为NULL,函数返回NULL。为了安全,对于128bit/192bit/256bit的密钥长度(由块加密模式block_encryption_mode确定),建议用户使用128bit/192bit/256bit的安全随机数作为密钥字符串。 init_vector: 为需要它的块解密模式提供初始化变量,长度大于等于16字节(大于16字节的部分会被自动忽略)。pass_str和key_str均不为NULL时,该参数不可为NULL,否则报错。为了安全,建议用户在OFB模式下,保证每次加密IV值的唯一性;在CBC模式和CFB模式下,保证每次加密的IV值不可被预测。 返回值类型:text 示例: gaussdb=# SELECT aes_decrypt(aes_encrypt('huwei123','123456vfhex4dyu,vdaladhjsadad','1234567890123456'),'123456vfhex4dyu,vdaladhjsadad','1234567890123456'); aes_decrypt ------------- huwei123 (1 row) 该函数仅在 GaussDB 兼容MY类型时(即sql_compatibility = 'B')有效,其他类型不支持该函数。 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史;即无法在gsql里通过上下翻页功能找到该函数的执行历史。 在存储过程的相关操作中需尽量避免调用该函数,避免敏感参数信息在日志中泄露的风险。同时建议用户在使用包含该函数的存储过程相关操作时,将该函数的参数信息过滤后再提供给外部维护人员定位,日志使用完后请及时删除。 在打开debug_print_plan开关的情况下需尽量避免调用该函数,避免敏感参数信息在日志中泄露的风险。同时建议用户在打开debug_print_plan开关生成的日志中对该函数的参数信息进行过滤后再提供给外部维护人员定位,日志使用完后请及时删除。 若想成功解密,需要保证block_encryption_mode,key_str,iv值与加密时一致。 由于编码差异,不支持从gsql客户端直接复制加密后的数据进行解密,此场景解密出的结果不一定是加密前的字符串。 由于SQL_ASCII设置与其他设置表现存在差异。如果服务器字符集是SQL_ASCII,服务器把字节值0~127根据 ASCII标准解释,而字节值128~255则当作无法解析的字符。如果设置为SQL_ASCII,就不会有编码转换。该函数调用openssl三方库返回的数据的编码为非ASCII数据,因此当数据库服务端字符集设置为SQL_ASCII时,客户端编码也需设置为SQL_ASCII ,否则会报错。因为数据库不会帮助转换或者校验非ASCII字符。
  • inet_server_addr 描述:显示服务器IP信息。 返回值类型:inet 示例: 1 2 3 4 5 gaussdb=# SELECT inet_server_addr(); inet_server_addr ------------------ 10.10.0.13 (1 row) 上面是以客户端在10.10.0.50上,服务器端在10.10.0.13上为例。 如果是通过本地连接,使用此接口显示为空。
  • aes_encrypt(str, key_str, init_vector) 描述:基于AES算法,使用加密口令key_str和初始化向量init_vector对字符串str进行加密。 参数解释: str: 需要被加密的字符串。若str为NULL,函数返回NULL。 key_str: 加密口令。若key_str为NULL,函数返回NULL。为了安全,对于128bit/192bit/256bit的密钥长度(由块加密模式block_encryption_mode确定,建议用户使用128bit/192bit/256bit的安全随机数作为密钥字符串。 init_vector: 为需要它的块加密模式提供初始化变量,长度大于等于16字节(大于16字节的部分会被自动忽略)。str和key_str均不为NULL时,该参数不可为NULL,否则报错。为了安全,建议用户在OFB模式下,保证每次加密IV值的唯一性;在CBC模式和CFB模式下,保证每次加密的IV值不可被预测。 返回值类型:text 示例: gaussdb=# SELECT aes_encrypt('huwei123','123456vfhex4dyu,vdaladhjsadad','1234567890123456'); aes_encrypt ------------- u*8\x05c?0 (1 row) 该函数仅在GaussDB兼容MY类型时(即sql_compatibility = 'B')有效,其他类型不支持该函数。 由于该函数的执行过程需要传入加密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史;即无法在gsql里通过上下翻页功能找到该函数的执行历史。 在存储过程的相关操作中需尽量避免调用该函数,避免敏感参数信息在日志中泄露的风险。同时建议用户在使用包含该函数的存储过程相关操作时,将该函数的参数信息过滤后再提供给外部维护人员定位,日志使用完后请及时删除。 在打开debug_print_plan开关的情况下需尽量避免调用该函数,避免敏感参数信息在日志中泄露的风险。同时建议用户在打开debug_print_plan开关生成的日志中对该函数的参数信息进行过滤后再提供给外部维护人员定位,日志使用完后请及时删除。 由于SQL_ASCII设置与其他设置表现存在差异。如果服务器字符集是SQL_ASCII,服务器把字节值0~127根据 ASCII标准解释,而字节值128~255则当作无法解析的字符。如果设置为SQL_ASCII,就不会有编码转换。该函数调用openssl三方库返回的数据的编码为非ASCII数据,因此当数据库服务端字符集设置为SQL_ASCII时,客户端编码也需设置为SQL_ASCII ,否则会报错。因为数据库不会帮助转换或者校验非ASCII字符。
  • inet_client_addr 描述:显示客户端IP信息。 返回值类型:inet 示例: 1 2 3 4 5 gaussdb=# SELECT inet_client_addr(); inet_client_addr ------------------ 10.10.0.50 (1 row) 上面是以客户端在10.10.0.50上,服务器端在10.10.0.13上为例。 如果是通过本地连接,使用此接口显示为空。
  • gs_decrypt_aes128(decryptstr,keystr) 描述:以keystr为解密口令对decrypt字符串进行解密,返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正常解密。keystr不得为空。 此参数需要结合gs_encrypt_aes128加密函数共同使用。 返回值类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT gs_decrypt_aes128('kbJdlK5LSlAzqNjVvuHUPCphlkuSeD5n2Hel0HiGaSbDQdCmsz1Ky5ZneOurUr56/jtE/U+BmCw9BgTR2wjQD9440m8=','Asdf1234'); gs_decrypt_aes128 ------------------- MPPDB (1 row) 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史;即无法在gsql里通过上下翻页功能找到该函数的执行历史。
  • gs_decrypt(decryptstr, keystr, decrypttype) 描述:根据decrypttype,以keystr为解密口令对decrypt字符串进行解密,返回解密后的字符串。解密使用的decrypttype及keystr必须保证与加密时使用的encrypttype 及keystr一致才能正常解密。keystr不得为空。 此函数需要结合gs_encrypt加密函数共同使用。 返回值类型:text 参数 类型 描述 取值范围 decryptstr text 需要解密的数据 - keystr text 解密口令 8~16字节,至少包含3种字符(大写字母、小写字母、数字、特殊字符) decrypttype text 加解密类型(不区分大小写) aes128、sm4、aes128_cbc_sha256、 aes256_cbc_sha256、aes128_gcm_sha256,、aes256_gcm_sha256、sm4_ctr_sm3 示例: gaussdb=# SELECT gs_decrypt('ZBzOmaGA4Bb+coyucJ0B8AkIShqc', 'Asdf1234', 'sm4'); gs_decrypt ------------ MPPDB (1 row) 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史;即无法在gsql里通过上下翻页功能找到该函数的执行历史。 aes128、sm4为兼容旧版本参数。aes128加解密使用AES128 CBC模式,使用SHA1进行完整性校验。sm4加解密算法使用SM4 CTR模式,不进行完整性校验。
  • gs_encrypt_aes128(encryptstr,keystr) 描述:以keystr为加密口令对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为8~16字节,至少包含3种字符(大写字母、小写字母、数字、特殊字符)。 返回值类型:text 返回值长度:至少为92字节,不超过4*[(Len+68)/3]字节,其中Len为加密前数据长度(单位为字节)。 示例: 1 2 3 4 5 6 gaussdb=# SELECT gs_encrypt_aes128('MPPDB','Asdf1234'); gs_encrypt_aes128 ------------------------------------------------------------------------------------- kbJdlK5LSlAzqNjVvuHUPCphlkuSeD5n2Hel0HiGaSbDQdCmsz1Ky5ZneOurUr56/jtE/U+BmCw9BgTR2wjQD9440m8= (1 row) 由于该函数的执行过程需要传入加密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。
  • gs_encrypt(encryptstr,keystr, encrypttype) 描述:根据encrypttype,以keystr为加密口令对encryptstr字符串进行加密,返回加密后的字符串。 返回值类型:text 参数 类型 描述 取值范围 encryptstr text 需要加密的数据 - keystr text 加密口令 8~16字节,至少包含3种字符(大写字母、小写字母、数字、特殊字符) encrypttype text 加解密类型(不区分大小写) aes128、sm4、aes128_cbc_sha256、 aes256_cbc_sha256、aes128_gcm_sha256,、aes256_gcm_sha256、sm4_ctr_sm3 示例: gaussdb=# SELECT gs_encrypt('MPPDB', 'Asdf1234', 'sm4'); gs_encrypt ------------------------------ ZBzOmaGA4Bb+coyucJ0B8AkIShqc (1 row) 由于该函数的执行过程需要传入加密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。 aes128、sm4为兼容旧版本参数。aes128加解密使用AES128 CBC模式,使用SHA1进行完整性校验。sm4加解密算法使用SM4 CTR模式,不进行完整性校验。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全