diff --git "a/content/zh/docs/AboutopenGauss/\351\200\273\350\276\221\345\244\215\345\210\266.md" "b/content/zh/docs/AboutopenGauss/\351\200\273\350\276\221\345\244\215\345\210\266.md" index 0f433d65c00a21ae14eae020f4e1966bc3842f4c..f18ca1d8b5903895c4c5e4661327d402b9560016 100644 --- "a/content/zh/docs/AboutopenGauss/\351\200\273\350\276\221\345\244\215\345\210\266.md" +++ "b/content/zh/docs/AboutopenGauss/\351\200\273\350\276\221\345\244\215\345\210\266.md" @@ -21,9 +21,19 @@ DN通过物理日志反解析为逻辑日志,DRS等逻辑复制工具从DN抽 - openGauss 1.0.0逻辑解码新增全量+增量抽取日志的方案。 - openGauss 1.1.0逻辑解码新增备机支持逻辑解码。 - openGauss 6.0.0-RC1逻辑复制支持如下DDL操作: - - CREATE/DROP TABLE|TABLE PARTITION - - CREATE/DROP INDEX - + - CREATE/DROP/ALTER/TRUNCATE/RENAME TABLE | TABLE PARTITION | TABLE SUBPARTITION + - CREATE/ALTER/DROP INDEX + - CREATE/ALTER/DROP VIEW + - CREATE/ALTER/DROP/REFRESH [INCREMENTAL] MATERIALIZED VIEW + - CREATE/ALTER/DROP TYPE + - CREATE/ALTER/DROP FUNCTION + - CREATE/ALTER/DROP PROCEDURE + - CREATE/ALTER/DROP TRIGGER + - CREATE/DROP PACKAGE + - CREATE/DROP SCHEMA + - CREATE/DROP SEQUENCE + - COMMENT/GRANT/REVOKE + ## 特性约束 不支持列存复制。 diff --git "a/content/zh/docs/DatabaseOMGuide/\351\200\273\350\276\221\345\244\215\345\210\266\346\224\257\346\214\201DDL\346\223\215\344\275\234.md" "b/content/zh/docs/DatabaseOMGuide/\351\200\273\350\276\221\345\244\215\345\210\266\346\224\257\346\214\201DDL\346\223\215\344\275\234.md" index 7d2081b7447c00481a2f0e2de3548d8151b08b5f..70b75ee9d1de0add725524b251124463f6288e20 100644 --- "a/content/zh/docs/DatabaseOMGuide/\351\200\273\350\276\221\345\244\215\345\210\266\346\224\257\346\214\201DDL\346\223\215\344\275\234.md" +++ "b/content/zh/docs/DatabaseOMGuide/\351\200\273\350\276\221\345\244\215\345\210\266\346\224\257\346\214\201DDL\346\223\215\344\275\234.md" @@ -4,19 +4,33 @@ openGauss在逻辑复制过程中支持如下DDL操作: -- CREATE/DROP TABLE|TABLE PARTITION -- CREATE/DROP INDEX +- CREATE/DROP/ALTER/TRUNCATE/RENAME TABLE | TABLE PARTITION | TABLE SUBPARTITION +- CREATE/ALTER/DROP INDEX +- CREATE/ALTER/DROP VIEW +- CREATE/ALTER/DROP/REFRESH [INCREMENTAL] MATERIALIZED VIEW +- CREATE/ALTER/DROP TYPE +- CREATE/ALTER/DROP FUNCTION +- CREATE/ALTER/DROP PROCEDURE +- CREATE/ALTER/DROP TRIGGER +- CREATE/DROP PACKAGE +- CREATE/DROP SCHEMA +- CREATE/DROP SEQUENCE +- COMMENT/GRANT/REVOKE ## 注意事项 - 只支持行存表的DDL操作。 +- TYPE仅支持复合类型和枚举类型。 - 不支持列存,ustore存储引擎。 - 在订阅端手动删除表会导致DDL同步失败,发布订阅阻塞。 - 不支持在对表进行相关的表结构操作中调用VOLATILE函数。 >在为表增加一个字段并指定默认值中执行了VOLATILE函数,而这个函数中进行了创建表的DDL操作,这样在新增字段并为其计算默认值的过程中会因为调用VOLATILE函数写入其他DDL日志,导致后续在解码时读取到这个DDL日志时进行了重复的操作。 - +- 在逻辑复制中使用ALTER TABLE时会有如下限制: + - 当ALTER TABLE修改表字段类型,使用USING子句设置字段值时,要求表上必须有replication identity字段,并且USING子句修改的表字段不为该标识符字段。 + - 当ALTER TABLE修改或新增表字段为AUTO_INCREMENT自增列时,要求表上必须有replication identity字段,并且USING子句修改的表字段不为该标识符字段。 + - 当ALTER TABLE新增表字段,并且表字段类型不为内置类型,即需要每个元组都重新计算其默认值,要求表上必须设置replication identity。 ## 语法格式 diff --git "a/content/zh/docs/SQLReference/\344\275\277\347\224\250\346\270\270\346\240\207\345\210\233\345\273\272type.md" "b/content/zh/docs/SQLReference/\344\275\277\347\224\250\346\270\270\346\240\207\345\210\233\345\273\272type.md" new file mode 100644 index 0000000000000000000000000000000000000000..de511dca156486c69249a72641d16d875d0f3fe3 --- /dev/null +++ "b/content/zh/docs/SQLReference/\344\275\277\347\224\250\346\270\270\346\240\207\345\210\233\345\273\272type.md" @@ -0,0 +1,108 @@ +# 使用游标创建type + +## 功能描述 + +该功能用于在包package或者匿名块、存储过程、函数中使用record类型创建一个游标的type类型。 + +## 注意事项 + +- 创建的type为弱游标类型。 +- 该type类型如果作为out参数返回是游标类型。 + + +## 语法格式 + +```sql +TYPE type_name IS REF CURSOR RETURN record_name ; +``` + +## 参数说明 + +- **type_name** + + 定义的类型的名称。 +- **record_name** + + 使用数据类型说明符 RECORD 定义的用户定义类型的名称。 + + + +## 兼容性 + +暂不支持如下语法: + +```sql +TYPE type_name IS REF CURSOR + [ RETURN + { {db_table_or_view | cursor | cursor_variable}%ROWTYPE + | record%TYPE + | ref_cursor_type + } + ] ; +``` + +## 示例 + +**示例1:** 使用record类型创建一个游标的type类型。 + +1、创建测试表t。 + +```sql +create table t(id int, name varchar2(30)); +``` + +2、声明游标类型。 + +```sql +declare +type RECORD_ACCOUNT_LIST is record(id int,name varchar2(30)); +type CUR_ACCOUNT_LIST is ref cursor return RECORD_ACCOUNT_LIST; +cur_accountlist CUR_ACCOUNT_LIST; +begin +open cur_accountlist for select * from t; +end; +/ +``` + +返回结果如下,则表示创建成功: + +```sql +ANONYMOUS BLOCK EXECUTE +``` + + + +**示例2:** 弱游标类型。 + +1、创建测试表t1并插入数据。 + +```sql +create table t1(id int, name varchar2(30)); +insert into t1 values(1,'a1'); +``` + +2、定义一个弱类型游标。 + +```sql +declare +type RECORD_ACCOUNT_LIST1 IS RECORD (id int, name1 varchar2(30)); +type CUR_ACCOUNT_LIST1 is ref cursor return RECORD_ACCOUNT_LIST1; +cur_accountlist1 CUR_ACCOUNT_LIST1; +rc_list RECORD_ACCOUNT_LIST1; +begin +open cur_accountlist1 for select * from t1; +loop +fetch cur_accountlist1 into rc_list; +exit when cur_accountlist1%notfound; +dbms_output.put_line(rc_list.id||' '||rc_list.name1); +end loop; +end; +/ +``` + +返回结果如下,则表示创建成功: + +```sql +ANONYMOUS BLOCK EXECUTE +``` + diff --git "a/content/zh/docs/SQLReference/\346\270\270\346\240\207.md" "b/content/zh/docs/SQLReference/\346\270\270\346\240\207.md" index 88af172cb66d66cee197de60e0e5eb783f5b3349..b6c20cf15cfaf62eb96cf241211c01a963f21fe3 100644 --- "a/content/zh/docs/SQLReference/\346\270\270\346\240\207.md" +++ "b/content/zh/docs/SQLReference/\346\270\270\346\240\207.md" @@ -1,6 +1,7 @@ # 游标 为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 +支持使用游标作为插入值。 ## 语法格式 diff --git a/content/zh/docs/ToolandCommandReference/gs_dump.md b/content/zh/docs/ToolandCommandReference/gs_dump.md index d8e9fe5b72dd875c6be3d57dcf46fd458900f42b..f80affc62cf984df531b8207bbcbadb426988f91 100644 --- a/content/zh/docs/ToolandCommandReference/gs_dump.md +++ b/content/zh/docs/ToolandCommandReference/gs_dump.md @@ -426,10 +426,6 @@ export PGDATABASE=postgres 输出符合SQL标准的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用SET SESSION AUTHORIZATION的转储需要数据库系统管理员的权限才能转储成功,而ALTER OWNER需要的权限则低得多。 -- --with-encryption=AES128 - - 指定转储数据需用AES128进行加密。 - - --with-key=KEY AES128密钥长度规则如下: @@ -437,11 +433,9 @@ export PGDATABASE=postgres - 密钥长度为8~16字符。 - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为~!@#$%^&*()-_=+\|[]{};:,<.>/?)四类字符中的三类字符。 - ![](public_sys-resources/icon-note.png) **说明:** - - - 使用gs_dump工具进行加密导出时,仅支持plain格式导出。通过-F plain导出的数据,需要通过gsql工具进行导入,且如果以加密方式导入,在通过gsql导入时,需要指定--with-key参数。 - - - 不支持加密导出存储过程和函数。 + >![](public_sys-resources/icon-note.png) **说明:** + >- 使用gs_dump工具进行加密导出时,仅支持plain格式导出。通过-F plain导出的数据,需要通过gsql工具进行导入,且如果以加密方式导入,在通过gsql导入时,需要指定--with-key参数。 + >- 不支持加密导出存储过程和函数。 - --with-salt=RANDVALUES diff --git a/content/zh/docs/ToolandCommandReference/gs_dumpall.md b/content/zh/docs/ToolandCommandReference/gs_dumpall.md index f27086205ab2df2b6b8e3ab6871876a35b64aa69..a179be49fd227dad7a219c6313823e7761365fe2 100644 --- a/content/zh/docs/ToolandCommandReference/gs_dumpall.md +++ b/content/zh/docs/ToolandCommandReference/gs_dumpall.md @@ -165,16 +165,25 @@ gs_dumpall [OPTION]... 输出符合SQL标准的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用SET SESSION AUTHORIZATION的转储需要数据库系统管理员的权限才能转储成功,而ALTER OWNER需要的权限则低得多。 -- --with-encryption=AES128 +- --with-encryption=AES128/SWS-KMS-SM4/TAS-KMS-SM4 - 指定转储数据需用AES128进行加密。 + 指定转储数据使用的加密方式(算法)。支持AES128/SWS-KMS-SM4/TAS-KMS-SM4。 + + >![](public_sys-resources/icon-note.png) **说明:** + > + >- 该选项必须与--with-key同时使用。 + >- 当加密方式为SWS-KMS-SM4时,必须与--with-userpin同时使用。 - --with-key=KEY - AES128密钥长度规则如下: + - AES128密钥长度规则如下: + + - 密钥长度为8~16字符。 + - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为~!@#$%^&*()-_=+\|[]{};:,<.>/?)四类字符中的三类字符。 + + - 加密算法为TAS-KMS-SM4时,--with-key指定的是江南天安KMS上创建的密钥索引,openGauss限制其索引范围必须是1 ~ 2048。 + - 加密算法为SWS-KMS-SM4时,--with-key指定的是三未信安KMS上创建的密钥名称。 - - 密钥长度为8~16字符。 - - 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为~!@#$%^&*()-_=+\|[]{};:,<.>/?)四类字符中的三类字符。 - --include-Extension diff --git a/content/zh/docs/ToolandCommandReference/gs_restore.md b/content/zh/docs/ToolandCommandReference/gs_restore.md index ee46f5c12995eee6c7666fc8c4b3a6ae37feca4a..dfcc4ae163700a56a6a0f83c4d829a0bb57abf28 100644 --- a/content/zh/docs/ToolandCommandReference/gs_restore.md +++ b/content/zh/docs/ToolandCommandReference/gs_restore.md @@ -257,6 +257,26 @@ gs_restore [OPTION]... FILE 使用管道传输密码,禁止在终端使用。 +- --with-decryption=AES128/SM4 + + 还原数据时采用AES128或SM4硬件加密方式解密。 + 若导出时使用--with-encryption指定了加密方式,则恢复时需要指定此参数并采用同样的方式进行解密。 + + >![](public_sys-resources/icon-note.png) **说明:** + > + >该选项必须与--with-key和--with-salt同时使用。 + +- --with-key=KEY + + 硬件加密设备内部的密钥索引。 + +- --with-salt=RANDVALUES + + 用于解密的随机盐值。 + + - 必须为16个字符的字符串。 + - 恢复时指定的盐值必须与加密导出时指定的盐值相同。 + > ![](public_sys-resources/icon-notice.png) **须知:** >- 如果安装过程中有任何本地数据要添加到template1数据库,请谨慎将gs\_restore的输出载入到一个真正的空数据库中;否则可能会因为被添加对象的定义被复制,而出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如: ``` diff --git a/content/zh/menu/index.md b/content/zh/menu/index.md index 775c1ca93671bc41b4abcc639369738d26d535a0..30fbfc2a724400969a34835f8bf34de6cafb3a30 100644 --- a/content/zh/menu/index.md +++ b/content/zh/menu/index.md @@ -1432,6 +1432,7 @@ headless: true - [使用]({{< relref "./docs/SQLReference/使用_增量物化视图.md" >}}) - [支持和约束]({{< relref "./docs/SQLReference/支持和约束-1.md" >}}) - [游标]({{< relref "./docs/SQLReference/游标.md" >}}) + - [使用游标创建type]({{< relref "./docs/SQLReference/使用游标创建type.md" >}}) - [匿名块]({{< relref "./docs/SQLReference/匿名块.md" >}}) - [存储过程]({{< relref "./docs/SQLReference/存储过程.md" >}}) - [存储过程]({{< relref "./docs/SQLReference/存储过程_SQLReference.md" >}})